본문 바로가기

직접 만든 소프트웨어, 두 가지 개발 기록

구현 구조와 적용 범위, 확인한 기능과 남은 한계를 함께 기록합니다.

소프트웨어개발

AWS ALB와 Nginx 비교: 로드 밸런서 비용·TLS·운영 책임 선택 기준

by 아빠띠띠뽀 2026. 10. 5.

클라이언트 요청을 여러 애플리케이션 서버로 분산하는 로드 밸런서와 운영 책임을 표현한 일러스트
AI로 직접 제작한 개념 일러스트입니다. 요청 분산 장치의 비용과 함께 TLS·가용성·유지보수 책임을 비교합니다.

AWS에서 웹 API를 운영할 때 Application Load Balancer(ALB)에 트래픽 분산을 맡길지, Nginx를 직접 운영할지 고민하게 됩니다. AWS의 가용 영역과 컨테이너 서비스에 맞춰 운영 부담을 줄이려면 ALB를 먼저 검토할 수 있습니다. 프록시 설정을 세밀하게 통제하거나 여러 실행 환경에서 같은 구성을 유지해야 한다면 자체 Nginx도 후보입니다. 선택할 때는 서버 한 대의 가격보다 필요한 가용성, TLS 처리, 장애 대응 책임을 같은 조건으로 비교해야 합니다.

1. 관리형 서비스와 직접 운영하는 소프트웨어의 차이

이 글의 비교 범위는 HTTP·HTTPS 웹 서비스의 요청 분산입니다. ALB는 AWS가 운영하는 관리형 로드 밸런서이고, Nginx Open Source는 설치한 서버나 컨테이너에서 직접 구성하는 소프트웨어입니다. TCP·UDP 전반의 요구가 있는 경우에는 AWS의 다른 로드 밸런서 유형과 해당 Nginx 모듈을 별도로 검토해야 합니다. 여기서 “Nginx가 무료”라는 말은 소프트웨어와 운영 인프라의 비용을 구분하지 못한 표현입니다.

AWS의 ALB 구성 안내에서 리스너, 규칙, 대상 그룹의 역할을 확인할 수 있습니다. 기존 서비스가 ECS에 배치돼 있다면 ECS Fargate와 EC2 운영 비교에서 정한 실행 환경과 함께 요청 경로를 그려 보세요. ALB 뒤에 Nginx를 두는 구성도 가능하므로 두 제품을 항상 하나만 골라야 하는 것은 아닙니다. 다만 프록시 계층이 늘면 로그, 시간 제한, 헤더 전달을 계층별로 관리해야 합니다.

2. 같은 운영 수준에서 비교하는 체크표

비교 항목 AWS ALB 직접 운영하는 Nginx Open Source
인프라 운영 로드 밸런서 인프라 운영을 서비스에 맡김 호스트·컨테이너·패치·용량을 직접 관리
가용성 가용 영역·대상 배치와 서비스 구성을 확인 프록시 자체의 이중화와 전환 경로를 설계
요청 처리 지원되는 리스너·규칙·대상 그룹에서 구성 지원 모듈과 프록시 설정을 직접 검증
상태 점검 대상 그룹의 능동 헬스체크 설정 확인 기본 수동 장애 감지와 별도 감시 체계 확인
TLS HTTPS 리스너 인증서와 대상 통신을 구분 인증서 배포·갱신·TLS 설정을 직접 관리
비용 범위 실행 시간·LCU·전송·관련 서비스 비용 서버·스토리지·전송·이중화·운영 시간
구성 변경 AWS 지원 기능과 권한 범위에서 변경 설정 검증·배포·되돌리기 절차를 직접 운영

자체 Nginx의 장점은 환경과 설정을 직접 통제할 수 있다는 점이고, 그만큼 장애 처리와 유지보수 책임이 커집니다. ALB의 장점은 관리형 인프라와 AWS 서비스 연동이며, 원하는 동작이 지원 규칙과 기능 범위에 들어가는지 확인해야 합니다. Nginx 한 대와 여러 가용 영역을 사용하는 ALB의 견적을 바로 비교하면 장애 대응 수준이 다른 안을 비교하게 됩니다. NGINX Plus 같은 상용 제품을 검토한다면 라이선스와 기능도 별도 항목으로 넣으세요.

3. 월간 요청 수만으로 ALB 비용을 계산할 수 없는 이유

Elastic Load Balancing 공식 요금 안내는 ALB 실행 시간과 LCU 사용량을 설명합니다. LCU는 새 연결, 활성 연결, 처리 바이트, 규칙 평가를 각각 환산한 뒤 가장 큰 사용 차원으로 계산합니다. 공개 IPv4 주소와 데이터 전송 등 다른 비용도 확인해야 합니다. 연결을 재사용하는 요청과 오래 유지되는 연결은 요청 건수가 같아도 비용 입력값이 달라질 수 있습니다. 리전·인증 방식·대상 유형의 조건을 공식 계산기에 맞춰 입력하세요.

가상 예시로 한 달을 30일, 평균 처리량을 초당 20요청, 요청과 응답을 합친 크기를 건당 10KB로 가정해 보겠습니다. 1KB를 1,000바이트로 계산하면 월간 요청은 51,840,000건이고 처리 바이트는 약 518.4GB입니다. 시간당 약 0.72GB라는 입력값도 얻습니다. 이것은 청구 금액이나 실제 트래픽 측정값이 아닙니다. 새 연결 수, 동시 연결 유지 시간, 적용 규칙과 부가 비용을 추가해야 견적이 됩니다.

