4P by neo 2달전 | favorite | 댓글 1개

현대 PHP 앱 서버 FrankenPHP 소개

FrankenPHP란?

  • FrankenPHPGo 언어로 작성된 현대적인 PHP 앱 서버임.
  • Caddy 웹 서버에 공식 PHP 실행기를 내장하여 HTTP/1.1, HTTP/2, HTTP/3을 지원함.
  • 자동 HTTPS 인증서 생성 및 갱신 기능을 제공함 (Let’s Encrypt 또는 ZeroSSL 사용).

주요 기능

  • 단일 명령어로 프로덕션급 PHP 서버를 실행 가능함.
  • 독립 실행형 바이너리를 생성하여 PHP 웹 애플리케이션과 커맨드라인 도구를 의존성 없이 실행 가능함.
  • 인기 PHP 확장(OPcache, XDebug 등)을 기본적으로 지원함.

성능 향상

  • Worker 모드: 애플리케이션을 한 번 부팅하면 메모리에 유지됨.
  • 간편한 사용: Symfony, API Platform, Laravel 등에서 기본 지원됨.
  • 빠른 속도: API Platform 앱에서 FPM보다 3.5배 빠름.
  • 효율성: Go의 고루틴 기능을 활용하여 효율적인 성능 제공함.
  • 간단한 배포: 단일 바이너리로 실행되며 외부 서비스가 필요 없음.

FrankenPHP의 장점

  • 쉽고 빠른 설정: PHP 파일을 문서 루트에 복사하기만 하면 됨.
  • 고성능: 최신 웹 서버 기술과 PHP 실행기를 결합하여 높은 성능 제공함.
  • 유연성: Worker 모드와 호환되지 않는 앱도 그대로 서비스 가능함.

GN⁺의 의견

  • 흥미로운 점: FrankenPHP는 최신 웹 서버 기술을 활용하여 PHP 애플리케이션의 성능을 크게 향상시킬 수 있음.
  • 도입 시 고려사항: 기존 PHP 서버 환경과의 호환성 문제를 사전에 검토해야 함.
  • 비판적 시각: 새로운 기술 도입에 따른 학습 곡선과 초기 설정 비용이 발생할 수 있음.
  • 추천 대안: 비슷한 기능을 제공하는 RoadRunnerSwoole 같은 PHP 서버도 고려해볼 만함.
  • 기술 선택의 득과 실: 성능 향상과 간편한 배포가 장점이지만, 새로운 기술 도입에 따른 리스크와 기존 시스템과의 통합 문제를 신중히 검토해야 함.
Hacker News 의견
  • PHP 개발을 10년 동안 하지 않았지만, 이 랜딩 페이지가 나를 다시 PHP로 돌아오게 할 뻔했음: 디자인, 색상, 애니메이션이 깔끔하고, 가치 제안이 잘 강조되어 있음. 작은 프로젝트를 시작하기에 좋은 방법으로 보임.

  • 오랜 C# 개발자, 현재는 주로 PHP8 사용: PHP8은 빠르게 작업을 완료할 수 있는 훌륭한 언어임. 이 방향이 LAMP보다 더 나은 방향임.

  • Tech Empower 벤치마크에서의 성과가 궁금함: 현재는 "완료되지 않음" 상태로 최하위에 있음.

  • PHP 통합 웹 서버를 개발 중 자주 사용: 단일 스레드로 느리고, 프로덕션 환경에 적합하지 않음. FrankenPHP는 유망해 보이지만, 제한된 코어/스레드 문제는 여전히 존재함. Docker 이미지가 유망해 보임.

  • FrankenPHP를 시도해봤지만 매우 느림: 문서가 부족하고, 성능이 기대 이하임. FPM보다 3.5배 성능을 주장하지만 실제로는 1% 성능도 나오지 않음.

  • FrankenPHP는 성능 문제를 가지고 있음: 그럼에도 불구하고 매우 유망한 프로젝트임.

  • 관련 링크: FrankenPHP, Go로 작성된 PHP 앱 서버 소개.

  • Docker 컨테이너 빌드 방법: Docker 명령어를 통해 새로운 Debian을 필요한 컨테이너로 변환하는 방법 설명.

  • FrankenPHP와 Apache의 Mod-PHP로 Wordpress 벤치마크 시도: FrankenPHP의 우위를 확인하지 못했음. Docker에서 테스트했으며, 더 깊이 파고들 필요가 있음.

  • HN 첫 페이지에 이 프로젝트가 올라온 것을 즐김: FPM과 공유하지 않는 아키텍처가 PHP의 성공과 동시에 한계를 가져왔다는 느낌임.