본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

구글 고(Go)의 위력을 입증하는 오픈소스 프로젝트 10가지

OSS 게시글 작성 시각 2014-11-18 21:17:45 게시글 조회수 4499

2014년 11월 13일 (목)

ⓒ CIO Korea, Serdar Yegulalp | InfoWorld


아직 2개월 남짓 남았지만, <IT월드>는 현재까지 진행된 클라우드 업체 인수 합병 가운데 주목할만한 몇 가지를 정리해 봤다. 클라우드 시장의 주요 M&A를 보면, 오픈소스 클라우드에 대한 뚜렷한 경향을 확인할 수 있다. 첫 번째로 언급해야 할 것은 전통적인 기업 소프트웨어 업체들의 태도다. 그들은 오픈스택(OpenStack)의 잠재력에 지속적으로 관심을 드러내고 있으며, 자사에 필요한 전문성과 기술을 확보하기 위해서라면 아무리 많은 비용도 기꺼이 지불할 용의를 가지고 있다.

두 번째 특징은, 이러한 거대 IT기업들의 관심에도 오픈스택이 실제로 채택되는 일은 일부의 바램처럼 빠른 속도로 이뤄지지 않는다는 점이다. 그리고 그 결과는 여러 신생벤처들의 인수 행렬로 이어졌다. 자체적으로 시장을 형성하고 확산을 이끌어내는데 한계를 경험했기 때문이다. 올해는 클라우드스케일링(Cloudscaling)과 같은 선도적 기업들마저 인수 대상에 오르며 시장 전문가들을 놀라게 한 한 해였다.


도커(Docker)
도커는 지금까지 가장 성공한 고 프로젝트로 평가 받고 있다. 이 소프트웨어 컨테이너화 기술은 채 1년이 안 되는 기간에 고가 대형 분산형 소프트웨어 프로젝트에 적합함을 증명해 보였다. 도커 팀이 고를 선호한 이유는 종속성이 없는 정적인 컴파일링, 우수한 표준 라이브러리, 완전한 개발 환경, 문제를 최소화 하면서 여러 아키텍처를 구축할 수 있는 기능 때문이었다.

프로젝트: 도커(Docker)
GitHub: https://github.com/docker/docker



퀴베르네시스(Kubernetes)
도커는 고 언어로 개발이 됐다. 이는 도커를 확대하는 중요 프로젝트 또한 고 언어에 기반을 두는 것이 합당하는 의미다. 구글의 도커 관리 프로젝트인 퀴브르네시스는 도커 네트워킹 프로젝트인 위브(Weave), 클러스터 관리 시스템인 쉽야드(Shipyard)와 함께 고 프로젝트에 속한다.

프로젝트: 퀴베르네시스(Kubernetes)
GitHub: https://github.com/GoogleCloudPlatform/kubernetes



