피드로 돌아가기
Dev.toDevOps
원문 읽기
Supervisor PID-1 도입 및 CI/CD 게이트 구축으로 환경 구성 시간 10분 단축
Production-Ready CodeIgniter 4 + Docker Stack with CI/CD in Less than 10 Minutes
AI 요약
Context
PHP 프로젝트 초기 설정 시 Docker, Nginx, MySQL 등 개별 컴포넌트 구성과 CI 파이프라인 구축에 과도한 시간이 소요되는 문제 발생. 비즈니스 로직 구현 전 단계에서 반복되는 인프라 셋업 비용으로 인한 개발 생산성 저하를 해결하고자 함.
Technical Solution
- Zombie process 방지 및 안정적인 시그널 포워딩을 위해 php-fpm 대신 Supervisor를 PID-1으로 설정한 구조 설계
- 웹 프로세스와 독립적인 스케일링 및 로그 격리를 위해 Queue worker를 별도 컨테이너로 분리한 아키텍처 채택
- 이미지 경량화 및 보안 강화를 위해 pcov 커버리지 드라이버를 dev 이미지에만 포함한 멀티 스테이지 빌드 전략 적용
- PHPStan level 6, Rector, PHPUnit(커버리지 20% 이상)을 필수 통과 조건으로 설정한 3단계 Quality Gate 구축
- Make 파일을 통한 이미지 빌드, 컨테이너 실행, Migration 및 Healthcheck 자동화로 셋업 프로세스 단일화
Impact
- 전체 스택 셋업 및 실행 시간 10분 미만으로 단축
- PHPUnit 424개 테스트 및 710개 Assertion 검증 체계 확보
- 코드 커버리지 30.39% 달성 (최소 기준 20% 상회)
실천 포인트
1. 컨테이너 내 프로세스 관리 시 Zombie process 방지를 위해 Supervisor 같은 Process Manager 도입 검토
2. 확장성이 필요한 Queue Worker는 웹 서버와 컨테이너 수준에서 분리하여 독립적 스케일링 구조 설계
3. Production 이미지에서 불필요한 Dev-only 확장 모듈(pcov 등)을 제거하여 공격 표면 최소화
4. 정적 분석(PHPStan)과 자동 리팩토링(Rector)을 CI 파이프라인의 강제 게이트로 설정하여 코드 품질 상향 평준화