올 한 해 계속 기억해야 할 오픈소스 수퍼 루키 10선

InfoWorld

제 6회 블랙 덕 오픈 소스 올해의 루키(Black Duck Open Source Rookies of the Year)는 작년에 시작된 최고의 오픈소스 프로젝트들을 선정해 시상한다. 올해의 수상자들은 클라우드 컴퓨팅, 소프트웨어 가상화, 프라이버시, 소셜 미디어, 사물 인터넷 등이다. 수상자 선정은 블랙덕의 올로(Ohloh) 사이트에서 수집된 통계와 선도 오픈 소스 소프트웨어 디렉토리에 기반해 전체 커밋(commits)과 커미터(commiters), 커미터들에 걸친 커밋 배분, 소셜 미디어 트래픽 등을 기준으로 했다. editor@itworld.co.kr 

애피엄 애피엄(Appium, http://appium.io )은 네이티브와 하이브리드 모바일 앱을 위한 오픈 소스 테스트 자동화 프레임워크다. 애피엄은 웹드라이브(WebDriver) JSON 와이어 프로토콜을 통해 iOS와 안드로이드 앱을 구동시킨다. 모바일 앱이 우리의 운영 인프라 핵심이 되어감에 따라, 애자일 개발을 위한 자동화된 테스팅이 필요해졌다. 애피엄은 iOS와 안드로이드상의 네이티브와 하이브리드 모바일 앱 모두의 테스팅을 위한 광범위한 플랫폼을 제공한다. 기업은 그들의 증가하는 요구를 지원하기 위한 단일 테스팅 툴로 활용할 수 있다. 원래는 확장 가능하고 자동화된 테스트 환경을 구축하는 소스랩(SauceLabs)으로 시작했지만, 애피엄은 급속도로 확장하는 다양한 개발자 커뮤니티에서 새 활로를 모색해왔다.

다커 다커(Docker, https://www.docker.io)는 오픈소스 프로젝트 루키에게는 드문 유형의 흥분을 자아내왔다. 다커는 모든 애플리케이션의 경량, 이동형, 자족식 컨테이너의 손쉬운 생성을 가능하게 하는데 있다. 개발자가 노트북에서 구축하고 테스트한 동일 컨테이너를 확장해 VM, 베어 메탈(bare metal), 오픈스택(OpenStack) 클러스터, 공공 클라우드상에서 실행된다. 다커는 닷클라우드(dotCloud)라는 작은 기업이 시작했지만, 점점 기반이 튼튼해졌고 레드햇과 구글 등 대기업의 주목을 받았다. 다커를 이용하면 기업들이 다양하게 개발한 자체 앱에서 실행할 수 있고 동시에 개발자에게 언어와 툴 선택의 자유를 준다.

엑서시즘 엑서시즘(Exercism, http://exercism.io)은 프로그래밍 언어를 배우는 이들을 위한 협력적 교육 툴로, 학생들의 협동학습을 지원하기 위해 미국 콜로라도주의 작은 기술학교 강사인 카트리나 오웬가 시작한 이후 큰 성공을 거뒀다. 오웬은 이 툴을 통해 학생들의 프로그래밍 언어 이해가 크게 향상됐음을 바로 실감했다. 카트리나는 단지 가르치던 학생을 위해 엑서시즘을 시작했지만, 다른 학생들과 교육자들은 그 장점을 빠르게 알아보고 이 프로젝트를 활용함과 동시에 엑서시즘에 기여하기 시작했다. 엑서시즘은 현재 고(Go), 커피스크립트(CoffeeScript), 자바스크립트(JavaScript), 자바(Java), 러스트(Rust), 얼랑(Erlang)을 포함한 13가지 언어를 지원하며 앞으로 더 추가될 예정이다. GNU 아페로 제네럴 퍼블릭 라이선스(GNU Affero General Public License)에 따라 배포된다.

고스트 웹상에 콘텐츠를 퍼블리시한다는 한가지 목표만을 설정하고 있는 고스트(Ghost, https://ghost.org)는, 아름답게 설계되었고, 완벽히 커스터마이징 가능하며, 완전히 오픈소스다. 코스트는 사용자 스스로 블로그를 작성하고 포스트할 수 있게 해줘 이를 쉽고 심지어 재미있게 할 수 있게 만드는 툴을 제공한다. 단순하고, 우아하며, 블로그를 만드는데 소요되는 시간 낭비를 줄이고 블로그 활동에 더 시간을 쓸 수 있도록 설계됐다. 현재는 단일-사용자 블로깅에 한정되어 있지만, 이 플랫폼은 안정적이고 급속하게 성장하고 있다. 고스트는 MIT 라이선스하에 배포되고 있으며, 활용에 대한 제한이 가장 적은 편에 속한다.

인플럭스DB 인플럭스DB(InfluxDB, http://influxdb.org)는 시계열, 이벤트, 메트릭스 데이터베이스다. 고(Go)로 작성되었으며 외부 의존도가 없어서 한번 설치하면 더 이상 관리할 필요가 없다는 점에서 레디스(Redis), H베이스(Hbase) 등과 다르다. 분배와 수평적 확장을 염두에 두고 설계됐지만 단일 기기에서 실행해도 유용하다. 시계열과 분석과 함께 사용되도록 만들어진 SQL같은 쿼리 언어도 포함돼 있다. 인플럭스 DB는 2013년 9월 23일 처음 커밋을 시작해 이제 채 6개월이 안 된 신생 프로젝트다.

오픈데이라이트 오픈데이라이트(OpenDaylight, http://www.opendaylight.org)의 목표는 다른 요소 없이 직접적으로 배치할 수 있는 완전하게 기능적인 SDN 플랫폼을 제공하는 것이다. 다양한 생산 네트워크 환경 배치에 적합한 오픈, 표준-기반 SDN 컨트롤러 플랫폼을 구축하는데 초점이 맞춰져 있다. 모듈러 컨트롤러 프레임워크에 더해, 오픈데이라이트에는 수많은 표준과 이머징 SDN 프로토콜, 가상화와 서비스 추가 같은 네트워크 서비스, 잘 정의된 애플리케이션 API, 물리적 기기 인터페이스와 가상 스위치 향상 같은 데이터 플레인 요소 등에 대한 지원이 추가될 것으로 보인다.

오픈사물인터넷 오픈사물인터넷(OpenIoT, http://openiot.eu)는 유럽연합 집행위원회의 자금지원을 받은 연구 프로젝트로 클라우드 컴퓨팅 제공 모델을 활용하는 새로운 오픈, 대규모, 지능형 사물인터넷 애플리케이션을 새롭게 총체적으로 활성화하는 것이 목표다. 이 프로젝트는 인터넷-연결 대상(센서 네트워크)들의 모빌리티 측면에 초점을 맞춰 에너지 효율적인 센서 데이터 수집과 그 데이터의 클라우드로의 전송을 추구한다. 오픈사물인터넷은 다양한 객체들 사이의 시맨틱 상호작용과 정보처리 상호운용을 활성화하기 위해 존재론과 시맨틱 구조를 통합시켜, GSN과 어스파이어RFID(AspireRFID) 프로젝트가 제공했던 기존의 시맨틱 상호작용에 비해 중대한 발전을 제공한다.

서버스펙 서버스펙(Serverspec, http://serverspec.org)은 다른 모든 구성 관리 툴과 독립적으로 서버 구성을 테스트하는 단순한 접근방식을 제공한다. 서버스펙을 사용하면 서버 구성을 확인할 수 있는 R스펙(Rspec) 테스트를 작성할 수 있다. R스펙은 서버의 실제 상태를 SSH 접속을 통해 테스트하므로 서버에 에이전트 소프트웨어를 설치할 필요가 없다. 퍼펫(Puppet), 셰프(Chef), CF엔진(CFEngine) 등을 포함한 다른 유명 구성 관리 툴과도 조합해 사용할 수 있다. 현재 서버스펙은 레드햇-기반 운영체제, 데비안(Debian)-기반 운영체제, 젠투(Gentoo), 솔라리스(Solaris), 다윈(Darwin)-기반 운영체제들을 지원한다.

톡스 프로젝트 톡스(Tox, http://tox.im)는 AIM, 스카이프(Skype)등을 대체하기 위한 보안 IM과 영상채팅 애플리케이션이다. 미국 국가 안보국(NSA)의 프라이버시 침해 논란 이후 상당히 관심을 받았다. 톡스는 사용이 쉬운 올-인-원 소통 플랫폼으로 문자, 음성, 영상 채팅이 가능하고, 업계 최고 수준의 암호화를 사용해 완전한 프라이버시를 제공한다. 톡스는 광고나 기능 유료화로 사용자를 괴롭히지 않겠다고 약속했다.

X프라이버시 X프라이버시(Xprivacy, https://github.com/M66B/XPrivacy)는 애플리케이션을 통한 데이터 유출을 막기 위해 만들어졌다. 앱에 가짜 데이터를 피딩하거나 아예 데이터를 들이지 않는 방식으로 애플리케이션이 접속할 수 있는 데이터 카테고리를 제한시킨다. 예를 들어, 애플리케이션이 연락처에 접속하는 것을 제한하면, X프라이버시가 빈 연락처 목록을 앱에 보낼 것이다. X프라이버시는 인터넷과 SD카드같은 외장 스토리지 접속을 제외한 승인들은 철회하지 않아서, 애플리케이션의 접속을 완전히 차단하지 않고도 데이터 유출을 방지하는 훌륭한 솔루션이다.

선외 가작: 플라이트 플라이트(Flight, https://www.ohloh.net/p/flightjs)는 웹 애플리케이션에 데이터 렌더링이나 제공에 특정 접근방식을 규정하지 않는다는 점에서 다른 자바스크립트 프레임워크들과 다르다. 요청이 어떻게 보내지는지, 어떤 템플레이팅 언어를 사용하는지, 심지어 HTML을 클라이언트 혹은 서버에 렌더링하는지도 따지지 않는다. 몇몇 웹 프레임워크는 개발자가 그들의 코드를 규정된 모델 레이어에 맞춰 배치하도록 장려하지만, 플라이트는 기존 DOM 모델에 맞춰 DOM 노드에 직접적으로 기능성이 매핑되어 조직되어 있다. 플라이트는 앵귤러(Angular)나 엠버(Ember)같은 몇몇 인기 자바스크립트 프레임워크만큼 배우고 사용하기 쉽지 않지만, 아키텍쳐상으로 막대한 유연성을 제공해 더 복잡한 애플리케이션 작성에 적합하다.