1. 오픈소스 프로그래밍 언어 go
구글이 개발한 오픈소스 프로그래밍 언어 '고'(Go)는 불과 5년 만에 커다란 성과를 거뒀다. 가볍고, 빠르게 컴파일링 할 수 있는 고는 등장 이후 얼리어답터(Early adopter)들로부터 큰 관심을 받았다. 간편히 동시에 애플리케이션을 프로그래밍해 (클라우드로) 배포할 수 있는 풍부한 라이브러리와 추상화 때문이었다.
그러나 프로그램 언어의 성공을 결정하는 진짜 척도는 개발자들이 이를 이용해 추진하는 프로젝트다. 고는 개발자 세계에서 자바(Java), 파이톤(Python), C/C++같은 입지를 갖고 있지 않다. 그러나 그 강점과 이익을 입증하는 프로젝트 기반을 쌓아가고 있다.
다음은 고를 이용하고 있으며, 이미 반향을 불러일으키거나 그럴 가능성이 높은 프로젝트 10가지다. 상당수는 다른 프로젝트를 기반으로 하고 있는 등 서로 관련이 있다. 여기에서 소개하는 프로젝트들은 깃허브(GitHub)에서 정보를 찾을 수 있다. 고가 실제 어떻게 활용되고 있는지 쉽게 확인할 수 있다는 의미다.
go의 성공사례
도커(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
곡스(Gogs ; Go Git Service) 자신의 하드웨어와 통제 아래 깃허브 같은 깃 서비스를 호스팅 하고 싶은가? 곡스(Go Git Service)는 이런 욕구를 충족하기 위해 개발이 됐으며, 여러 중요 OS 플랫폼(리눅스, 윈도우, 맥 OS X)을 지원하는 것이 특징이다. 필요한 것은 깃 사본, 데이터베이스(MySQL, PostgreSQL, SQLite 3 등을 지원), 바이너리만 있으면 된다.
프로젝트: Gogs (Go Git Service) GitHub:https://github.com/gogits/gogs