NestJS · Cloud Deploy

AWS·GCP 배포에서 나누는 관리 책임

클라우드 배포는 서버를 빌리는 일이 아니라, compute, network, secret, database, observability 책임을 서비스 조합으로 나누는 설계다.

01

실행 플랫폼 선택

컨테이너 단위 배포인지, 서버리스 컨테이너인지, 쿠버네티스인지 운영 역량으로 결정한다.

02

네트워크 연결

로드 밸런서, TLS 인증서, private DB 접근 경로를 구성한다.

03

설정 주입

환경 변수와 비밀값은 플랫폼의 secret 저장소에서 실행 시 주입한다.

04

관측 연결

로그, metric, trace가 서비스와 revision 단위로 조회되게 한다.

ECS/Fargate
AWS 컨테이너 실행 task definition과 service로 Nest 컨테이너 운영
ALB와 secret 연동
Cloud Run
GCP 서버리스 컨테이너 요청 기반 scale-out과 revision 배포
cold start와 연결 제한 확인
GKE/EKS
Kubernetes 운영 세밀한 제어와 높은 운영 책임
팀 역량 없으면 과함
Managed DB
데이터 계층 백업, 보안 그룹, connection pool이 핵심
앱 인스턴스 증가와 pool 한도

TLS · DB 연결 · 비밀값 점검

TLS 외부 트래픽은 HTTPS로 종료되고 내부 구간 정책이 정해져 있다.
DB 연결 scale-out 때 connection pool이 데이터베이스 한도를 넘지 않는다.
비밀값 이미지나 Git에 배포 비밀이 남아 있지 않다.
롤백 문제 revision에서 이전 정상 revision으로 돌아갈 절차가 있다.