Django 배포용 probe endpoint 패키지 하나 만들어봤습니다
안녕하세요.
인턴 하면서 Django 프로젝트를 배포할 때 health check endpoint를 프로젝트마다 비슷하게 반복해서 만들게 되는 경우가 많아서, 이 부분을 작은 패키지로 분리해봤습니다.
패키지 이름은 django-deploy-probes입니다.
주요 기능은 Django 애플리케이션에 아래 endpoint를 추가하는 것입니다.
- /healthz
- /readyz
- /startupz
- /version
주 사용 환경은 아래를 생각하고 만들었습니다.
- Docker health check
- Kubernetes liveness/readiness/startup probe
- rolling deployment
- blue-green deployment
- CI/CD 배포 검증
구현하면서 가장 중요하게 본 부분은 /healthz를 최대한 가볍게 유지하는 것이었습니다.
실무에서 보면 DB, Redis, 외부 API 같은 의존성 체크를 전부 healthz에 넣는 경우가 있는데, 이렇게 되면 liveness와 readiness의 역할이 섞이기 쉬워서 /readyz, /startupz와 분리하는 방향으로 설계했습니다.
설치는 아래처럼 하면 됩니다.
pip install django-deploy-probesurls.py에는 이렇게 추가하면 됩니다.
from django.urls import include, path
urlpatterns = [
path("probes/", include("django_deploy_probes.urls")),
]GitHub: https://github.com/emfpdlzj/django-deploy-probes
PyPI: https://pypi.org/project/django-deploy-probes/
아직 첫 공개 버전이라 부족한 부분이 있을 수 있습니다. endpoint 분리 방식이나 기본 동작이 실무적으로 괜찮은지 의견 주시면 참고해서 개선해보려고 합니다.
댓글을 남기려면 로그인이 필요합니다.
로그인 후 이 페이지로 돌아와 바로 댓글을 남길 수 있습니다.