페이스북의 순방문자가 야후!를 추월했다는 기사를 본 게 엊그제다. 페이스북 성장세가 대단하기는 한가보다. 근데 얘네는 DBA가 두명이라면서 트래픽은 야후끕이라니, 맨파워 역시 대단한 것 같다. 요즘 뒤적거린 것들에서도 페이스북이 서비스를 지탱하기 위해 개발한 Cassandra라던가 memcached를 많이 활용한다는 걸 소개했었는데, 얘들이 거기에서 그치지 않고 PHP 코드를 최적화한 C++코드로 변환하고, 이걸 컴파일한 다음 전용의 웹서버에 탑재해 돌리는 솔루션을 개발했다. 그리고 소스 공개한단다. 소식은 여기서.

서비스를 더 잘 하기위해 새로운 기술을 연구하는 모습이 참 보기좋다. 이게 너무 지나치면 Over Engineering이 될 수도 있고, 게을리하면 기술이 사업 발목잡는 형국이 될 수 있기에 균형을 잘 잡는것도 참 보기좋다.

그나저나 PHP가 C로 만들어지기는 했지만, C++하고의 차이는 꽤 큰 편인데 이를테면 C++은 Strong type인데 반해 PHP에서는 변수에 아무거나 집어넣을 수 있으니까. 심지어 런타임에 함수도 만들고 eval()같은 것도 있고. 그래서 HipHop 개발팀이 고민을 많이 했나보다. 머 암튼 C++는 내가 잘 모르니 너무 아는척을 했다간 망신을 당할 위험이 있다. 고로 페이스북이 발표한 걸로 정리를 해보면.

  • 2년동안 개발했는데, 주력 멤버는 3명 총 7명인가 8명의 팀인 것 같다. (동영상 보고 추측)
  • 최근 6개월간 페이스북의 실 서비스에 적용하고 있으며 전체 트래픽의 90%가 HipHop을 통해 서비스된다고.
  • PHP를 직접 컴파일하는게 아니라, 똑같은 로직을 가진 C++코드로 바꾼 다음 g++로 컴파일한다.
  • 이 HipHop의 주된 이점은 CPU 점유율을 낮추는거다. (당연한가?)
  • 웹페이지의 경우 같은 트래픽일 때 CPU 사용이 50%감소했고, API는 2배의 트래픽을 감당하면서도 30% 감소했다.
  • PHP의 확장기능(extensions)은 어떻게 되느냐? 페이스북이 쓰는 대부분의 extension을 지원하도록 HipHop팀이 손을 봤고, 몇몇 Thread-safe하지 않은 확장기능은 직접 수정했다고 한다.
  • eval()이나 create_function()은 아쉽지만 지원하지 않는다.
  • 아직 소스가 공개되지는 않은 것 같다. 여기를 통해 확인할 수 있다.

(2/5 추가) 저녁때 공개한다던 사람들이 아직 감감 무소식이다. 뭔가 사정이 있겠지. 그런데 소스가 공개되더라도 즉시 다른 서비스에 적용하기에는 무리가 있을거다. 6개월 실전에 돌려봤다곤 하지만 페이스북 뿐이고, 여러가지 문제가 생겼었겠지만 힙합 개발팀이 잘 해결해왔겠지. 그래도 궁금하다. 왜 얼른 공개가 안되나?

저작자 표시
신고
  1. Commented by BlogIcon 가야태자 at 2010.12.31 01:32 신고

    헉 지금은 공개 되어 있으려나요?