Etc

[IT열쇳말] 노드JS

OSS 2016-06-23 10:57:05 2201
2016

2016년 4월 28일 (목)

ⓒ 블로터닷넷, 이지현 기자 jihyun@bloter.net



웹 개발은 크게 둘로 나뉜다. 프론트엔드(Front-end)와 백엔드(Back-end) 기술이다. 프론트엔드는 웹페이지 디자인이나 버튼 기능처럼 사용자가 바로 볼 수 있는 부분이다. 백엔드는 사용자가 눈으로 볼 수 없는 뒷단 기술이다. 백엔드는 서버단 기술이라 불리기도 한다. HTML, CSS 등이 대표적인 프론트엔드 기술이며, DB나 서버를 다루는 부분이 백엔드 기술이다.


자바스크립트는 프론트엔드 분야에서 주로 활용됐다. 그런데 ‘노드JS’(NodeJS)가 등장하면서 그 용도가 전혀 달라졌다. 노드JS라는 프레임워크 덕분에 자바스크립트로 서버단 기술까지 제어할 수 있게 된 것이다. 2009년 혜성같이 등장한 노드JS는 웹 개발자에게 많은 관심을 받고 있으며, 최근 재단까지 설립되며 기술 개발이 활발히 이뤄지고 있다.


▲노드 JS 로고(출처 : https://nodejs.org/en/about/resources/)

▲노드 JS 로고(출처 : https://nodejs.org/en/about/resources/)



조이엔트에서 시작한 오픈소스 기술


노드JS는 자바스크립트 엔진 ‘V8’ 위에서 동작하는 이벤트 처리 I/O 프레임워크다. 서버 환경에서 자바스크립트로 애플리케이션을 작성할 수 있도록 도와준다. 노드JS의 장점은 비동기 프로그래밍이다. 동기 프로그래밍은 무엇인가 요청하면 결과를 즉시 받는 것을 의미한다. 비동기는 이벤트를 요청하고 바로 결과를 받지 않아도 된다. 따라서 결과값을 기다리지 않고 보다 다양한 요청을 처리할 수 있다. 웹 분야에서는 비동기 프로그래밍을 쓰는 경우가 드물었는데, 노드JS로 비동기 프로그래밍을 비교적 쉽게 할 수 있게 됐다.


프론트엔드와 백엔드를 자바스크립트라는 같은 언어로 다같이 관리할 수 있는 것도 노드JS의 큰 장점이다. 덕분에 웹 개발자들은 새로운 언어를 배우지 않고 기존 언어를 활용해 서버 기술을 빨리 응용하게 됐다. 확장성도 노드JS의 장점이다. 링크드인이나 페이팔도 노드JS를 도입했으며, 최근엔 기업용 노드JS기술도 별도로 나오고 있다. 다만 기술의 역사가 짧다 보니 관련 예제나 모듈의 완성도 등이 타 언어에 비해서는 조금 부족하다는 면이 단점으로 지적되고 있다.


▲노드 JS 예제(출처 : https://nodejs.org/en/about/)

▲노드 JS 예제(출처 : https://nodejs.org/en/about/)


노드JS는 라이언 달(Ryan Dahl)이라는 개발자가 만든 기술이다. 라이언 달은 2006년 플리커 서비스를 보다가 노드JS의 아이디어를 떠올렸다. 당시 플리커는 사진을 올리면 현재까지 파일이 몇 퍼센트 업로드 됐는지 알려주는 기능이 있었다. 그 과정에서 서버에 데이터 요청을 보내고 기다려야 했는데, 라이언 달은 이러한 상황을 개선할 기술을 고민하다 노드JS를 만들었다고 한다.


라이언 달은 2009년 11월 유럽에서 열린 자바스크립트 컨퍼런스에서 노드JS를 처음 공개했다. 라이언 달은 노드JS를 개발할 당시 조이엔트에서 근무하고 있었다. 조이엔트는 클라우드, 컨테이너 서비스 등도 함께 개발하고 있지만, 노드JS 공식 스폰서 기업으로 라이언 달이 노드JS 기술 개발에만 집중할 수 있도록 지원했다.



조이엔트와 커뮤니와의 갈등


▲노드 JS 주요 공헌자들. 라이언 달, 아이작 슐레터, TJ 폰테인(왼쪽부터).

▲노드 JS 주요 공헌자들. 라이언 달아이작 슐레터TJ 폰테인(왼쪽부터).


노드JS는 처음에 조이엔트에서 지원했지만 상용 기술이 아닌 오픈소스 기술로 공개됐다. 이 과정에서 조이엔트는 ‘자비로운 종신독재자’(BDFL, Benevolent Dictator for Life)가 이끄는 오픈소스 문화를 선택했다. BDFL은 소스코드를 수정하는 최종 권한을 갖거나 전체적인 개발 방향을 정하는 소수의 오픈소스 프로젝트 개발 리더를 일컫는다. 주로 해당 오픈소스 기술을 처음 만든 창시자가 BDFL을 맡는다. BDFL 문화를 채택하는 대표적인 곳이 리눅스 커뮤니티다. 프로그래밍 언어 ‘파이썬’를 만든 귀도 반 로섬(Guido van Rossum)도 BDFL 역할을 맡고 전체적인 커뮤니티를 관리한다.


일반적으로 BDFL은 한번 정해지면 계속 유지되는 것에 비해, 노드JS 커뮤니티에선 BDFL이 계속 바뀌었다. 조이엔트는 여기서 BDFL을 지정할 권리를 가졌다. 노드JS 창시자인 라이언 달이 바로 노드JS 커뮤니티의 1대 BDFL이었다. 다음 리더는 아이작 슐레터(Issac Z. Schlueter), 세 번째 BDFL은 TJ 폰테인(TJ Fontaine)이 맡았다. 세 사람 모두 당시 조이엔트 소속 개발자였으며, 노드JS 기술만 전담해 유지보수했다. 동시에 이들은 오픈소스 커뮤니티와 활발하게 소통하며 기술을 개발했다. 아이작 슐레터가 BDFL일 때만 해도 노드JS 커뮤니티는 순탄하게 돌아갔다. 하지만 2014년 TJ 폰테인이 노드JS 커뮤니티 수장으로 들어선 이후부터 분쟁이 발생했다.


▲조이엔트 로고

▲조이엔트 로고.
(출처: https://www.joyent.com/content/09-developers/01-resources/08-performance-visualizations/performance-visualizations.pdf )


노드JS 기술은 처음 공개된 이후 꾸준히 업데이트 됐다. 2013년 3월 버전 0.10.0이 출시됐으며, 조이엔트가 공개한 기술 개발 계획에 따르면 그 다음 핵심 버전은 0.12였다. 그런데 0.12버전은 2015년 2월이 돼서야 공개됐다. 1년이 넘는 시간 동안 작은 업데이트 정도만 있었고, 핵심 기술에 대한 개발은 거의 이뤄지지 않았던 셈이다. 기업이 직접 후원하고 조이엔트 외에 다양한 참여자가 있는 커뮤니티에선 다소 이해할 수 없는 상황이었다. 조이엔트는 왜 개발 속도가 느려지는지에 대해서 구체적인 이유는 따로 밝히지 않았다.


결국 조이엔트에 속하지 않는 노드JS 개발자들은 2014년 하반기 ‘노드포워드’라는 기술위원회를 독자적으로 결성했다. 자바스크립트의 생태계를 개선하기 위한 커뮤니티였다. 독특한 건 여기에 2대 리더였던 아이작 슐레터도 포함됐다는 사실이다. 노드포워드 주요 멤버였던 미킬 로저스는 강연회에서 “당시 왜 이렇게 새로운 릴리즈가 없는지 알아내는 데 고민하기보다는 노드JS 생태계를 잘 구축하고 싶었다”라고 말했다. 이를 위해 ‘노드스쿨’, ‘노드콘원샷’ 같은 노드 개발자들이 모일 수 있는 방법에 대해서 많이 논의했다. 노드포워드는 회의 과정을 바로 행아웃으로 녹화해 공개하고, SNS으로 내부 소식을 올리면서 다른 개발자와 소통을 늘렸다. 조이엔트가 주도했을 때보다 훨씬 개방적이고 투명한 오픈소스 문화가 만들어졌다.


노드포워드 홈페이지

▲노드포워드 홈페이지(출처: http://nodeforward.org/)


노드포워드에 대한 영향 때문일까. 조이엔트는 ‘오픈 거버넌스 모델’을 지향하는 ‘자문위원회(Advisory Board)’를 구성하겠다고 발표했다. 오픈 거버넌스 모델은 BDFL 운영 방침과는 반대로, 관심이 있는 사람은 누구나 최종 기술에 대한 기여를 할 수 있는 구조다.


그러던 중 2014년 12월, 노드포워드는 독자적인 기술인 ‘io.js’를 발표했다. io.js는 노드JS 기술을 기반으로 만들었다. 노드JS는 오픈소스 기술이어서 복사하는 것이 가능했기 때문이다. io.js는 오픈 거버넌스 모델을 추구했다. 미킬 로저스는 <인포월드>와의 인터뷰에서 “2014년 7월부터 조이엔트와 함께 문제를 해결할 방안을 얘기했다”라며 “기다리다 지쳐 io.js를 공개했다”라고 설명했다. 또한 그는 공개적으로 조이엔트가 마음대로 노드JS 리더를 결정하는 것에 대해 반대하기도 했다.



노드JS재단 출범


노드JS 재단 출범 소개 글

▲노드JS재단 출범 소개 글(출처: 조이엔트 홈페이지)


io.js의 영향 때문이었을까. 조이엔트는 2015년 2월 ‘노드JS재단’을 출범시켰다. 동시에 노드JS가 리눅스재단과 같은 방식으로 운영되며 중립적인 성격을 띤다는 것을 강조했다. 재단 출범소식을 전하기 4일 전엔 서둘러 노드JS의 0.12버전 기술도 출시했다. 스콧 해몬드 조이엔트 CEO는 직접 io.js 팀에 노드JS 프로젝트로 합류하자고 제안하기도 했다. 결국 2015년 5월, io.js 팀은 노드JS에 합류하기로 했다고 발표했다. 노드JS의 3대 리더인 TJ 폰테인은 BDFL 역할을 그만두었고, 조이엔트도 함께 떠났다.


2015년 9월에는 약 1년 만에 새 버전인 노드JS 4.0이 출시됐다. 노드JS 4.0 이후 버전은 io.js와 합쳐지면서 최신 V8이 도입돼 ES6의 기능을 더 많이 쓸 수 있게 됐다. 최근 노드JS 기술은 리눅스, OS X, 윈도우, ARM 프로세서 등 다양한 테스트 환경이 구축돼 훨씬 안정적으로 기술을 배포할 수 있는 상태다.



기업용 기술로 뻗어가는 노드JS 생태계


노드JS 재단에 속한 기업들

▲노드JS 재단에 속한 기업들. 현재 노드JS 생태계를 이끌고 있다.(출처 : 노드JS재단 슬라이드셰어)


노드JS가 인기를 끌자 노드JS로 기술을 개발하는 기업도 하나 둘 등장했다. 대표적으로 2대 BDFL이었던 아이작 슐레터는 npm이라는 자바스크립트 관련 패키지를 공유·관리해주는 서비스를 오픈소스 프로젝트로 시작했다. 2014년에는 npm 전문 스타트업을 세우고 패키지를 보다 체계적으로 관리하고 있다. 처음에는 노드JS 위주의 기술이 많았지만 지금은 프론트엔드와 관련된 패키지들이 전부 모여 있다. 현재 등록된 패키지 수는 20만개이며, 사용자 수는 15만명이 넘었다.


노드JS를 기업용 서비스로 확장하려는 움직임도 많다.노드소스라는 스타트업은 2014년 설립된 이후 ‘엔솔리드’, ‘엔십’ 같은 기업용 노드JS 서비스를 제공하고 있다. 2015년에는 300만달러, 우리돈 약 35억원의 투자를 받기도 했다. 고객은 넷플릭스, 페이팔, 우버, 야후 등이 있다.


스트롱루프 역시 노드JS 업계에서 주목받는 스타트업이었는데, IBM이 2015년 인수했다. 노드JS와 합병한 io.js 프로젝트를 개발했던 핵심 커미터들도 스트롱루프에 소속돼 있었다. IBM은 최근 주력하고 있는 플랫폼 서비스(PaaS)인 ‘블루믹스’에 노드JS 기술을 확대하고 있다.


이 밖에도 MS, 인텔, 레드햇 같은 기업이 노드JS재단을 지원하며 노드JS에 대한 투자를 늘리고 있다.




※ 본 내용은 (주)블로터 앤 미디어(http://www.bloter.net)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒ 블로터 앤 미디어. 무단전재 및 재배포 금지



[원문출처 : http://www.bloter.net/archives/255115]

맨 위로
맨 위로