제공 :
한빛 네트워크
저자 : Josh Lockhart
역자 : 조우진
원문 :
Facebook’s Hack, HHVM, and the future of PHP
Hack이란 무엇이며 PHP의 미래에 Hack은 어떤 의미를 가지는가?
페이스북은 최근에 PHP와 유사하게 동작하는 새로운 프로그래밍 언어인
Hack을 선보였다. 그러나 그 이면에는 정적 타입, 제네릭스, 기본 컬렉션과 같은 다양한 기능을 포함하여 PHP 개발자가 오랫동안 요구해왔던 수많은 요소가 있다. 구문을 제외하면, Hack은 PHP가 아니다. Hack은 기존의 PHP Zend 엔진의 경쟁자인 페이스북의 HipHop 가상머신 (HHVM) 상에서만 실행된다.
왜 페이스북은 Hack을 만들었을까?
페이스북 내부 코드의 대부분은 초기에 PHP로 작성되었다. PHP 언어가 학습 및 사용이 쉽기로 널리 알려졌기 때문에 페이스북은 빠르게 새로운 PHP 개발자를 수급할 수 있다. 물론 당연히 페이스북 PHP 코드의 대부분은 운영서버로 배포되기 전에 C의 파생 코드로 변환될 것이다. 핵심은 페이스북이 새로운 인재를 유치하고 개발 효율성을 증가시키기 위해 PHP 언어에 크게 의존한다는 점이다.
엄격한 타입
불행히도, PHP는 페이스북 정도의 규모에서 잘 작동하지 않을 수 있다. PHP는 느슨한 타입의 언어이기에 타입과 관련된 오류는 실행 전까지 알 수 없다. 이는 페이스북이 강제로 타입 확인을 하기 위해서 초기에 더 많은 테스트를 작성하거나 출시 후 실행 오류를 리팩토링하는데 더 많은 시간을 쏟아야 함을 의미한다. 이 문제를 해결하기 위해 페이스북은 엄격한 타입과 함께 반환 타입을 실행 시 강제하는 부분을 Hack에 추가했다. 엄격한 타입 확인은 타입과 관련된 많은 단위 테스트의 필요성을 무효로 하고, 개발자들이 개발 과정에서 빠르게 타입 관련 오류를 잡을 수 있도록 돕는다.
즉각적인 타입 검사
개발 프로세스와 오류 검출 과정을 더 쉽게 하려고, 페이스북은 자사의 HHVM 엔진에 타입 검사 서버를 포함하고 있다. 이 서버는 로컬에서 실행되면서 Hack 코드를 쓰인 그대로 모니터링한다. 개발자의 코드 편집기와 IDE는 코드를 개발하는 동안 구문이나 타입 관련 오류를 즉시 보고할 수 있는 타입 검사 서버를 사용할 수 있다.
기존의 PHP 코드는 어떻게 되는가?
대부분의 기존 PHP 코드는 페이스북의 HHVM 엔진에서 실행된다. 이는 페이스북의 현재 코드베이스의 많은 부분이 기존의 PHP 코드이기 때문에 당연한 일이다. 다만, Hack은 기존의 PHP와 동등하게 모든 것이 구현된 것이 아니므로 몇 가지 예외가 있다. 지원되지 않고 남아 있는 몇 가지 기능들로, 예를 들면 variable variables 등과 Zend 확장이 있다. 이에 대해 염려할 필요가 없는 것은 HHVM 이후의 개발 버전이 가능한 한 빨리 Zend 엔진과
optimal parity를 지원하고자 최선을 다하여 진행 중이다.
또한, 페이스북은 기존의 PHP 코드에서 점진적으로 마이그레이션 할 목적으로 Hack 언어를 만들었다. PHP 클래스를 Hack 클래스로 변환하려면, 선두의
그러면 PHP가 죽었다는 뜻인가?
Hack이 정말 좋다면, PHP는 오래가기 어렵다는 뜻은 아닐까? 그렇기도하고 아니기도 하다. PHP Zend의 전통적인 분위기는 PHP "내부" 위원회가 관리한다. 새로운 기능은 위원회 회원들이 제안하여 투표를 진행한다. 위원회가 지니는 고유한 절차적 특성으로 인해 PHP의 발전과정은 일부에서 바라는 것보다 느리다. 또한 위원회 내부의 토론과 설명할 수 없는 투표 결과에 대해서도 공개적으로 인식하고 있다. 이 부분이 PHP의 공공성을 장려해주지 않는 점이다. 하지만 긍정적인 면에서, PHP 개발은 100% 피드백, 동료 평가, 새로운 기능에 대한 제안에 공적으로 열려 있다.
그럼에도 Hack이 좋다. 정말로 좋다. 심지어 나는 내 일상적인 PHP 업무도 Hack과 HHVM 기반으로 시작할까 하는 유혹을 받는다. Hack은 기존의 PHP가 결코 이루지 못할 많은 유용한 기능을 가지고 있다. 페이스북의 HHVM 엔진은 Zend 엔진보다 성능이 뛰어나며, 지속적으로 HHVM 엔진을 개선시키기 위한 내부 개발자가 충분히 넉넉하게 있다.
이러한 사실이 PHP Zend 엔진이 사라질 것을 의미하지 않는다. Zend 엔진과 HHVM 엔진은 마치 Ruby 엔진의 plethora 사례와 같이 공존할 수 있고, 그렇게 될 것이다. 경쟁은 좋은 것이며 나는 Zend와 HHVM 모두가 서로의 장점으로부터 좋은 영향을 얻기를 바란다.
명백한 사실은 페이스북은 단지 자사의 이익을 위해 Hack과 HHVM에 대해 매우 많은 관심을 가진다는 점이다. 그러나 우리 PHP 개발자는 이제 Hack과 HHVM이 출시되어 오픈 소스화되면서 페이스북의 고된 노력의 혜택을 얻을 수 있다. 그러면 왜 나는 아직 Hack과 HHVM으로 풀타임 전환하지 않을까?
페이스북이 책임을 지는가?
Hack은 페이스북의 산물이다. 나는 Hack이 공개적 피드백을 받을 수 있도록 최근에 오픈 소스로 공개되었다고 믿지만, 그것은 상당수 페이스북의 엔지니어에 의해 작성된 것이다. 따라서 Hack과 HHVM은 여전히 페이스북의 지속적인 참여와 투자에 크게 의존한다. 만약 페이스북에 문제가 생기거나 Hack을 관리하는 것을 멈춘다면, Hack과 HHVM은 어려움에 빠질 수 있다. 이것이 내가 Hack을 공부하거나 기존 코드를 Hack으로 포팅하는데 너무 많은 시간을 들이는 것을 주저하는 확실한 이유이다.
다행히, 이러한 부분이 매우 중요한 문제라는 것을 인식하고 Hack과 HHVM의 기술이 밀접하게 페이스 북의 미래와 결부되지 않도록 Hack 및 HHVM의 공개적 관리(Open governane)를 추구하고 있는 페이스북의 내부 사람들이 있다.
나도 그렇게 되기를 희망한다.유일한 문제는 "언제" 그렇게 할 것인가이다.
이 주제는 따라가기에 좋다. 오늘 아침에 나는 트위터에서 동료 PHP 개발자들과 이 주제를 논의했다. 일부는 Hack 및 HHVM의 서드파티 참여가 대부분의 위원회처럼 개발 진행을 느리게 만들것이라고 우려했다. Hack과 HHVM은 현재 수많은 새로운 기능과 많은 PHP 개발자들이 지금까지 꿈꿔왔던 개선을 위해 엄청난 속도로 박차를 가하고 있다. Hack과 HHVM을 어떻게, 어디서, 그리고 누가 관리할지에 대한 성급한 결정을 하기 전에 몇 가지 주의 깊은 법적 절차가 대기 중이다.
만약 페이스북에 3년 혹은 4년 사이에 Hack에 대한 흥미를 잃어버리면 어떻게 됩니까?
미래
어떤 형태로든 Hack과 HHVM은 PHP의 미래이다. Hack과 HHVM을 두고 떠다니는 많은 망설임들은 페이스북이 더 좋은 방향으로 장기적으로 공개관리(Open Government) 방식으로 움직이면서 자연스럽게 해결될 수 있을 것이라고 믿는다. 당신은 Hack과 HHVM 학습을 시작해야 할까요? 네
***
조쉬 록 하트는 PHP 기반의
Slim Framework를 만들었다. 그는 또한
PHP The Right Way라는 최상의 연습과 양질의 정보 제공을 독려하기 위한 PHP 커뮤니티를 만들어 관리중이기도 하다. 조쉬
New Media Campaigns의 Senior개발자이고, 노스 캐롤라이나 Carrboro에서 풀 서비스 웹 디자인, 개발 및 마케팅 대행을 하고 있다.