본문 바로가기

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

공개SW 소식

페북 PHP런타임 대체기술, 박스도 쓴다

OSS 게시글 작성 시각 2015-07-20 18:28:33 게시글 조회수 3042

2015년 07월 15일 (수)

ⓒ 지디넷코리아, 임민철 기자 imc@zdnet.co.kr


페북 HHVM로 전환 후 핵(Hack) 언어 도입도 검토


페이스북 서비스 전용 기술로 알려진 '힙합가상머신(HHVM)'이 유명 클라우드 스토리지 업체 '박스(Box.com)'에 도입됐다. 인터넷서비스 인프라 세계에서 오픈소스 프로젝트 HHVM의 존재감이 부각됐다. HHVM에서 돌아가는 페이스북의 PHP 대체 언어 핵에 대한 관심도 고조될 전망이다.


14일(현지시각) 페이스북은 박스 측 개발팀이 최근 HHVM 도입 경험기를 전했다며 그 내용을 페이스북의 개발자 대상 블로그 '코드(Code)'를 통해 공개했다. (☞링크)


HHVM은 페이스북이 웹사이트 구축에 애용하던 웹애플리케이션 프로그래밍 언어 PHP의 코드를 더 빠르게 실행할 수 있도록 만든 가상머신(VM)의 일종이다. (☞관련기사) 이후 페이스북은 PHP 대체 언어 '핵(Hack)'을 만들고 이 언어로 짠 코드 역시 HHVM 환경에서 구동되도록 했다. (☞관련기사)


페이스북은 당초 HHVM과 핵을 순전히 자사 인프라에 적용하기 위해 탄생시켰다. 실제 운영중인 시스템에서 어느정도 안정적으로 돌아가는 걸 확인한 뒤 오픈소스 프로젝트로도 선보였지만, 외부엔 어쨌든 페이스북 전용 기술이라는 인상을 줬다 이런 가운데 클라우드업체 박스에서 페이스북의 HHVM을 쓴다는 소식은 흥미롭다.


PHP런타임으로 서비스를 운영해 온 클라우드스토리지 업체 박스가 페이스북 오픈소스 플랫폼 HHVM을 도입했다. 이미지는 HHVM 도입 후 달라진 웹서버 인스턴스 구조 다이어그램. HHVM-C 코드를 업데이트하면 라우터가 경로를 HHVM-A로 바꾸는 식으로 최근까지 3가지 버전의 코드를 유지한다.

PHP런타임으로 서비스를 운영해 온 클라우드스토리지 업체 박스가 페이스북 오픈소스 플랫폼 HHVM을 도입했다. 이미지는 HHVM 도입 후 달라진 웹서버 인스턴스 구조 다이어그램. HHVM-C 코드를 업데이트하면 라우터가 경로를 HHVM-A로 바꾸는 식으로 최근까지 3가지 버전의 코드를 유지한다.


박스 측은 PHP 런타임 운영 환경에서 HHVM으로의 전환 작업이 쉬운 과정은 아니었지만 웹사이트 운영 및 개발 효율과 서버 인프라 비용 절감 측면에서 해 볼 만한 값을 했다는 평가를 내렸다. 주의 깊은 테스트를 진행했지만 서비스 가동 중단 없이 전체 전환 작업을 할 수 있었고 CPU 부하가 많은 PHP 애플리케이션에 믿기 어려운 수준의 처리속도 향상과 그밖의 이득을 안겨 줬다고 덧붙였다.


페이스북 블로그 포스팅에 따르면 박스 운영환경의 중추에 과거의 페이스북처럼 PHP라는 프로그래밍 언어가 있다. 박스는 여러 다양한 언어를 활용해 대규모 백엔드서비스를 운영하고 있지만 모든 서비스 리퀘스트는 PHP 웹애플리케이션과 상호작용을 수행한다. 박스의 PHP코드베이스가 75만줄을 넘고 개발 참여자가 150명 이상이라는 점이문제로 꼽힌다. 서비스가 코드 규모와 함께 성장할수록 속도는 느려지고 있었다.


박스가 오픈소스 프로젝트로 열려 있던 HHVM 도입을 고려하게 된 배경이다. 박스 개발팀은 과거에도 HHVM이 자사 인프라 웹애플리케이션 구동을 위한 기술로 검토했다가 부적절하다고 봤는데 최근엔 쓸만한 수준이 됐다고 판단했다. HHVM은 원래 PHP 코드를 더 빠르게 실행되는 C++ 언어 코드로 번역하는 목적에 맞춰 만들어졌는데, 그 역할이 이제 저스트인타임(JIT)컴파일러로 바뀐 결과다. JIT컴파일러는 PHP코드 덩어리를 실행이 빈번한 어셈블리 형태로 바꾸는 식으로 작동한다.


PHP런타임으로 서비스를 운영해 온 클라우드스토리지 업체 박스가 페이스북 오픈소스 플랫폼 HHVM을 도입했다. 이후 평균적으로 서버측 레이턴시가 40% 줄어드는 성능 향상 결과를 얻었다.

