본문링크 : http://www.itworld.co.kr/news/83057?utm_source=newsletter&utm_medium=email&utm_campaign=ITW_NL_20130729





페이스북이 웹 프로그래밍 언언인 PHP를 더 빨리 구동할 수 있도록 하기 위한 또 한 단계의 진전을 이루어냈다. PHP 가상머신을 개발한 것이 그것인데, 페이스북은 대규모 시스템 환경에서는 PHP를 그냥 구동하는 것보다 9배 이상 빠르다고 설명했다.


페이스북의 엔지니어링 책임자인 조엘 포바는 “우리의 목표는 PHP를 정말로, 정말로 빠르게 구동되게 만드는 것”이라고 강조했다. 페이스북은 HHVM(HipHop Virtual Machine)이란 이름의 이 가상머신을 올해부터 자사 서버 전반에 걸쳐 적용해 왔다.


HHVM이 페이스북이 PHP를 더 빨리 구동하기 위해 시도한 첫 번째 작업은 아니다. PHP와 같은 번역 언어는 일반적으로 소스 코드를 프로세서에서 직접 실행하기 때문에 실행 전에 기계어로 컴파일되는 C나 C++보다 느린 것으로 알려져 있다. 페이스북은 여전히 PHP를 고수하고 있는데, 자사의 웹 프로그래머 대다수가 가장 잘 알고 있다는 이유 때문이다.


하지만 페이스북에 대한 수요가 폭증하면서 페이스북은 힙합(HipHop)이란 컴파일러를 고안해 냈다. 이 컴파이얼러는 PHP 코드를 C++로 번역해주는 것으로, 이를 통해 페이스북은 상당한 수준의 성능 향상 효과를 얻을 수 있었다.


수년 동안 힙합을 통해 서비스 성능을 개선해 온 페이스북은 한편으로 동적으로 생성되는 웹 페이지를 자사 수십 억 명 사용자에게 더 빠르게 전달할 수 있는 다른 방법을 고민해 왔다. 포바는 “우리의 성능 전략은 바닥을 드러낼 참이었다”고 인정했다.


HHVM은 페이스북이 취한 다음 단계의 전략이다. 3년여에 걸친 개발을 통해 완성된 HHVM은 실질적으로 JVM(Java Virtual Machine)과 동일한 원리로 동작한다. HHVM에는 JIT(just-in-time) 컴파일러가 있어 필요할 때에 사람이 읽을 수 있는 코드를 기계가 읽을 수 있는 바이너리 코드로 변환해 준다. 기존에 사용하던 힙합(현재는 이름이 HPHPc로 바뀜)은 이제 페이스북에서는 퇴역한 상태이다.


이 JIT 접근법은 가상머신이 좀 더 똑똑한 결정을 내릴 수 있도록 해준다. 예를 들어, MySQL 데이터베이스 데이터 행을 읽어달라는 요청이 들어 왔을 때, HHVM은 즉석에서 어떤 데이터에 대한 요청인지를 파악할 수 있다. 그러면 즉석에서 이런 특정 종류의 데이터를 처리하는 데 가장 적합한 코드를 생성하거나 호출하는 것이다.


포바는 “이전 힙합으로 할 수 있는 최선의 작업은 페이스북 코드 기반을 전체를 분석해 이를 추론하고 추론을 기반으로 코드를 특정 범위로 한정하는 것이었다. 하지만 모든 추론을 다 맞을 수는 없다. 코드 중에는 쉽게 결론을 내리거나 추론할 수 없는 것들이 많다”고 설명했다.


포바는 HHNV이 기존 HPHPc보다 2배, 그리고 일반 PHP 코드보다는 9배 가까이 더 빠를 것으로 추정했다.


페이스북은 다른 PHP 기반 웹 사이트에서도 사용할 수 있도록 HHVM 코드를 GitHub에 올렸다.


하지만 HHVM은 대규모 PHP 코드를 처리하는 데 최적화되어 있다. 포바는 일반적인 규모의 웹 사이트에서 HHVM을 사용하면 속도 향상 효과는 5배 정도에 그칠 것이라고 덧붙였다.


또한 포바는 “만약 PHP를 힙합 상에서 구동한다면, 성능의 제약 요소는 CPU 실행 시간이 아니다. 문제는 시스템이 데이터베이스나 멤캐시와의 대화에 너무 많은 시간을 소비한다는 것”이라고 강조했다.  editor@itworld.co.kr

+ Recent posts