PHP 엔진 (Engine)


PHP 엔진은 작성된 PHP 스크립트 파일을 한 줄씩 읽어 들이고 해석하여 실제 운영체제와 하드웨어가 작동하도록 번역하는 핵심 가상 머신(VM)이자 인터프리터 본체를 의미합니다.

PHP 문법 자체는 개발자가 작성하는 인터페이스에 불과하며, 실질적인 코드 파싱, 메모리 할당, 가비지 컬렉션, OS 자원 연계 등 하부 시스템 통제는 모두 PHP 엔진이 처리합니다.

대표적인 PHP 엔진으로는 C 언어로 제작되어 사실상의 표준(De facto standard)인 Zend 엔진과, 과거 페이스북(현 Meta)이 PHP 성능 혁신을 주도하며 탄생했던 HHVM이 있습니다.


1. Zend 엔진 (Zend Engine)


Zend 엔진은 C 언어로 작성된 오픈 소스 실행 엔진으로, PHP 공식 배포판의 심장이자 근간입니다. 1999년 Andi Gutmans와 Zeev Suraski에 의해 설계되었으며, 이들의 이름을 따서 Zend라는 이름이 명명되었습니다.

1) 젠드 엔진의 기본 아키텍처 구성 요소

  • 파서/컴파일러 (Parser/Compiler): PHP 텍스트 코드를 기계 독립적인 가상 명령셋인 오피코드(Opcodes)로 일차 변환합니다.
  • 실행기 (Executor / Zend VM): 번역된 오피코드를 CPU가 수행할 수 있도록 매핑 및 연산 실행 루프를 작동시킵니다.
  • 메모리 관리자 (Zend Memory Manager, Zend MM): 운영체제로부터 직접 메모리를 크게 할당받아, PHP 내부 객체 및 변수들을 위한 가상 메모리 풀을 직접 최적화하여 분배합니다. (PHP 스크립트의 빠른 할당과 릴리즈를 돕습니다.)
  • 가비지 컬렉션 (Garbage Collection, GC): 참조 카운팅(Reference Counting) 기반으로 쓰지 않는 변수의 메모리를 회수하며, 순환 참조(Circular Reference) 탐지 알고리즘이 내장되어 있습니다.

2) 젠드 엔진의 버전별 성능 변천사

Zend 엔진의 성능 대격변은 PHP 버전에 따라 동행해 왔습니다.

  • Zend Engine I (PHP 4): 최초로 코드 컴파일과 실행 단계를 분리하여 성능을 도약시켰습니다.
  • Zend Engine II (PHP 5): 완벽한 객체 모델(Object Model 2.0)을 지원하고, 참조 전달 방식과 가비지 컬렉션을 고도화했습니다.
  • Zend Engine III (PHP 7):
    • AST (Abstract Syntax Tree) 도입으로 코드 구문 최적화 분리.
    • 내부 데이터 구조체(HashTable, zval)의 크기를 기존 대비 절반 이하로 줄이고, CPU 캐시 지역성(Cache Locality)을 극대화하여 메모리 소모 50% 절감 및 처리 속도 2배 이상 향상이라는 혁신을 달성했습니다.
  • Zend Engine IV (PHP 8.0+):
    • JIT (Just-In-Time) 컴파일러 전격 이식.
    • CPU 아키텍처(x86, ARM 등)에 직접 최적화된 하드웨어 기계어로 실시간 번역 연산 기능을 추가하여, 젠드 VM 인터프리터 실행 단계를 생략할 수 있는 물리적 속도 향상 기반을 안착시켰습니다.


2. HHVM (HipHop Virtual Machine)과 Hack 언어의 역사


HHVM은 페이스북(Meta)이 대규모 트래픽 속에서 PHP의 실행 성능 한계를 돌파하기 위해 직접 개발하여 공개했던 오픈소스 가상 머신입니다.

1) 탄생 배경과 기술적 구조

  • HPHPc (HipHop for PHP): 페이스북은 최초에 PHP 코드를 복잡한 C++ 코드로 교차 컴파일(Transpile)한 뒤 이를 실행 파일로 빌드하여 서비스하는 방식을 썼으나, 소스 수정 시 컴파일 대기 시간이 너무 길어 생산성이 악화되었습니다.
  • HHVM의 극복: 이를 개선하고자 JVM(Java Virtual Machine)과 유사하게 PHP 코드를 중간 바이트코드로 컴파일한 다음, 런타임에 가장 많이 실행되는 핫코드를 JIT(Just-In-Time) 방식을 통해 실시간 기계어로 즉시 번역하여 가동하는 가상 머신(HHVM)을 런칭했습니다. 이 방식은 당시 표준 Zend 엔진(PHP 5)보다 수배 이상 빠른 압도적 연산 속도를 보여주었습니다.

2) 독자 노선과 Hack 언어로의 완전 분화 — [HHVM 4.0+]

HHVM의 놀라운 속도 혁신은 공식 PHP 진영에 큰 자극제가 되었습니다. PHP 개발진은 이에 자극받아 PHP 7 버전에서 엔진(Zend Engine III)의 자료 구조를 극적으로 뜯어고쳐, 별도의 무거운 JIT 가상머신 없이도 HHVM 수준에 근접하는 비약적인 속도 개선을 이뤄내는 데 성공했습니다.

  • PHP 지원 공식 중단: 표준 PHP 7이 충분히 빨라지자, 페이스북은 굳이 PHP 표준의 모든 호환 스펙을 HHVM에 유지할 매력을 잃었습니다.
  • Hack 언어로의 전환: 결국 HHVM 4.0 버전부터 공식 PHP 문법 지원을 전면 중단하였고, PHP 문법에 정적 타입 힌팅과 모던 언어 사양을 결합해 페이스북 내부 전용으로 개발한 Hack 언어만을 지원하는 전용 VM으로 완전히 독립했습니다.
  • 현재 상황: 오늘날 일반적인 PHP 환경에서는 Zend Engine이 표준이자 단일한 실행체로 사용되며, HHVM은 독자 언어인 Hack 전용 가상 머신으로 분기되어 각자의 길을 걷고 있습니다.



서브목차