페이스북, PHP가 아니라 왜 '핵'인가?

일반입력 :2014/04/21 16:29    수정: 2014/04/21 16:29

페이스북이 최근 공개한 오픈소스 프로그래밍 언어 '핵'(Hack) 확산을 위해 발벗고 나섰다. 내부 핵심 인프라 기술 가운데 하드웨어(HW)에 이어 소프트웨어(SW) 영역까지 외부 개발자들과 함께 발전시키겠다는 메시지가 과연 호응을 얻을지 주목된다.

페이스북은 자사 서비스용 애플리케이션(이하 '앱')을 PHP로 만들 때보다 버그가 생길 가능성을 낮추고 더 빠른 속도로 개발과 검증을 하기 위해 핵을 개발해 공개했다. 내부 인프라에 돌아가던 앱을 PHP에서 핵 기반으로 대체해 왔는데, 그 작업이 거의 마무리 단계라고 최근 밝혔다.

페이스북은 지난 10일 '핵 데브 데이(Hack Dev Day)'도 열었다. 핵에 관심 있는 '외부' 개발자를 대상으로 한 첫 공식 행사였다. 내부 인프라에 관한 기술을 웬만하면 공개하지 않는 일반 기업들과 확연히 다른 인상을 줄 만한 자리였다. PHP 기술에 투자해 온 개발자와 기업들의 참여를 기대하는 모습이었다.

행사는 처음 외부인들을 대상으로 진행한 공식 행사 치곤 소규모로 열렸다. 페이스북에 따르면 행사장에 개발자 150여명이 참석했다. 하지만 2천여명이 이를 온라인에서 실시간으로 지켜봤다. 핵과 그 앱을 돌리기 위한 '힙합가상머신(HHVM)' 기술에 대한 주목도는 나쁘지 않아 보인다.

이날 행사는 순수하게 개발자들만을 대상으로 치러졌다. 사업적인 의미가 두드러지는 자리는 아니었다. 신제품이나 서비스 개발 계획과 같은, 일반 소비자를 위한 소식도 언급되지 않았다.

IT미디어들도 거의 주목하지 않았다. 이런 가운데 미국 지디넷이 지난 14일 보도를 통해 페이스북이 핵 프로그래밍 언어를 주제로 한 첫번째 개발자 행사를 통해 광범위한 오픈소스 커뮤니티를 확보하려고 애쓰고 있다고 평했다.

이날 제이 파리크 페이스북 엔지니어링 부사장은 우리는 사람들이 몇년 전에 이미 해결했으리라 여길만한 일들을 되짚어 (인프라) 스택에서 핵심이 되는 부분에 집중했다며 우리가 (개발자) 커뮤니티에 얘기하려는 것은, 지금의 페이스북을 움직이는 게 무엇인지다고 말했다.

그는 페이스북 인프라를 구성하는 코드 기반이 너무 광대해 지면서 내부 개발자들이 감당해야 하는 부담도 점점 커져 왔다고 설명했다. 내부 역량만으로 코드 규모와 그에 따른 취약점 증가에 필요한 생산성을 갖추면서 제때 감당하기 어렵고, HHVM같은 기술적인 조치만으로 개선 가능한 한계에 달했다는 진단이다.

이에 파리크 부사장은 페이스북은 '안팎에서 더 나은 공조'가 이뤄질 수 있도록 오픈소스 프로젝트를 둘러싼 더 광범위한 커뮤니티를 원한다고 밝혔다. 이는 페이스북이 현존하는 대규모 인프라를 구축하기 위해 먼저 HW 측면에서, 그리고 이제 SW를 통해서 오픈소스 커뮤니티의 힘을 얻고자 한다는 뜻을 내비친 것이다.

그간 페이스북은 '오픈컴퓨트프로젝트(OCP)'라는 이름으로 자체 데이터센터 인프라 HW 솔루션을 직접 설계하는 활동을 주도해 왔다. 핵 언어와 HHVM 관련 프로젝트는 이런 활동을 오픈소스 커뮤니티와의 공생 관계를 SW 영역으로 확장하려는 시도다. 외부 개발자들이 사내 인프라 구동을 위해 만든 핵심기술에 접근해 이를 활용하면서 함께 개선하는 방안을 찾아 보자는 취지다.