PHP런타임으로 서비스를 운영해 온 클라우드스토리지 업체 박스가 페이스북 오픈소스 플랫폼 HHVM을 도입했다. 이후 평균적으로 서버측 레이턴시가 40% 줄어드는 성능 향상 결과를 얻었다.


그렇다고 박스 개발팀이 HHVM을 도입하는 과정이 간단한 건 아니다. PHP의 코어 런타임에 방대한 함수, 컨피규레이션 설정, 클래스가 포함돼 있었기 때문이다. 이는 HHVM 환경으로 이식해야 할 PHP 기반의 수많은 익스텐션까지 모두 고려한 것도 아니었다. 박스 개발팀은 PHP와 HHVM 각각의 런타임 작동에서 상당수 차이점을 파악하는 작업을 했다.


박스 개발팀이 기존 인프라에 구축한 PHP애플리케이션 운영 환경과 HHVM의 운영에서 적절한 활용 방식간에는 2가지 근본적인 차이가 있었다. 첫째는 HHVM은 성능을 끌어올리기 위해 신규 코드를 투입했을 때 그에 적응하기 위한 '웜업(warmed up)'이라는 단계를 필요로 한다는 점. 둘째는 업그레이드를 쉽게 하는 동시에 메모리 유실을 방지하기 위해 정기적으로 HHVM을 재시동하는 게 좋다는 점.


박스는 이전가지 PHP 코드베이스로 사이트를 구축, 운영하면서 아파치 웹서버 인스턴스를 하나만 써 왔는데, HHVM 도입 결과 모든 서버 트래픽을 처리하는 인스턴스는 3개가 됐다. 하나는 현재 돌아가고 있는 애플리케이션의 모든 트래픽을 담당하고, 나머지 두 인스턴스는 '이전 버전'과 '이전의 이전 버전'을 담당하는 역할로 존재한다. 개발팀이 새로운 코드베이스를 배포시 라우터가 가리키는 가장 오래된 코드베이스용 HHVM 웹서버 경로를 새로운 코드베이스용 경로로 바꾸면 된다.


PHP런타임으로 서비스를 운영해 온 클라우드스토리지 업체 박스가 페이스북 오픈소스 플랫폼 HHVM을 도입했다. 이후 평균적으로 서버 CPU 부하가 절반 수준까지 줄어드는 결과를 얻었다.

PHP런타임으로 서비스를 운영해 온 클라우드스토리지 업체 박스가 페이스북 오픈소스 플랫폼 HHVM을 도입했다. 이후 평균적으로 서버 CPU 부하가 절반 수준까지 줄어드는 결과를 얻었다.


박스의 모든 웹애플리케이션 로그와 모니터링 시스템에도 HHVM에 따른 변화가 있었다. 박스는 내부 데이터베이스에 아파치 웹서버 오류 로그 중 모든 고유 PHP 오류를 관리해 왔는데, 이 시스템을 HHVM의 오류 로그까지 소화할 수 있는 형태로 확장했다. HHVM 기반 배포 환경에서 발생하는 새로운 오류가 앞서 PHP 오류 데이터베이스에 기록된 유형의 것인지 판단할 수 있도록 만들었다는 설명이다.


HHVM를 도입한 박스의 선택은 옳았을까? 서비스 체감 성능 면에서는 성공적이란 평가다. 박스 개발팀이 제시한 벤치마크 결과 그래프를 보면 HHVM은 레이턴시를 이전보다 꽤 낮춰 준 것으로 나타난다. 평균적으로 HHVM은 서버측 전반의 레이턴시를 40% 가량 줄여 줬는데, 백엔드서비스 응답 대기 시간과 여러 다른 서비스 호출 요청을 포함한 결과라는 점을 감안할 때 매우 인상적인 수치라는 설명이다.


박스 데이터센터 인프라의 서버 CPU도 일을 제법 덜었다. HHVM 코드를 실행하는 서버의 CPU 점유율이 평균적으로 절반 수준까지 떨어진 것으로 나타났다. 이는 박스 서비스 운영 담당자 입장에서 단순 계산으로 이전의 2배에 달하는 프론트엔드 처리 성능을 거저 얻은 셈이 된다. 세계 각지 수많은 이용자를 상대로 서비스를 제공하는 회사 입장에선 막대한 전력, 서버, 데이터센터 상면 등 비용 절감 효과를 얻은 것이다.


박스는 서비스 인프라를 이왕 HHVM으로 전환한 김에 기존 PHP 코드베이스에 페이스북의 프로그래밍 언어 핵까지 전면 도입하는 것도 검토 중이다.




※ 본 내용은 (주)메가뉴스(http://www.zdnet.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒ 지디넷코리아. 무단전재 및 재배포 금지


[원문출처 : http://www.zdnet.co.kr/news/news_view.asp?artice_id=20150715091616]

맨 위로
맨 위로