가상 작업량: 30일, 초당 20요청, 요청+응답 10KB
월간 요청 = 20 × 60 × 60 × 24 × 30 = 51,840,000건
시간당 처리 바이트 = 20 × 10,000 × 3,600 = 720,000,000바이트
월간 처리 바이트 = 720,000,000 × 720 = 약 518.4GB

ALB 비교 견적 = 실행 시간 + LCU + 전송/주소/연결 서비스 비용
Nginx 비교 견적 = 같은 가용성의 서버 + 전송 + 유지보수·장애 대응 시간

자체 운영안에서는 피크 시간에 필요한 프록시 용량과 장애 시 대체 노드를 함께 넣습니다. 유휴 노드가 있어도 장애 대응을 위해 필요하다면 견적에서 빼면 안 됩니다. 작은 월간 차액보다 인증서 갱신 실패나 프록시 교체에 대응할 사람이 있는지가 선택을 좌우할 수 있습니다. 반대로 이미 검증된 Nginx 운영 체계가 있고 추가 요구가 작다면 기존 구성을 유지하는 안도 비교할 가치가 있습니다.

4. 헬스체크와 TLS에서 놓치기 쉬운 운영 조건

NGINX 공식 HTTP 헬스체크 안내는 Open Source의 수동 장애 감지와 NGINX Plus의 능동 헬스체크를 구분합니다. 수동 감지는 실제 요청 처리 과정의 실패를 관찰하므로 일정 주기마다 상태 확인 URL을 호출하는 방식과 다릅니다. upstream 모듈 문서에서 max_fails·fail_timeout과 실패 판정 조건을 확인하세요. 서버 하나만 있는 그룹에서는 이 매개변수의 예외도 있으므로 값만 붙여 가용성을 확보했다고 판단하면 안 됩니다.

ALB도 상태 확인 경로, 응답 코드, 포트와 대상 상태를 검증해야 합니다. 대상 그룹 헬스체크 문서에는 등록된 대상이 모두 비정상인 상황에서 fail-open으로 트래픽을 보낼 수 있다는 예외가 설명돼 있습니다. 헬스체크는 접근 권한을 대신하는 보안 장치가 아닙니다. 검사 URL이 인증 리다이렉트를 반환하거나 실제 앱이 사용하는 의존성 상태와 어긋나면 배포 판단도 달라집니다.

TLS는 “사용자에서 프록시까지”와 “프록시에서 앱까지”의 두 구간을 나누어 확인합니다. ALB의 HTTPS 리스너를 설정했다고 대상과의 통신도 자동으로 HTTPS가 되는 것은 아닙니다. Nginx를 직접 운영할 때는 인증서 갱신 결과, 지원 프로토콜, 적용 시점과 실패 시 되돌리기를 기록하세요. 중간 프록시가 있다면 클라이언트 주소와 원래 프로토콜을 전달하는 헤더도 신뢰할 수 있는 경로에서만 해석해야 합니다.

5. 도입 전 파일럿에서 남길 확인 기록

① 실제 사용할 HTTP 경로와 TLS 종료 지점을 적습니다. ② 정상 요청, 큰 응답, 오래 유지되는 요청의 입력값을 수집합니다. ③ 앱 한 대의 장애와 프록시 계층의 장애를 나누어 시험합니다. ④ 새 앱이 준비되기 전 요청이 들어가지 않는지 확인합니다. ⑤ 인증서 갱신과 설정 변경 뒤 정상 요청·로그·되돌리기를 확인합니다. ⑥ 같은 가용성 목표의 월간 비용과 담당자의 운영 시간을 비교합니다.

예를 들어 웹 API 두 개를 AWS 컨테이너 환경에서 운영하는 작은 팀이라면 ALB의 대상 등록과 배포 중 트래픽 이동부터 검증할 수 있습니다. 온프레미스와 클라우드에서 같은 프록시 정책을 유지하는 팀이라면 자체 Nginx 구성을 운영할 이유가 더 분명할 수 있습니다. 이 판단은 성능 순위를 말하는 것이 아니라 팀의 제약과 책임을 대조하는 방법입니다. 실제 오류가 발생하면 기존 Nginx 502와 upstream 연결 점검 글처럼 프록시와 앱 사이의 연결부터 확인하세요.

6. 자주 묻는 질문

ALB를 쓰면 Nginx는 필요 없나요?
단순 요청 분산만 필요하면 계층을 줄일 수 있지만 앱의 정적 파일 처리나 프록시 정책에 따라 Nginx가 남을 수 있습니다. 각 계층이 맡는 일을 적고 중복 기능을 확인하세요.

Nginx Open Source에도 능동 헬스체크가 기본 제공되나요?
여기서 확인한 공식 안내는 수동 감지와 NGINX Plus의 능동 헬스체크를 구분합니다. 사용하는 배포판·모듈·상용 제품의 기능을 혼동하지 말고 확인해야 합니다.

저렴한 쪽을 먼저 고르면 되나요?
가용성, TLS 운영, 장애 대응과 지원 범위를 같게 맞춘 뒤 견적을 비교하세요. 장애 시 담당자가 수행할 작업까지 설명할 수 있는 안이 실제 운영 판단에 도움이 됩니다.

자료 확인: 2026년 10월 4일. 사용량과 팀 상황은 선택 방법을 설명하는 가상 예시입니다. 실제 요금·성능 측정 결과가 아니며 도입 직전 해당 리전의 공식 요금과 지원 기능을 확인하세요.