Etcd & Fleet
코어OS(CoreOS0는 리눅스를 느슨하게 연동된 컨테이너들로 탈바꿈시키기 위해 도커를 이용한다. 리눅스 패키지 관리에 불가결한 복잡한 종속성 문제를 피하는 방법이다.

코어OS가 이런 목표를 달성하는데 도커를 이용하는 것은 당연하다. 코어OS의 기본 서비스인 etcd와 fleet 모두 Go로 개발됐기 때문이다. Fleet은 코어OS 클러스터를 하나의 init 시스템에서 공유하는 것 같이 처리하며, 분산형 키 값 저장소인 etcd는 도커 애플리케이션과 코어OS 인스턴스의 설정을 동기화 처리한다.

둘 모두 고에 기반을 두고 있는데, 뛰어난 크로스 플랫폼 지원, 작은 바이너리, 커뮤니티 구축 등의 장점이 있기 때문이다.

프로젝트: Etcd & Fleet
GitHub: https://github.com/coreos/etcd



데이스(Deis)
도커가 피라미드의 바닥이라면 코어OS는 중간이고, Deis는 꼭대기에 해당한다고 말할 수 있다. 개발자들은 오픈소스 구성요소로 헤로쿠(Heroku)식 PaaS를 가볍게 구축할 수 있다. 도커 컨테이너에 집어 넣을 수 있는 것이라면 뭐든지 배치가 가능하다. 기존의 헤로쿠 역시 마찬가지다.

앞서 언급한 구성요소들로 전체 패키지를 구성할 수 있다. 컨테이너 구조를 위한 도커, OS 계층인 코어OS, Deis 모두 고에 기반을 두고 있다 (API 서버는 파이톤을 일부 사용).

프로젝트: Deis
GitHub: https://github.com/deis/deis



플린(Flynn)
Y Combinator 지원 프로젝트인 Flynn은 Deis와 비슷한 개념 및 장점을 상당수 공유하지만, 미묘한 차이가 있다.

Flynn은 Deis와 마찬가지로 헤로쿠 빌드팩과 도커파일(Dockerfile)을 이용할 수 있으며, 직접적으로 기반을 두지는 않지만 코어OS 요소를 이용해 구축한다.

그러나 Deis와는 달리 2계층 시스템 아키텍처를 갖고 있다. 하위 계층은 컴퓨팅 클러스터를 위한 확장형 스케줄링 시스템인 구글 오메가(Google Omega) 프로젝트의 영향을 받았으며, 상위 계층은 실제 배치 및 유지보수를 처리하도록 설계되어 있다. 두 계층 모두 고에 기반을 두고 있다.

프로젝트: Flynn
GitHub: https://github.com/flynn/Flynn



라임(Lime)
고에는 분산형 서버 애플리케이션을 보완하는 우수 기능들이 많기 때문에 서버 및 클라우드 지향형 프로젝트가 중시되고 있는 것은 당연하다 할 수 있다. 그러나 고에 기반을 둔 데스크탑 애플리케이션도 부상하기 시작한 상태로, 라임이 그 중 하나다.

라임은 높은 호평을 받으면서 널리 이용되고 있는 서브라임(Sublime) 텍스트 에디터를 재창조한 것이다. 이 에디터는 많은 장점이 있지만, 오픈소스가 아니어서 많은 사람들이 아쉬워하고 있다. 라임은 아직 초기 단계로 생산 단계에 사용할 수 없다. 그러나 깃허브의 스타(stars) 점수가 1만이며, 약 800개의 게시글이 있는 점을 감안하면 빠른 발전이 예상된다.

프로젝트: Lime
GitHub: https://github.com/limetext/lime



레벨(Revel)
특정 컴퓨터 언어가 세상에서 실제 관심을 끌기 시작하고 있음을 시사하는 신호 중 하나는 개발자들이 웹 프레임워크 같은 많이 쓰는 툴을 개발하는 것이다. 레벨은 고 언어로 개발된 생산성이 높은 풀스택 웹 프레임워크다. 라우팅, 캐싱, 파리미터 해석, 탬플릿화 등 원하는 기능 모두를 갖추고 있다.

또 다국어 지원, 테스트 프레임워크, 모든 요소를 분해하지 않고도 레벨에 독자적인 요청 처리 시스템(필터링)을 추가시킬 수 있는 모듈식 설계 방식을 지원하고 있다. 레벨은 기술적으로는 생산 단계에서 사용할 수 있을 정도로 개발이 되어 있지만, 레벨 팀은 몇 가지 부분을 더 완성한 이후에야 가장 중요한 1.0 모니커를 적용할 계획이다.

프로젝트: Revel
GitHub: https://github.com/revel/revel



인플럭스DB(InfluxDB)
인플럭스DB는 외부 종속성이 없는 분산형 타임 시리즈 데이터베이스다. '타임 시리즈(time series)'란 인플럭스DB가 주로 매트릭스나 이벤트를 처리하며, 이를 실시간 분석하는 역할을 한다는 의미다.

또 '외부 종속성이 없다'는 인플럭스DB를 사용하기 위해 다른 소프트웨어를 도입할 필요가 없다는 의미다. 간단한 SQL 언어로 JSON과 쿼리를 제출할 수 있는 REST 콜을 이용해 데이터베이스에서 데이터를 읽거나, 여기로 데이터를 쓸 수 있다. 더 나아가 regexes도 가능하다. 인플럭스DB는 높은 탄력성과 수직 확장성을 갖추고 있으며, 이런 기능을 쉽게 구현하기 위해 고 언어를 선택했다.

프로젝트: InfluxDB
GitHub: https://github.com/influxdb/influxdb



싱크띵(Syncthing)
싱크띵은 데스크톱과 서버 프로젝트 모두에 적용이 된다. 이론적으로 두 용도 모두에 유용하다. 그러나 데스크톱 프로젝트로 지칭하고 싶다. 고가 데스크탑 애플리케이션용으로도 유용하다는 점을 강조하기 위해서다.

싱크띵은 여러 디바이스간 동기화 폴더를 만드는 프로토콜을 구현하고 있다. 가장 최근 프로젝트는 비트토렌트 싱크(BitTorent Sync)가 있다.

싱크띵에서 역시 고의 전형적인 장점인 간소함, 속도, 동시 개발성, 크로스 플랫폼으로 쉽게 배치 등의 장점이 싱크띵으로의 도입에 근거를 제시했다. 파이톤이나 C로도 싱크띵 클라이언트를 구축할 수 있지만, 고 버전은 크로스 플랫폼이 목적이다.

프로젝트: Syncthing
GitHub: https://github.com/syncthing/syncthing



곡스(Gogs ; Go Git Service)
자신의 하드웨어와 통제 아래 깃허브 같은 깃 서비스를 호스팅 하고 싶은가? 곡스(Go Git Service)는 이런 욕구를 충족하기 위해 개발이 됐으며, 여러 중요 OS 플랫폼(리눅스, 윈도우, 맥 OS X)을 지원하는 것이 특징이다. 필요한 것은 깃 사본, 데이터베이스(MySQL, PostgreSQL, SQLite 3 등을 지원), 바이너리만 있으면 된다.

프로젝트: Gogs (Go Git Service)
GitHub: https://github.com/gogits/gogs




※ 본 내용은 한국IDG(주)(http://www.itworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒITWORLD. 무단전재 및 재배포 금지



[원문출처 : http://www.ciokorea.com/slideshow/22991]

맨 위로
맨 위로