io.js, rocket 요약
Node.js, io.js
Node.js의 흐름을 시간 순으로 정리해 봅니다. 2009년에 Ryan Dahl이 Node.js를 만들었습니다. 5년 전입니다. IaaS와 PaaS 사업을 하는 Joyent라는 회사가 후원을 시작했고, Ryan Dahl 본인도 Joyent에 입사했습니다. 2012년에는 Ryan Dahl이 Node.js 프로젝트에서 손을 뗐고, 이후 프로젝트는 Joyent가 관리자를 임명해 운영하기 시작했습니다. 2012년 1월에는 npm을 만든 Isaac Schlueter가 프로젝트 관리자가 되었고, 2014년 1월에는 Timothy J Fontaine이 새로운 프로젝트 관리자로 이어받았습니다.
그리고 2014년 12월 2일, Node.js를 포크하여 io.js 프로젝트가 생겼습니다. fork를 주도한 사람들은 Mikeal Rogers, Fedor Indutny, Trevor Norris, Isaac Schlueter, Ben Noordhuis, Bert Belder입니다. 명분은 오픈소스 프로젝트 리더 한 명을 지정해 최종 중재 권한을 부여하는 “Benevolent dictator for life (BDFL)” 모델이 아니라, 구성원의 합의를 바탕으로 결정을 내리는 오픈소스 모델로 전환하기 위해서입니다. 참고로 프로젝트는 https://github.com/iojs에 있습니다.
docker, rocket
docker에 대해 자주 거론되는 비판은 두 가지입니다. 다양한 기능이 하나의 monolithic binary로 만들어져 서버에 root 권한으로 실행된다는 점, 그리고 단순하고 조합 가능한(composable) building block이 아니라는 점입니다.
Rocket은 그러한 흐름에서 등장한 대안 중 하나로, 단순함과 조합 가능성, 보안, 빠른 실행을 지향한다고 소개됩니다. “App Container"는 컨테이너의 명세입니다. 사용 흐름은 이렇습니다. manifest.json을 만들고, actool build --app-manifest manifest.json rootfs hello.aci로 aci 파일을 만든 다음, rkt run hello.aci로 App Container Image를 실행합니다. Rocket(rkt)은 App Container를 돌리기 위한 CLI의 이름입니다. 참고로 rocket/getting-started-guide.md at master · coreos/rocket을 보면 더 자세한 내용이 있습니다.