페이스북에서 핵 언어와 HHVM을 다루는 개발자들이 직접 나서 프리젠테이션을 진행했다. 이들은 핵의 '그래듀얼 타이핑'과 함수형, 비동기적 언어 특성, 라이브러리와 PHP 개발자를 위한 변환기법, HHVM의 확장성과 PHP 프레임워크간 호환성 등 활용 가치, 핵과 PHP 앱 구동을 위한 성능, 웹기반 핵 개발도구를 보여줬다.

우선 핵을 만든 페이스북 개발자 가운데 한사람, 줄리앙 벨라주에가 핵의 높은 생산성을 소개하는 첫 순서를 맡았다. 그는 핵을 (프로그래밍 언어 가운데) 동적이고 정적인 타입(type)의 세계를 실제로 이어주는 다리라 묘사하며 핵이 빠른 반복적 피드백으로 유지보수를 해주면서 코드의 정확성을 제공한다고 강조했다.

핵 담당팀의 또다른 개발자 조시 워츠먼은 개발자들이 PHP 코드를 핵 기반으로 변환하는 방법을 시연했다. PHP에서 핵으로 코드를 변환하는 과정은 워츠먼이 페이스북의 인프라에 실제로 적용한 것이다. 그는 이 작업을 가급적 편히 처리할 수 있는 툴을 소개하고 자동화 절차 이후 수작업이 필요한 부분도 설명했다.

이어 HHVM과 핵 기반 애플리케이션을 클라우드 호스팅 플랫폼 '헤로쿠(heroku)'에서 구동하는 방안이 등장했다. 헤로쿠의 크레이크 커스틴스와 피터 반 하덴버그, 2명이 HHVM와 핵 구동을 위한 플랫폼용 최적화 패키지를 만들어 소개했고, 이를 소스코드 공유사이트 기트허브에 올려 놨다.

그 뒤 페이스북 엔지니어 드루 파로스키와 유진 레투치, 2명이 프로그래밍 언어로써 핵의 특징과 라이브러리 형태로 지원되는 애플리케이션프로그래밍인터페이스(API)의 개괄적인 정보를 전하고 관련 기술을 시연했다. 여기서 핵의 콜렉션, 람다, 비동기 등에 관한 특징은 참석자들에게 호응이 있었다.

역시 페이스북 엔지니어인 사라 골먼과 폴 타잔, 2명은 오픈소스 세계에서 HHVM가 어떤 위상을 차지하고 있는지를 2가지 근거로 설명했다. 회사의 HHVM용 오픈소스 PHP프레임워크 프로젝트가 대부분 단위테스트 100%에 도달했거나 근접했고, HHVM 확장기능 개발을 위한 'HHVM네이티브인터페이스(HNI)'가 만들어졌다.

관련기사

여섯번째 발표자인 페이스북의 에드윈 스미스는 HHVM가 핵과 PHP기반 코드를 얼마나 빨리 돌릴 수 있는지 보여줬다. 회사는 몇년전 PHP코드를 C++로 바꿔 실행하는 성능 향상 기법을 도입한 바 있다. 올해는 '바이트코드 최적화'나 '지역 컴파일'같은 기술을 동원해 처리 성능을 개선할 것이라는 목표를 제시했다.

끝으로 조엘 포바와 조엘 빌스, 2명이 페이스북 내부에서 'FBIDE'란 이름으로 써온 핵용 웹기반 통합개발환경(IDE)을 올 여름 말 외부 개발자에게도 선보일 계획이라 밝혔다. 이 도구는 자바스크립트 컴파일을 통해 클라이언트 쪽에서 처리되는 핵용 타입 체커, 자동완성과 통합 디버거와 빠른 파일 및 코드 찾기를 지원한다.