HHVM
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
HHVM(HipHop Virtual Machine)은 페이스북에서 개발한 PHP 및 Hack 언어용 가상 머신이다. PHP 실행 환경으로 시작했지만, 페이스북은 Hack 언어의 등장과 PHP 7의 성능 개선으로 인해 2018년 9월 PHP 지원을 단계적으로 종료했다. HHVM은 HHBC(HipHop ByteCode)와 JIT 컴파일을 사용하여 네이티브 코드를 생성함으로써 웹 서버의 처리량 증가와 지연 시간 감소를 가능하게 한다.
더 읽어볼만한 페이지
- 페이스북 소프트웨어 - 페이스북 메신저
페이스북 메신저는 2008년 페이스북 채팅으로 시작하여 2011년 독립적인 모바일 앱으로 출시된 페이스북의 인스턴트 메시징 서비스로, 다양한 기능 추가와 논란 속에서도 꾸준히 성장하여 2020년에는 메신저 룸을 출시하고 COVID-19 팬데믹 기간 동안 메시지 트래픽이 크게 증가했다. - 페이스북 소프트웨어 - 리액트 (자바스크립트 라이브러리)
리액트는 사용자 인터페이스 구축을 위한 자바스크립트 라이브러리이며, 선언적 UI, 컴포넌트 기반 개발, 가상 DOM 등의 특징을 가지고 있으며 JSX 문법을 사용하여 UI를 정의하고, 리액트 네이티브를 통해 네이티브 앱 개발에도 활용된다. - 가상 머신 - V8 (자바스크립트 엔진)
V8은 구글이 개발한 오픈 소스 자바스크립트 엔진으로, 자바스크립트 코드 실행 속도 향상을 위해 여러 컴파일러를 거쳐 크롬, 노드.js 등에서 활용된다. - 가상 머신 - X86 가상화
X86 가상화는 x86 아키텍처 기반 시스템에서 가상 머신을 구현하는 기술로, 소프트웨어 기반 가상화와 하드웨어 지원 가상화로 나뉘며, CPU 제조사의 가상화 확장 기술을 활용하여 가상 머신의 성능을 향상시킨다.
| HHVM - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 개발사 | 메타 플랫폼스 |
| 출시일 | 2011년 12월 9일 |
| 최신 버전 | 4.9.0 |
| 최신 출시일 | 2019년 6월 11일 |
| 개발 상태 | 개발 중 |
| 프로그래밍 언어 | PHP C++ OCaml Rust |
| 라이선스 | PHP 라이선스 젠드 라이선스 |
| 웹사이트 | 공식 웹사이트 |
2. 역사
HHVM은 페이스북에서 PHP를 C++로 변환하는 트랜스파일러인 HipHop for PHP(HPHPc) PHP 실행 엔진의 후속으로 만들어졌다.[10][11]
JIT 컴파일 원칙에 따라 HHVM은 먼저 실행되는 코드를 중간 언어인 고급 바이트코드인 HHBC로 변환한다. HHBC는 HHVM을 위해 특별히 만들어진 바이트코드 형식으로, 인터프리터와 JIT 컴파일러 모두에서 사용할 수 있다. 다음으로 HHVM은 HHBC를 x86-64 기계어로 동적으로(실시간으로) 변환하고, 변환된 바이트코드의 동적 분석을 통해 최적화한다. 마지막으로 x86-64 기계어를 실행한다.[1][10][12] 결과적으로 HHVM은 공통 언어 런타임(CLR, C# 언어용) 및 자바 가상 머신(JVM, 자바 언어용)을 포함한 다른 프로그래밍 언어에서 사용되는 가상 머신과 특정 유사성을 갖는다.
HHVM은 HPHPc에 비해 많은 이점을 제공하는데, 프로덕션 및 개발 환경 모두에서 동일한 실행 엔진을 사용하며, 두 환경 모두에서 실행 엔진과 HPHPd 디버거 간의 통합을 지원한다. HPHPc에서는 HPHPi(HipHop 인터프리터)를 개발 유틸리티로 별도로 유지 관리해야 했지만, HHVM에서는 그럴 필요가 없어졌다. 또한 4.0 이전 버전의 HHVM은 PHP 5.4의 공식 구현에서 정의된 전체 PHP 언어를 거의 완벽하게 지원하며, HPHPc에서 불가능했던 `create_function()` 및 `eval()` 구문도 지원한다.[13][14]
2. 1. HPHPc의 한계
HipHop for PHP(HPHPc)는 성능 향상의 정체, PHP 언어의 모든 기능을 지원할 수 없는 근본적인 한계, 개발 및 배포 프로세스의 어려움 등 여러 가지 문제점을 안고 있었다.[10][35] 특히, HPHPc는 `create_function()`이나 `eval()`과 같이 동적으로 코드를 생성하고 실행하는 기능을 지원하지 않아 일부 PHP 응용 프로그램과의 호환성 문제가 발생했다.[13][14]2. 2. HHVM의 개발 및 도입
HipHop for PHP(HPHPc)를 통해 얻은 경험과 HPHPc가 야기한 문제들을 해결하기 위해 메타(옛 페이스북)는 2010년 초 JIT 기반 PHP 가상 머신 개발을 시작했다.[10] HPHPc와 관련된 문제로는 성능 향상의 정체, PHP 언어의 모든 기능을 지원할 수 없는 근본적인 한계, 개발 및 배포 프로세스에 많은 시간과 자원이 소모된다는 점 등이 있었다.[10] 2013년 1분기에 facebook.com 웹사이트의 프로덕션 버전은 HPHPc 사용을 중단하고 HHVM으로 전환했다.HHVM은 HPHPc에 비해 많은 이점을 제공한다. HHVM은 프로덕션 환경과 개발 환경 모두에서 동일한 실행 엔진을 사용하며, 두 환경 모두에서 실행 엔진과 HPHPd 디버거 간의 통합을 지원한다. 따라서 HPHPc에서처럼 HPHPi(HipHop 인터프리터)를 개발 유틸리티로 별도로 유지 관리할 필요가 없어졌다. 또한 HHVM은 HPHPc에서 필요했던 긴 빌드 과정을 제거하여 HPHPc보다 훨씬 간단한 개발 및 배포 프로세스를 제공한다.[1]
2. 3. Hack 언어의 등장
2014년, HHVM 3.0[15]과 함께 메타는 PHP의 파생 언어인 Hack을 출시했다.[16][17] Hack은 동적 타이핑과 정적 타이핑(점진적 타이핑)을 모두 사용할 수 있게 해주며, 함수 인수, 함수 반환값 및 클래스 속성에 대한 타입을 지정할 수 있다. 그러나 Hack은 `goto` 문과 동적 변수 이름과 같은 몇 가지 PHP 기능을 제거하여 PHP와의 완전한 하위 호환성을 제공하지 않는다.[18][19][20][21]2. 4. PHP 지원 중단
2017년 9월, HHVM은 버전 3.30을 마지막으로 PHP를 공식적으로 지원을 중단하고, 앞으로 Hack만 지원할 것이라고 발표했다.[22] 이는 PHP 7과의 차이점과 비호환성 때문이었다.[23] 사용자에게는 Hack 또는 PHP 7이나 다른 PHP 실행 환경으로 이전할 것을 권장했다.[49] 2019년 2월 12일, 예정대로 PHP 지원을 종료한 HHVM 4.0이 출시되었다.[50]3. 작동 원리
HHVM은 JIT (Just-In-Time) 컴파일 원칙에 따라 PHP 또는 Hack 코드를 중간 언어인 HHBC로 변환한다. 그 후 HHBC는 x86-64 기계어로 동적으로(실시간으로) 변환되며, 이 과정에서 최적화가 이루어진다. 최종적으로 x86-64 기계어가 실행된다.[1][10][12] 이러한 작동 방식은 공통 언어 런타임(CLR, C# 언어용) 및 자바 가상 머신(JVM, 자바 언어용)과 같은 다른 프로그래밍 언어에서 사용되는 가상 머신과 유사한 점이 있다.
3. 1. HHBC (HipHop ByteCode)
JIT 컴파일 원칙에 따라 HHVM은 실행되는 코드를 중간 언어인 고급 바이트코드 HHBC로 변환한다. HHBC는 HHVM을 위해 특별히 만들어진 바이트코드 형식으로, 인터프리터와 JIT 컴파일러 모두에서 사용될 수 있다. HHVM은 HHBC를 x86-64 기계어로 동적으로(실시간으로) 변환하고, 변환된 바이트코드의 동적 분석을 통해 최적화한다. 마지막으로 x86-64 기계어를 실행한다.[1][10][12] 결과적으로 HHVM은 공통 언어 런타임(CLR, C# 언어용) 및 자바 가상 머신(JVM, 자바 언어용)을 포함한 다른 프로그래밍 언어에서 사용되는 가상 머신과 특정 유사성을 갖는다.3. 2. JIT 컴파일
JIT 컴파일 원칙에 따라 HHVM은 먼저 실행되는 코드를 중간 언어인 고급 바이트코드인 HHBC로 변환한다. HHBC는 HHVM을 위해 특별히 만들어진 바이트코드 형식으로, 인터프리터와 JIT 컴파일러 모두에서 사용할 수 있다. 다음으로 HHVM은 HHBC를 x86-64 기계어로 동적으로(실시간으로) 변환하고, 변환된 바이트코드의 동적 분석을 통해 최적화한다. 마지막으로 x86-64 기계어를 실행한다.[1][10][12] 결과적으로 HHVM은 공통 언어 런타임(CLR, C# 언어용) 및 자바 가상 머신(JVM, 자바 언어용)을 포함한 다른 프로그래밍 언어에서 사용되는 가상 머신과 특정 유사성을 갖는다.JIT 컴파일 과정에서 HHVM은 PHP 또는 Hack 코드를 HHBC라는 바이트코드 형태의 중간 언어로 변환한다. HHBC는 HHVM을 위해 설계된 바이트코드이며, JIT 컴파일러와 인터프리터에서 모두 사용할 수 있다. 그리고 HHBC는 바이트코드 수준에서 최적화가 이루어지고, x64 기계어로 즉시(JIT) 컴파일되어 CPU가 직접 실행한다.[26][35][38] 이러한 실행 과정은 .NET Framework의 공통 언어 런타임이나 Java의 자바 가상 머신과 같은 다른 언어의 가상 머신과 공통점이 있다.
3. 3. 다른 가상 머신과의 유사성
HHVM의 실행 과정은 .NET Framework의 공용 언어 런타임(CLR, C# 언어용)이나 자바 가상 머신(JVM, 자바 언어용)과 같은 다른 프로그래밍 언어에서 사용되는 가상 머신과 유사하다.[1] JIT 컴파일 과정에서 HHVM은 PHP 또는 Hack 코드를 HHBC라는 바이트코드 형태의 중간 언어로 변환한다. HHBC는 HHVM을 위해 설계된 바이트코드이며, JIT 컴파일러와 인터프리터 모두에서 사용할 수 있다. 그리고 HHBC는 바이트코드 수준에서 최적화가 이루어지고, x64 기계어로 즉시(JIT) 컴파일되어 CPU가 직접 실행한다.[26][35][38]4. 성능
HHVM은 실행 환경을 제공하는 프로세스 가상 머신으로, 실시간 형식 정보를 사용하여 더 효율적인 네이티브 코드를 생성할 수 있다. 이는 웹 서버의 처리량을 높이고 지연 시간을 낮춘다.[10] 2012년 4분기에 facebook.com의 소스 코드를 HHVM에서 실행한 결과 HPHPc와 성능이 동등해졌으며,[10][35] 2013년 12월에는 HPHPc보다 약 15% 더 빨라졌다.[25][48]
웹사이트에서 사용자는 페이지 표시 속도에 민감하며, 웹 서버의 지연 시간이 0.5초 미만이라도 사용자 경험에 심각한 악영향을 미쳐 사이트 효과를 크게 저하시키는 것으로 알려져 있다.[47]
5. 한국 웹 개발 환경에의 시사점
HHVM은 페이스북과 같이 대규모 사용자 기반을 가진 서비스나 온라인 게임 등 트래픽 처리가 중요한 한국 웹 서비스 환경에서 성능 향상을 위한 기술적 대안이 될 수 있었다. 그러나 2018년 9월, 페이스북은 자체 개발 프로그래밍 언어인 Hack의 등장과 PHP 7의 개선된 성능을 이유로 HHVM의 PHP 지원을 단계적으로 종료한다고 발표했다.[49] PHP 지원은 HHVM 3.30 버전까지였으며, 2019년 2월 12일 출시된 HHVM 4.0 버전에서는 PHP 지원이 완전히 중단되었다.[50] 이에 따라 기존 PHP 기반 시스템을 운영하는 기업들은 Hack 언어로 전환하거나 PHP 7 등 다른 PHP 실행 환경으로 이전해야 하는 상황에 놓였다.
참조
[1]
웹사이트
The HipHop Virtual Machine
https://www.facebook[...]
Meta Platforms
2011-12-09
[2]
웹사이트
Building and installing HHVM on CentOS 7.x
https://github.com/f[...]
Meta Platforms
2015-05-26
[3]
웹사이트
Building the Hack typechecker
https://github.com/f[...]
Meta
2014-09-10
[4]
웹사이트
Facebook's HHVM Begins Seeing Rust Rewrite - Phoronix
https://www.phoronix[...]
[5]
웹사이트
facebook/hhvm: License
https://github.com/f[...]
Facebook, Inc.
[6]
논문
HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack
https://dl.acm.org/c[...]
ACM
2018-06-20
[7]
웹사이트
facebook/hhvm
https://github.com/f[...]
Meta Platforms
[8]
웹사이트
PHP and Zend Engine Internals
http://www.phpbuilde[...]
2014-04-28
[9]
웹사이트
HHVM source code on GitHub
https://github.com/f[...]
[10]
웹사이트
Speeding up PHP-based development with HHVM
https://www.facebook[...]
Meta Platforms
2012-11-29
[11]
웹사이트
Announcement on GitHub removing HPHPc support
https://github.com/f[...]
Meta Platforms
2013-02-19
[12]
웹사이트
HipHop Bytecode v1 revision 18
https://github.com/f[...]
Meta Platforms
2014-07-31
[13]
웹사이트
facebook/hhvm: About upgrade to PHP 5.4 engine
https://github.com/f[...]
2013-05
[14]
웹사이트
facebook/hhvm: Home
https://github.com/f[...]
Meta Platforms
2014-05-08
[15]
웹사이트
HHVM 3.0.0
https://hhvm.com/blo[...]
Facebook
2014-03-28
[16]
잡지
Facebook Introduces 'Hack,' the Programming Language of the Future
https://www.wired.co[...]
2014-03-20
[17]
웹사이트
Hack: a new programming language for HHVM
https://code.faceboo[...]
Facebook
2014-04
[18]
웹사이트
Facebook's Hack, HHVM, and the future of PHP
http://radar.oreilly[...]
O'Reilly Media
2014-04-03
[19]
웹사이트
Hack and HHVM: Type Annotations (Hack Manual)
http://docs.hhvm.com[...]
[20]
웹사이트
Hack and HHVM: Type Inference (Hack Manual)
http://docs.hhvm.com[...]
[21]
웹사이트
Hack and HHVM: Unsupported PHP Features in Hack (Hack Manual)
http://docs.hhvm.com[...]
[22]
웹사이트
Ending PHP Support, and The Future Of Hack
https://hhvm.com/blo[...]
2018-09-12
[23]
웹사이트
Forget PHP! Facebook's HHVM engine switches to Hack instead
https://www.infoworl[...]
2017-09-20
[24]
웹사이트
HHVM 4.0.0
https://hhvm.com/blo[...]
2019-02-11
[25]
웹사이트
We are the 98.5% (and the 16%)
http://www.hhvm.com/[...]
2013-12-19
[26]
웹사이트
The HipHop Virtual Machine
https://www.facebook[...]
Facebook
2011-12-09
[27]
웹사이트
Releases
https://github.com/f[...]
Facebook
[28]
웹사이트
facebook/hhvm
https://github.com/f[...]
Facebook
[29]
웹사이트
facebook/hhvm
https://github.com/f[...]
Facebook
[30]
웹사이트
PHP and Zend Engine Internals
http://www.phpbuilde[...]
2014-04-28
[31]
웹사이트
Ending PHP Support, and The Future Of Hack
https://hhvm.com/blo[...]
Facebook
2018-09-12
[32]
웹사이트
米Facebook、「HHVM」でのPHPサポートを終了する方針を発表
https://mag.osdn.jp/[...]
2018-09-14
[33]
웹사이트
The Future of HHVM
https://hhvm.com/blo[...]
Facebook
2018-09-18
[34]
웹사이트
Project Update and OSS Support Changes
https://hhvm.com/blo[...]
Facebook
2023-10-27
[35]
웹사이트
Speeding up PHP-based development with HHVM
https://www.facebook[...]
Facebook
2012-11-29
[36]
웹사이트
Announcement on GitHub removing HPHPc support
https://github.com/f[...]
Facebook
2013-02-19
[37]
웹사이트
How Three Guys Rebuilt the Foundation of Facebook
http://www.wired.com[...]
Wired
2013-06-10
[38]
웹사이트
HipHop Bytecode v1 revision 18
https://github.com/f[...]
Facebook
2014-07-31
[39]
웹사이트
facebook/hhvm
https://github.com/f[...]
2013-05-01 # May 2013을 2013-05-01로 변환 (날짜 정보 부족으로 임의 설정)
[40]
웹사이트
facebook/hhvm
https://github.com/f[...]
Facebook
2014-05-08
[41]
웹사이트
Facebook Introduces 'Hack,' the Programming Language of the Future
http://www.wired.com[...]
Wired
2014-03-20
[42]
웹사이트
Hack: a new programming language for HHVM
https://code.faceboo[...]
Facebook
2014-04-01 # April 2014를 2014-04-01로 변환 (날짜 정보 부족으로 임의 설정)
[43]
웹사이트
Facebook’s Hack, HHVM, and the future of PHP
http://radar.oreilly[...]
O'Reilly Media
2014-04-03
[44]
웹사이트
Hack Manual
http://docs.hhvm.com[...]
[45]
웹사이트
Hack Manual
http://docs.hhvm.com[...]
[46]
웹사이트
Hack Manual
http://docs.hhvm.com[...]
[47]
웹사이트
Bing and Google Agree: Slow Pages Lose Users
http://radar.oreilly[...]
O'Reilly Media
2009-06-23
[48]
웹사이트
We are the 98.5% (and the 16%)
http://www.hhvm.com/[...]
2013-12-19
[49]
웹사이트
米Facebook、「HHVM」でのPHPサポートを終了する方針を発表
https://mag.osdn.jp/[...]
OSDN
2018-09-14
[50]
웹사이트
「HHVM 4.0」リリース、PHPのサポートを廃止
https://mag.osdn.jp/[...]
OSDN
2019-02-13
[51]
웹인용
The HipHop Virtual Machine
https://www.facebook[...]
페이스북
2011-12-09
[52]
웹인용
Building and installing HHVM on CentOS 7.x
https://github.com/f[...]
페이스북
2015-05-26
[53]
웹인용
Building the Hack typechecker
https://github.com/f[...]
페이스북
2014-09-10
[54]
웹인용
facebook/hhvm: License
https://github.com/f[...]
페이스북
[55]
논문
HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack
https://dl.acm.org/c[...]
ACM
2018-06-20
[56]
웹인용
facebook/hhvm
https://github.com/f[...]
페이스북
[57]
웹사이트
PHP and Zend Engine Internals
http://www.phpbuilde[...]
2014-04-28
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
