용 영 환
PHPKorea
마켓컬리
옐로모바일 정글피플
네이버
태터앤컴퍼니
카페24
xenonix.com
HHVM 서비스 적용은
정글피플 개발본부 팀원들과
함께 했습니다.
HHVM를 고민하게 된 이유
인터넷 서비스를 보다
원활하게 제공하는 방법
1. 서버 사양을 좋게 한다.
2. 서버 수를 늘린다.
3. 서버 효율을 높인다.
3.
서버를 보다 효율적으로
사용하고 싶었다.
비용
이용자수
서버 효율,
결국 언젠가는
고민해야 할 문제.
Hack Lang과 HHVM,
페이스북에서
사용하고 있다는데
Hack을
사용하지 않은 이유
1. 언어적으로는 매우 좋으나
아직 성숙되지 않았다.
2. 맘에 드는 IDE가 아직 없다.
3. 개발환경 구축하기 어렵다.
그런데,
HHVM은 적용한 이유
1. PHP 5.5 이상을 100% 지원
2. 개발환경을 바꿀 필요 없다.
3. 성능이 좋다.
FastCGI support
JIT ( just-in-time ) Compilation
https://www.chriswiegman.com/2011/10/fastcgi-vs-suphp-vs-cgi-vs-mod_php-dso/
Codeigniter, laravel, phpunit 등
100% 구동
http://hhvm.com/frameworks/
그럼,
우리는 HHVM을
얼마나 신뢰할 수 있는가
PHP + Zend PHP +HHVM
DBMS
Load Balancer
그런데!!!
공식 Prebuild Package 가
아직은 적다.
Ubuntu 14.04 / 14.10 / 15.04
Debian 7 / 8
https://github.com/facebook/hhvm/wiki/Prebuilt-Packages-for-HHVM
그래서, 이 외의 OS에서 구동하려면
직접 컴파일을 해야 한다.
https://github.com/facebook/hhvm/wiki/Building%20and%20Installing%20HHVM
컴파일이 오래 걸리긴 하지만
어렵지 않게 가능합니다.
PHP HHVM
math 1.274 sec. 0.403 sec.
stringmanipulation 1.311 sec. 0.747 sec.
loops 0.813 sec. 0.045 sec.
ifelse 0.639 sec. 0.093 sec.
PHP vs. HHVM 성능 테스트
스크립트 출처 : http://www.php-benchmark-script.com/
PHP 성능 테스트
HHVM성능 테스트
Session handler
Redis 와 memcached 지원
/etc/hhvm 아래에
php.ini
server.ini
php.ini
; php options
;session.save_handler = files
;session.save_path = /var/lib/php5
;session.gc_maxlifetime = 1440
session.save_handler = redis
session.save_path = “xxx.xxx.xxx.xxx:6379"
session.gc_maxlifetime = 1440
; hhvm specific
hhvm.log.level = Warning
hhvm.log.always_log_unhandled_exceptions = true
hhvm.log.runtime_error_reporting_level = 8191
hhvm.mysql.typed_results = false
server.ini
; php options
pid = /var/run/hhvm/pid
; hhvm specific
hhvm.server.port = 9000
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
HHVM 실행은 가볍게
/etc/init.d/hhvm start
Apache Httpd 에서
ProxyPassMatch
^/(.+.(hh|php)(/.*)?)$
fcgi://127.0.0.1:9000/www경로/$1
PHP + Zend PHP +HHVM
MariaDB
Load Balancer
Redis
Sesseion 공유
young@phpk.org

XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기

Editor's Notes

  • #4 서버 사양을 올리는 건 비용적 한계가 있다. 회사에 돈이 많다면 이 방법이 매우 효과적일 수 있다. 분산처리를 고민하지 않아도 되기 때문에 개발이 수월하다. 일반적으로 대응하는 방법이다. L4 나 소프트웨어 로드밸런서를 통해 분산처리가 쉬워지면서 스타트업에서도 서버 확장을 많이 적용하고 있다. 허나, 이것도 비용의 한계가 생긴다. 1번과 2번을 대응하고 나서… 비용적, 공간적 한계게 다다를 무렵 고민하게 되는 방법이기도 하다. 서버의 효율을 높여서 물리적 서버의 수를 줄인다거 해서 비용을 낮춘다.
  • #6 서버 사양을 올리는 건 비용적 한계가 있다. 회사에 돈이 많다면 이 방법이 매우 효과적일 수 있다. 분산처리를 고민하지 않아도 되기 때문에 개발이 수월하다. 일반적으로 대응하는 방법이다. L4 나 소프트웨어 로드밸런서를 통해 분산처리가 쉬워지면서 스타트업에서도 서버 확장을 많이 적용하고 있다. 허나, 이것도 비용의 한계가 생긴다. 1번과 2번을 대응하고 나서… 비용적, 공간적 한계게 다다를 무렵 고민하게 되는 방법이기도 하다. 서버의 효율을 높여서 물리적 서버의 수를 줄인다거 해서 비용을 낮춘다.
  • #7 서버 사양을 올리는 건 비용적 한계가 있다. 회사에 돈이 많다면 이 방법이 매우 효과적일 수 있다. 분산처리를 고민하지 않아도 되기 때문에 개발이 수월하다. 일반적으로 대응하는 방법이다. L4 나 소프트웨어 로드밸런서를 통해 분산처리가 쉬워지면서 스타트업에서도 서버 확장을 많이 적용하고 있다. 허나, 이것도 비용의 한계가 생긴다. 1번과 2번을 대응하고 나서… 비용적, 공간적 한계게 다다를 무렵 고민하게 되는 방법이기도 하다. 서버의 효율을 높여서 물리적 서버의 수를 줄인다거 해서 비용을 낮춘다.