nginx unit 1.26 써보고 기록. unit은 nginx inc에서 만든 "앱 서버"인데, Python/PHP/Node/Go 등 여러 런타임을 통합 관리 해주는 도구. 처음 봤을 때 "이게 뭐지" 싶었는데 써보니 꽤 흥미로움.
설치 후 config는 REST API로 푸시한다. 파일 편집 아님.
curl -X PUT --data-binary @config.json \
--unix-socket /var/run/control.unit.sock \
http://localhost/config/
config.json 예 (fastapi 앱).
{
"listeners": {
"*:8000": { "pass": "applications/api" }
},
"applications": {
"api": {
"type": "python 3.10",
"path": "/srv/app",
"module": "main",
"callable": "app",
"processes": { "max": 8, "spare": 2 }
}
}
}
장점 체감:
- 런타임 교체 무중단. config 푸시하면 graceful reload. gunicorn 재시작 고민 안 해도 됨.
- 프로세스 오토스케일.
spare,max로 부하에 맞춰 워커 수 자동 조절. - 멀티앱을 한 인스턴스에 올리기 편함. 사내 툴용 소규모 서비스 세 개 하나로 합쳤다.
단점 및 주의:
- 운영 도구(로그, 메트릭) 생태계가 nginx 본체보다 약함. access log 포맷이 JSON만.
- 공식 helm chart가 아직 공식 지원은 아님. 직접 구성.
- 문서 부족. Python+fastapi 조합은 잘 되지만 Node.js express 연동하다가 static file serving에서 약간 삽질.
결론 — gunicorn/uwsgi 대체 용도로는 꽤 괜찮다. 다만 넣어야 할 이유가 명확해야 함. 단순 단일 앱이면 기존 스택 유지가 낫다. 우리는 런타임 여러 개 섞인 사내 포털에 적용.
댓글 없음:
댓글 쓰기