1995년 큰 꿈을 갖고 모인 소수의 프로그래머들이 자바스크립트를 출범했다. 원래 이들이 생각했던 이름은 모카(Mocha)나 라이브스크립트(LiveScript)였지만 유행에 밝았던 몇 사람이 이미 상당한 인기를 끌고 있던 자바 언어의 시류에 올라타기로 했다.
새로운 스크립팅 언어의 처음 목표는 단순해서, 정적 웹 페이지에 생명력을 좀 불어넣자는 것이었다. (당시 웹 페이지에서 움직이는 부분은 <blink> 태그밖에 없었다. 이 태그는 오래전에 사라졌지만 아직 기억하는 사람이 있을 것이다.) 그때 자바스크립트 개발자는 양식 요소를 이중으로 확인하기 위해 만들어진 아주 작은 레이어 하나가 이후 소프트웨어 배포의 주된 방식이 될 것이라고는 꿈에도 생각하지 못했을 것이다.
현재의 자바스크립트 버전에서는 이 1세대 스크립팅 언어의 흔적을 거의 찾아볼 수 없다. 오래된 코드도 대부분 웹사이트에서 여전히 실행되지만 초창기부터 지금까지 수많은 기능과 레이어가 추가됐다. 자바스크립트의 역할과 책임의 범위도 훨씬 더 커졌다. Node.js 덕분에 자바스크립트는 웹 페이지 전용을 넘어 서버측 스택의 큰 부분을 차지하면서 이제 <blink> 태그 또는 고양이 밈과는 아무런 관계도 없는 코드를 실행하고 있다. 암호화폐 애플리케이션, 의료, 주식거래 봇을 비롯한 수많은 작업이 자바스크립트에 의존한다.
30주년을 눈앞에 둔 자바스크립트 언어가 그 사이 얼마나 변했는지 돌아보자. 지금 우리가 사용하는 자바스크립트는 다음과 같은 11가지 측면에서 이 언어를 만든 이들과 초기 도입자들이 상상했던 언어와 완전히 다르다.
더 이상 자바스크립트로 불리지 않음
처음에는 모두가 자바스크립트라고 불렀다. 지금도 대부분의 개발자가 이 이름을 사용한다. 그러나 표준을 만드는 사람들이 공식적으로 사용하는 이름은 ECMA스크립트다. 일부는 규범적 언어 사양의 공식 버전 번호(최대 14)까지 명시한다. ECMA스크립트는 입에 잘 붙지 않고 따뜻한 커피를 연상시키지도 않지만 자바스크립트를 자바와 확실히 구분해준다. 이 이름을 사용함으로써 자바스크립트 개발자는 자바 상표, 로고 또는 기타 트레이드 드레스에 대해 걱정할 필요가 없다. 단, 이 사양을 유지관리 주체인 ECMA 인터내셔널(ECMA International)은 이름 옆에 작은 등록 상표 기호를 붙이는 것을 좋아한다는 점만(ECMAScript®) 예외적으로 주의하면 된다.너무 방대해서 특정 부분의 전문화 필요
지금의 자바스크립트는 너무 방대해서 누구도, 심지어 매일 자바스크립트를 사용하는 개발자라 해도 모든 부분을 아는 것은 불가능하다. 서버 측 옵션과 동형(isomorphic) 코드의 등장으로 새로운 에너지가 유입되고 많은 개발이 이뤄져 한 사람이 브라우저 또는 서버를 위한 코드 작성의 세세한 부분을 모두 알기가 극히 어려워졌다.이론적으로는 브라우저와 서버에서 모두 실행되는 코드를 쓸 수 있지만 현실에서 개발자는 브라우저 또는 서버 하나에 대한 전문성을 갖추는 데 집중한다. 개발자는 흔히 자신이 브라우저 기반 자바스크립트 프레임워크, 서버 측 자바스크립트, 또는 데이터베이스 측 자바스크립트를 다룬다고 구분해서 말한다. 자바스크립트 세계는 방대하다.
관건은 프레임워크
서버 세계와 브라우저 세계로 나누는 것 외에도 자바스크립트 개발자는 프레임워크 단위로 자신의 전문 분야를 좁히는 경향이 있다. 많은 구인 공고는 "자바스크립트" 프로그래머를 구하지 않는다. 이들은 리액트, 앵귤러를 비롯해 많이 사용되는 10여 개의 자바스크립트 프레임워크를 다룰 줄 아는 사람을 찾는다. 실용적인 결정이다.프로그래머는 성공하려면 이러한 프레임워크의 세세한 특성에 정통해야 한다. 물론 자바스크립트의 기본도 알아야 한다. 그러나 앵귤러가 HTML 속성을 어떻게 사용하는지 모른다면 자바스크립트 전문 지식을 아무리 많이 갖고 있어도 도움이 되지 않는다. 앵귤러, 리액트와 같은 대형 프레임워크도 너무 커지고 복잡해져서 일부 프로그래머는 상태 관리 툴(리덕스(Redux), 몹액스(MobX)) 또는 기본 모델 옵션과 같은 자바스크립트의 하위 영역에 집중하는 더 작은 툴에 대한 전문성을 키우고 있다.
동형
자바스크립트의 인기가 큰 폭으로 늘어난 계기 중 하나는 Node.js를 통해 서버에서 실행되는 자바스크립트 코드를 작성할 수 있게 된 것이다. 한 팀이 브라우저 소프트웨어를 처리하고 다른 팀이 서버 측을 관리할 필요가 갑자기 사라졌다. 동일한 코드를 두 위치에서 동형으로 실행할 수 있게 되면서 자바스크립트 개발자는 브라우저에서 서버로, 다시 브라우저로 훨씬 더 쉽게 함수를 옮길 수 있게 됐다.잠깐, 조금 전에 자바스크립트 세계가 두 갈래, 세 갈래 또는 그 이상으로 분화되고 있다고 말하지 않았던가? 맞다. 그러나 동형성은 여전히 가치 있다. 암호화와 같은 작업을 위한 많은 기본적인 함수는 다양한 영역에서 동일하게 실행이 가능하다. 물론 프로그래머는 한 틈새 영역에 대한 전문성을 키울 수 있지만 코드 자체는 모든 틈새 간에 아무런 제한 없이 흐를 수 있다.
다수의 새로운 연산자
원래의 자바스크립트에는 데이터 객체를 다루기 위한 간단한 기능이 몇 가지 있었다. 최신 버전은 데이터 구조를 분할하고 쪼개고 확장하고 변경할 수 있는 스프레드 연산자(…), map과 같은 추가 기능을 지원한다. 그 결과 매우 간결하면서도 매우 강력한 코드를 얻을 수 있다. 프로그래머는 복잡한 데이터 구조를 포장하고 풀기 위한 끝없는 루틴을 쓰지 않고도 손쉽게 이러한 구조를 제공할 수 있다. 코드는 더 간소하고 빠르며, 새로운 구문을 안다면 읽기도 더 쉽다.모든 곳에 있는 JSON
초기 자바스크립트 프로그래머는 데이터를 공유하려면 파싱하고 직렬화할 수밖에 없었다. 이후 어느 영리한 사람이 네이티브 자바스크립트 객체 형식(JavaScript Object Notation, 즉 JSON)이 효율적인 동시에 속도도 빠르다는 사실을 발견했다. 자바스크립트 스택은 JSON을 사용해 저장된 데이터를 다른 대부분의 형식보다 더 빠르게 파싱할 수 있었다. 지금은 자바스크립트 코드를 쓰지 않는 프로그래머도 유연성과 효율성을 이유로 JSON 형식의 데이터를 사용한다. JSON은 모든 곳에 사용되지만, JSON을 빠르게 파싱하고 객체로 변환하는 자바스크립트 환경에 사용될 때 가장 잘 맞는 느낌이다.빌드와 빌드 툴
초기 사람들은 텍스트 편집기로 자바스크립트를 쓰고 브라우저에서 테스트했다. 현대 자바스크립트 애플리케이션은 조금 더 복잡하다. 대부분의 경우 그런트(Grunt), 걸프(Gulp), 웹팩(Webpack)과 같이 다양한 구성요소를 최종 실행 스택으로 엮어주는 다단계 빌드 툴이 필요하다. 많은 개발자가 결국 코드를 테스트하고 충돌 가능성이 있는 버그를 확인하는 전체 CI/CD 서버를 사용하게 된다.자바스크립트의 빌드 툴은 매우 강력해서 개발자와 일종의 애증의 관계에 있는 경우가 많다. 이들이 작성하는 코드는 분석을 거쳐 실제로 실행되는 형식으로 어셈블링되기 전까지는 아무 데서도 실행되지 않는다. 기술적으로 자바스크립트는 여전히 동적 스크립팅 언어지만 오래된 C 컴파일러보다 빌드에 더 오랜 시간이 걸리는 경우가 종종 있다.
JIT 컴파일
지금은 처리와 전처리가 스택의 위아래에서 이뤄진다. JIT(Just-In-Time) 컴파일러는 처음 등장할 때부터 자바스크립트의 잠재력을 끌어냈고 지금도 계속 개선되고 있다. 현재의 컴파일러는 코드가 실행될 때 반복적으로 이를 분석해서 대부분의 작업을 수행하는 알고리즘의 핵심 부분을 개선할 수 있을 만큼 똑똑하다. 가비지 수집에서 효과적이며 피해를 입히는 여러 가지 동작을 차단한다. 스크립팅 언어로 시작된 언어임을 감안하고 보면 자바스크립트의 JIT 레이어는 공식적으로 "컴파일되는" 언어만큼 강력해 보인다.형식 안전성
자바스크립트 초창기 일부 프로그래머는 각 변수에 저장되는 데이터의 형식을 정의하기 위해 부가적인 입력이 필요하다는 점을 싫어했다. 여전히 기본 자바스크립트를 사용한다 해도 자유지만 이제는 상당히 많은 개발자가 타입스크립트와 기타 자바스크립트를 위한 형식 지정 옵션을 수용하고 있다. 이러한 프리프로세서는 형식 규칙, 그리고 이 규칙에 수반되는 모든 안전 장치를 적용한다.방대한 라이브러리 생태계
오늘날 자바스크립트 생태계에는 폭과 깊이를 가늠하기 어려울 정도로 방대한 라이브러리가 번성 중이다. 수천, 수백만 가지의 애플리케이션을 위한 코드가 있다. 기본적인 프로젝트를 위한 빌드 파일도 수백 가지의 종속성을 가져올 수 있다. 자바스크립트는 깃허브, 깃랩 등의 리포지토리에서 가장 인기 있는 언어 중 하나다. 리포지토리에서 모든 경우에 맞는 코드를 며칠이고 탐색할 수 있다.자바스크립트로 크로스 컴파일되는 다른 언어
자바스크립트의 최근 변화 하나를 꽂바면 다른 언어로 작성된 코드 지원이다. 자바스크립트로 크로스 컴파일해서 브라우저 또는 서버에서 실행할 수 있는 언어는 수백 가지에 이른다.JIT 컴파일러 덕분에 이제 자바스크립트는 오래된 코볼 또는 새로운 하스켈을 어디서나 빠르게 실행하고자 하는 개발자에게 좋은 중간 지점 역할을 한다. 물론 이러한 언어를 좋아하는 사용자는 자체 컴파일러를 만들 수 있지만 자바스크립트로 크로스 컴파일해서 툴에 최적화를 맡기는 편이 더 쉽다. 결과적으로 많은 자바스크립트 코드가 완전히 다른 언어를 사용하는 프로그래머에 의해 작성됐다.
editor@itworld.co.kr
함께 보면 좋은 콘텐츠
Sponsored
Seagate
'반박 불가' 하드 드라이브와 SSD에 관한 3가지 진실
ⓒ Getty Images Bank 하드 드라이브가 멸종할 것이라는 논쟁이 10년 넘게 계속되고 있다. 빠른 속도와 뛰어난 성능이 필요한 애플리케이션에 적합한 플래시 스토리지의 연매출이 증가하고 있는 것은 자명한 사실이다. 하지만, 클라우드의 보편화 및 AI 사용 사례의 등장으로 인해 방대한 데이터 세트의 가치가 높아지는 시대에 하드 드라이브는 플래시 스토리지로 대체할 수 없는 가치를 가지고 있다. 전 세계 엑사바이트(EB) 규모 데이터의 대부분을 저장하는 하드 드라이브는 데이터센터에서 그 어느 때보다 필수적이다. 전 세계 데이터 세트의 대부분이 저장된 엔터프라이즈 및 대규모 클라우드 데이터센터는 데이터 성장에서 핵심이 될 것이다. 하드 드라이브와 SSD를 비교하자면, 하드 드라이브 스토리지는 2022년에서 2027년 사이 6,996EB 증가할 것으로 예상되는 반면, SSD는 1,363EB 증가할 것으로 보인다. ⓒ Seagate 생성형 AI 시대에는 콘텐츠를 경제적으로 저장해야 하기 때문에 플래시 기술과 밀접하게 결합된 컴퓨팅 클러스터는 더 큰 하드 드라이브 EB의 다운스트림 수요를 직간접적으로 촉진할 것이다. 하드 드라이브가 왜 데이터 스토리지 아키텍처의 중심이 될 수밖에 없는지는 시장 데이터를 근거로 설명 가능하다. 가격 책정 근거 없는 믿음 : SSD 가격이 곧 하드 드라이브 가격과 같아질 것이다. 사실 : SSD와 하드 드라이브 가격은 향후 10년간 어느 시점에도 수렴하지 않을 것이다. 데이터가 이를 명확하게 뒷받침한다. 하드 드라이브는 SSD에 비해 테라바이트당 비용 면에서 확고한 우위를 점하고 있으며, 이로 인해 하드 드라이브는 데이터센터 스토리지 인프라의 확고한 주춧돌 역할을 하고 있다. IDC 및 포워드 인사이트(Forward Insights)의 연구에 따르면, 하드 드라이브는 대부분의 기업 업무에 가장 비용 효율적인 옵션으로 유지될 것으로 전망된다. 엔터프라이즈 SSD와 엔터프라이즈 하드 드라이브의 TB당 가격 차이는 적어도 2027년까지 6대 1 이상의 프리미엄이 유지될 것으로 예상된다. ⓒ Seagate 이러한 TB당 가격 차이는 장치 구입 비용이 총소유비용(TCO)에서 가장 큰 비중을 차지하는 데이터센터에서 특히 두드러지게 드러난다. 장치 구입, 전력, 네트워킹, 컴퓨팅 비용을 포함한 모든 스토리지 시스템 비용을 고려하면 TB당 TCO는 하드 드라이브 기반 시스템이 훨씬 더 우수하게 나타난다. ⓒ Seagate 따라서, 플래시는 특정 고성능 작업의 수행에 탁월한 스토리지이지만, 하드 드라이브는 당분간 안정적이고 비용 효율적이며 널리 채택된 솔루션을 제공하는 데이터센터에서 계속해서 주류로 사용될 것이다. 공급과 확장의 관계 근거 없는 믿음 : NAND 공급이 모든 하드 드라이브 용량을 대체할 정도로 증가할 수 있다. 사실 : 하드 드라이브를 NAND로 완전히 교체하려면 감당할 수 없는 설비투자(CapEx)가 필요하다. NAND 산업이 모든 하드 드라이브 용량을 대체하기 위해 공급을 빠르게 늘릴 수 있다는 주장은 재정적, 물류적으로 엄청난 비용이 발생한다는 점을 간과한 낙관적인 생각이다. 산업 분석기관 욜 인텔리전스(Yole Intelligence)의 2023년 4분기 NAND 시장 모니터 리포트에 따르면, 전체 NAND 산업은 2015년~2023년 사이 3.1제타바이트(ZB)를 출하하면서 총 매출의 약 47%에 해당하는 2,080억 달러의 막대한 자본 지출을 투자해야 했다. 반면, 하드 드라이브 산업은 데이터센터 스토리지 수요의 거의 대부분을 매우 자본 효율적인 방식으로 해결하고 있다. 씨게이트가 2015년~2023년 사이 3.5ZB의 스토리지를 출하하며 투자한 자본은 총 43억 달러로, 전체 하드 드라이브 매출의 약 5%에 불과하다. 그러나 NAND 산업의 경우 ZB당 약 670억 달러에 해당하는 금액을 투자한 것으로 나타나 하드 드라이브가 데이터센터에 ZB를 공급하는 것이 훨씬 더 효율적임을 알 수 있다. ⓒ Seagate 작업 부하 근거 없는 믿음 : 올 플래시 어레이(AFA)만이 최신 엔터프라이즈 작업 부하의 성능 요구를 충족할 수 있다. 사실 : 엔터프라이즈 스토리지 아키텍처는 일반적으로 디스크 또는 하이브리드 어레이, 플래시, 테이프를 사용하여 특정 작업 부하의 비용, 용량, 성능 요구 사항에 최적화할 수 있도록 미디어 유형을 혼합한다. 기업이 플래시 없이는 최신 작업 부하의 성능 수요를 따라잡지 못할 위험이 있다는 주장은 다음과 같은 3가지 이유로 반박 가능하다. 첫째, 대부분의 최신 작업 부하에는 플래시가 제공하는 성능상의 이점이 필요하지 않다. 전 세계 데이터의 대부분은 클라우드와 대규모 데이터센터에 저장되어 있으며, 이러한 환경에서는 작업 부하 중 극히 일부에만 상당한 성능이 필요하다는 파레토 법칙을 따르고 있다. 둘째, 예산 제약이 있고 데이터 세트가 빠르게 증가하는 기업들은 성능뿐만 아니라 용량과 비용의 균형을 맞춰야 한다. 플래시 스토리지는 읽기 집약적인 시나리오에서는 탁월한 성능을 발휘하지만 쓰기 작업이 증가하면 내구성이 떨어져 오류 수정과 오버프로비저닝에 추가 비용이 발생한다. 또한, 대규모 데이터 세트나 장기 보존의 경우 영역 밀도가 증가하는 디스크 드라이브가 더 비용 효율적인 솔루션일 뿐만 아니라 수천 개의 하드 드라이브를 병렬로 활용하면 플래시를 보완하는 성능을 달성할 수 있다. 셋째, 수많은 하이브리드 스토리지 시스템은 다양한 미디어 유형의 강점을 단일 유닛에 원활하게 통합하고 최대한으로 활용할 수 있도록 세밀하게 조정된 소프트웨어 정의 아키텍처를 사용한다. 이러한 스토리지는 유연성을 제공하므로 기업은 지속적으로 변화하는 요구 사항에 따라 스토리지 구성을 조정할 수 있다. AFA와 SSD는 고성능의 읽기 집약적인 작업에 매우 적합하다. 하지만 하드 드라이브가 이미 훨씬 낮은 TCO로 제공하는 기능을 AFA로 불필요하게 비싼 방법으로 제공하는 것은 비용 효율적이지 않을 뿐만 아니라, AFA가 하드 드라이브를 대체할 수 있다고 주장하는 근거가 될 수 없다.
Seagate
“작지만 큰 영향력” 하드 드라이브의 나노 스케일 혁신
ⓒ Seagate 플래터당 3TB라는 전례 없는 드라이브 집적도를 자랑하는 새로운 하드 드라이브 플랫폼이 등장하며 디지털 시대의 새로운 이정표를 세웠다. 플래터당 3TB를 저장할 수 있다는 것은 동일한 면적에서 스토리지 용량을 기존 드라이브 대비 거의 두 배로 늘릴 수 있다는 것을 의미한다. 이러한 혁신은 데이터 스토리지의 미래와 데이터센터의 디지털 인프라에 괄목할 만한 영향을 미친다. AI의 발전과 함께 데이터의 가치가 그 어느 때보다 높아졌다. IDC에 따르면 2027년에는 전 세계에서 총 291ZB의 데이터가 생성될 것으로 예측되며, 이는 스토리지 제조 용량의 15배 이상일 것으로 보인다. 대부분의 데이터를 호스팅하는 대형 데이터 센터에 저장된 데이터 중 90%가 하드 드라이브에 저장된다. 즉, AI 애플리케이션의 주도로 데이터가 급증함에 따라 물리적 공간을 늘리지 않으면서도 데이터를 저장할 수 있는 스토리지 기술 혁신이 필요하다. 데이터 스토리지 인프라를 업그레이드하는 것은 단순히 기술적인 문제가 아니라 지금 시대가 직면한 규모, 총소유비용(TCO), 지속가능성이라는 과제에 대한 논리적 해답인 셈이다. 열 보조 자기 기록(HAMR) 기술은 선구적인 하드 드라이브 기술로 드라이브 집적도 향상을 위해 지난 20년 동안 수많은 연구를 거쳐 완성되어 왔다. 씨게이트 모자이크 3+ 플랫폼은 이러한 HAMR 기술을 씨게이트만의 방식으로 독특하게 구현한 것으로, 미디어(매체)부터 쓰기, 읽기 및 컨트롤러에 이르는 복잡한 나노 스케일 기록 기술과 혁신적인 재료 과학 역량을 집약한 결정체다. 이 플랫폼은 데이터 비트를 변환하고 자기 및 열 안정성을 유지하면서 더욱 촘촘하게 패킹해서 각 플래터에 훨씬 더 많은 데이터를 안정적이고 효율적으로 저장할 수 있다. 예를 들어, 기존 데이터센터에 있는 16TB 드라이브를 30TB 드라이브로 업그레이드하면 동일한 면적에서 스토리지 용량을 두 배로 늘릴 수 있다. 더 낮은 용량에서 업그레이드한다면 상승 폭은 더욱 커진다. 이 경우, 테라바이트당 전력 소비량이 40% 감소하는 등 스토리지 총소유비용(TCO)이 크게 개선된다. 또한 효율적인 자원 할당과 재활용 재료 사용으로 운영 비용을 절감하고 테라바이트당 탄소 배출량을 55% 감소시켜 데이터센터가 지속 가능성 목표를 달성할 수 있다. 드라이브 집적도 향상은 하이퍼스케일과 프라이빗 데이터센터의 판도를 바꿀 수 있다. 데이터센터가 급증하며 전력사용량과 탄소배출량 역시 늘어나 데이터센터의 지속가능성이 화두가 되고 있는 가운데, 과학기술정보통신부는 ‘탄소중립 기술혁신 추진전략-10대 핵심기술 개발방향’에서 2030년까지 데이터센터 전력소모량을 20% 절감하겠다고 밝힌 바 있다. 이러한 목표에 발맞춰, 집적도를 획기적으로 개선한 대용량 데이터 스토리지를 활용하는 것은 원활하고 지속적인 AI 모델 학습, 혁신 촉진 및 비즈니스 성공을 위해 필수적이다. 엔터프라이즈 데이터센터의 경우 제한된 공간, 전력, 예산에 맞춰 확장할 수 있는 지속 가능한 방법을 찾아야 한다. 하드 드라이브의 집적도 혁신은 점점 더 커져가는 클라우드 생태계와 AI 시대에 대응하는 해답이자, 동일한 공간에 더 많은 엑사바이트를 저장하면서도 자원 사용은 줄이도록 인프라를 확장할 수 있는 방법이다. 이는 글로벌 데이터 영역에서 경쟁력을 유지하고 글로벌 디지털 경제의 선두주자로서 입지를 강화하는 데 매우 중요하다.