본문으로 건너뛰기

ALB 대신 EC2 안의 nginx가 HTTPS 종단을 맡는다

  • 상태: 채택됨
  • 작성일: 2026-07-18
  • 관련 문서: ADR-0004, ADR-0012, APP-60, APP-61, APP-229

맥락

HTTPS 종단과 인증서 갱신이 필요했다. 표준 해법은 ALB + ACM이지만 ALB는 월 $16+이고 자동 할당되는 퍼블릭 IPv4 2개가 월 $7+를 더 붙인다. 게다가 public subnet에 EC2가 한 대뿐이라 로드밸런서가 분산할 대상 자체가 없다. 값을 내는 기능은 안 쓰면서 값만 내는 구성이다.

결정

  • ALB를 만들지 않는다. EC2 heymoa-app 안의 nginx가 api.heymoa.app의 public edge 역할을 하고 Certbot이 인증서를 갱신한다.
  • heymoa-ai 앞에는 nginx를 두지 않고 server가 사설 IP로 8000을 직접 부른다.

대안

대안 1 — ALB + ACM. 인증서 갱신이 관리형이고, 인스턴스가 늘면 그대로 확장된다. 기각한 이유: 월 $23+인데 분산할 대상이 한 대뿐이라 로드밸런싱이라는 본래 값을 아예 쓰지 않는다.

결과

  • 월 $23+가 빠졌다. 라우팅·버퍼링 설정도 우리가 직접 잡는다.
  • nginx 설정 파일이 어느 저장소에도 없다. EC2에서 수기 관리라 인스턴스를 재생성하면 같이 사라진다.
  • public edge가 EC2 한 대 위에 있어 그 인스턴스가 곧 단일 장애점이다. 인증서 갱신도 그 위의 Certbot에 달려 있다.
  • 설정이 저장소 밖에 있다는 사실이 실제 비용으로 돌아왔다. APP-229(챗봇 응답이 뭉쳐 나오는 SSE 버퍼링)에서 수정을 nginx가 아니라 애플리케이션 응답 헤더에 넣기로 한 결정의 직접적 근거가 됐다. 고칠 곳이 저장소 밖에 있으면 고치는 방법부터 우회하게 된다.