AWS SAA 강의 정리 week5
EC2, ELB, Global Accelerator, CloudFront
EC2
EC2는 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스이다. EC2를 쉽게 생각하려면 하나의 컴퓨터(서버)라고 생각하면 된다.
오토 스케일링 (Auto Scaling)
- 대상 추적 정책(Target Tracking Policy)에 따라 자동으로 서버를 확장 또는 축소시켜준다.
- 대상 추적 정책이란 원하는 목표값(Target)을 벗어나지 않도록 자동으로 서버를 확장 또는 축소시켜주는 정책으로, 불규칙한 트래픽에 대응하기 좋다.
- ex) 평균 CPU가 70%를 넘으면 EC2 인스턴스를 최대 3대까지 확장하도록 설정
요금별 유형
- EC2 온디맨드 인스턴스
- 사용한 시간만큼 결제하는 후불 결제 방식
- 항상 실행되는 인스턴스로, 범용적으로 많이 사용하는 유형이다.
- EC2 스팟 인스턴스
- AWS의 남는 EC2를 매우 싸게 빌려 쓰는 방식으로, AWS가 언제든 회수할 수 있어서 서비스가 중단될 수도 있다.
- 중단되도 괜찮은 작업이면서 비용을 최소화해야 되는 경우에 사용하는 인스턴스이다.
- EC2 예약 인스턴스
- 1년 또는 3년으로 장기 약정으로 예약해서 비용을 할인받는 방식
- 항상 실행되며 장기 사용이 확정됐을 때 사용하는 인스턴스이다.
보충: 인스턴스 유형 선택 기준은 중단 허용 여부와 사용 기간이다. 짧게 쓰거나 변동이 많으면 온디맨드, 중단을 감수하고 최저 비용이 필요하면 스팟, 1년 이상 안정적으로 사용할 거라면 예약 인스턴스를 선택한다.
참고 문서: AWS EC2 공식 문서
ECS, Lambda, Step Functions, API Gateway
ECS
ECS는 Docker 컨테이너를 쉽게 운영하게 해주는 서비스이다.
- EC2 기반의 ECS
- EC2를 직접 관리하는 방식으로 세부적인 설정을 할 수 있으나 관리 부담이 크다.
- Fargate 기반의 ECS
- 완전 관리형 서비스(서버 관리를 AWS가 알아서 하는 방식)라서 관리 부담이 비교적 작다.
- 서버의 축소/확장도 AWS가 알아서 관리해주기 때문에 예측 불가능한 트래픽에도 유연하게 대응할 수 있다.
보충: EC2 기반 ECS는 인스턴스 유형·수량을 직접 제어하고 싶을 때 쓰고, Fargate는 인프라 관리 없이 컨테이너 코드에만 집중하고 싶을 때 쓴다. 시험에서 “서버 관리 부담 최소화” 또는 “예측 불가능한 트래픽”이 언급되면 Fargate를 고르면 된다.
참고 문서: AWS ECS 공식 문서
Lambda
Lambda는 AWS가 서버를 관리하고, 개발자는 코드만 올리면 실행되는 서비스이다.
- 서버는 AWS가 관리하고 개발자는 코드만 올리면 실행되는 서비스를 보고 서버리스(Serverless)라고 부른다.
- 요청이 올 때만 서버가 실행되고 요청이 없을 때는 서버를 중단하기 때문에 비용을 절감할 수 있다. 간헐적으로 실행해야 하는 작업인 경우에 유용하다.
- 요청이 없다가 갑자기 들어오면 실행 환경을 구성하느라 지연 시간이 발생하는데, 이런 현상을 콜드 스타트(Cold Start)라고 한다.
- 콜드 스타트 해결을 위해 프로비저닝된 동시성(Provisioned Concurrency)을 설정한다. 실행 환경을 미리 띄워두는 방식이다.
- 최대 15분까지 실행 시간을 보장하며, 15분이 넘어가는 작업은 Lambda에서 실행할 수 없다.
보충: Lambda는 간헐적 실행, 짧은 처리 시간, 이벤트 기반 작업에 최적화되어 있다. 15분 제한이 있어서 장기 실행 작업은 Step Functions, ECS/Fargate, EC2 등을 사용해야 한다.
참고 문서: AWS Lambda 공식 문서
Step Functions
Step Functions는 여러 작업(ex. Lambda)을 순서대로 실행시킬 수 있게 연결해주는 서비스이다.
- 실행 상태, 재시도, 오류 처리, 실패를 자동으로 관리해준다.
- Lambda와 달리 15분 이상의 장기 작업이 가능하다.
- 여러 단계의 작업을 처리해야 하는 경우 자주 사용한다.
보충: Lambda가 단일 함수 실행이라면, Step Functions는 여러 Lambda 함수를 워크플로우로 연결한다. 시험에서 “여러 단계의 작업”, “순서 보장”, “오류 처리 자동화”가 언급되면 Step Functions를 선택하면 된다.
참고 문서: AWS Step Functions 공식 문서
API Gateway
API Gateway는 외부로부터 받은 요청을 백엔드(ALB, Lambda, ECS, EC2)로 안전하게 전달하는 서비스이다.
유형
- API Gateway REST API
- 비용이 비쌈 / 지연 시간 보통 / 기능 다양함
- JWT 인증 기능을 기본적으로 제공하지 않는다.
- API Gateway HTTP API
- 비용이 저렴 / 지연 시간 낮음 / 기능이 제한적
- JWT 인증 기능을 기본적으로 제공한다.
기능
- 엣지 최적화 (Edge-optimized) : 전세계 사용자의 API 응답 속도를 줄여준다.
보충: REST API는 API 키, 사용량 계획, 요청/응답 변환 등 복잡한 기능이 필요할 때 사용하고, HTTP API는 단순한 프록시 기능과 낮은 비용이 필요할 때 사용한다. JWT 인증이 필요한 경우 HTTP API가 더 적합하다.
참고 문서: AWS API Gateway 공식 문서
SQS, SNS, EventBridge, Backup
SQS (Simple Queue Service)
SQS는 메시지(요청)를 큐에 쌓아 순서대로 처리하는 서비스이다.
- 일련의 작업을 ‘순서대로’ 처리할 수 있다.
- 결합을 느슨하게 할 수 있다. (= 결합도 낮춤 = 의존성 최소화 = 독립적으로 분리)
- 메시지를 큐에 쌓아둘 수 있어서 갑자기 몰리는 트래픽에도 메시지 손실 없이 처리할 수 있다.
- 데이터가 절대 손실되지 않고 정확하게 처리해야 될 때 자주 활용한다.
유형
- 표준 대기열 (Standard Queue)
- 높은 처리량이 필요하고 순서가 크게 중요하지 않을 때
- 선입선출 대기열 (FIFO Queue)
- 메시지를 보낸 순서대로, 정확히 딱 한 번(Exactly-Once) 처리해야 할 때
보충: SQS는 생산자(Producer)와 소비자(Consumer)를 분리해 서로 독립적으로 확장할 수 있게 해준다. 결제, 주문처럼 메시지 손실이 허용되지 않는 시나리오에 특히 유용하다. FIFO Queue는 초당 처리량이 표준 대기열보다 제한적이므로 성능이 최우선이면 표준 대기열을 선택한다.
참고 문서: AWS SQS 공식 문서
SNS (Simple Notification Service)
SNS는 같은 메시지를 여러 대상에게 전달하고 싶을 때 사용하는 서비스이다. 인스타그램이나 페이스북 같은 SNS랑 다른 의미이다.
- 주문이 완료되면 이메일 발송(SES), 로그 저장(Lambda), 주문 처리(SQS) 등 여러 대상으로 동시에 메시지를 전달할 수 있다.
보충: SNS는 하나의 메시지를 여러 구독자에게 동시에 뿌리는 pub/sub 모델이다. SQS와 자주 함께 사용하는데, SNS에서 메시지를 받아 여러 SQS 큐에 전달하는 패턴(SNS Fanout)을 활용하면 각 서비스가 독립적으로 메시지를 처리할 수 있다.
참고 문서: AWS SNS 공식 문서
EventBridge
EventBridge는 AWS 서비스끼리 기능(동작)을 연결해주는 서비스이다.
- S3에 이미지 파일이 업로드 완료되면 Lambda로 이미지 리사이징을 처리하고 싶을 때, S3 → EventBridge → Lambda로 연결하는 방식으로 사용한다.
보충: EventBridge는 규칙(Rule)을 설정해서 이벤트 소스에서 발생한 이벤트를 필터링하고 타겟으로 라우팅한다. 스케줄 기반(Cron 표현식)으로도 동작해서 정기적인 작업 자동화에도 활용할 수 있다.
참고 문서: AWS EventBridge 공식 문서
Backup
AWS Backup은 다양한 AWS 서비스의 백업을 자동화/관리할 수 있게 해주는 서비스이다.
보충: AWS Backup은 EC2, RDS, EFS, DynamoDB 등 여러 서비스의 백업을 중앙에서 통합 관리할 수 있다. 백업 정책을 한 곳에서 설정하고, 보존 기간과 스케줄을 자동화할 수 있다.
참고 문서: AWS Backup 공식 문서
VPC, 서브넷, 인터넷 게이트웨이, NAT 게이트웨이, VPC Endpoint, PrivateLink, VPC 피어링
VPC, 서브넷
VPC는 가상의 네트워크 공간(컴퓨터들끼리 서로 통신하는 공간)을 의미한다.
서브넷은 하나의 큰 네트워크(VPC, 회사 네트워크 등)를 작은 네트워크 단위로 나눈 것을 의미한다.
VPC를 나눌 때 가장 많이 활용하는 방식은 외부에서 접근 가능한 네트워크(퍼블릭 서브넷)와 외부에서 접근이 불가능한 네트워크(프라이빗 서브넷)로 나누는 방식이다.
보충: 퍼블릭 서브넷은 웹 서버처럼 외부와 직접 통신이 필요한 리소스를, 프라이빗 서브넷은 DB처럼 외부에서 직접 접근하면 안 되는 리소스를 배치하는 용도로 주로 활용한다.
인터넷 게이트웨이
인터넷 게이트웨이는 VPC와 외부 인터넷 간에 통신할 수 있게 해주는 장치이다. VPC는 원래 외부 인터넷과 소통할 수 없는 독립적으로 분리된 네트워크인데, 특정 서브넷에 인터넷 게이트웨이를 부착함으로써 외부 인터넷과 서로 통신할 수 있게 된다. 인터넷 게이트웨이 덕분에 외부 인터넷과 서로 통신할 수 있게 된 서브넷을 퍼블릭 서브넷이라고 부른다.
보충: 인터넷 게이트웨이는 VPC 단위로 연결하며, 하나의 VPC에 하나만 붙일 수 있다. 퍼블릭 IP나 탄력적 IP(EIP)가 있는 EC2만 인터넷 게이트웨이를 통해 외부와 통신할 수 있다.
NAT 게이트웨이
NAT 게이트웨이는 외부 인터넷에서 서브넷으로 접근할 수는 없지만 서브넷에서 외부 인터넷으로 접근할 수 있게 해주는 장치이다. 내부에서 외부로만 나갈 수 있는 출입구라고 생각하면 이해하기 편하다.
NAT 게이트웨이는 보안을 위해 서브넷에서는 외부 인터넷에 접근이 가능하지만 외부 인터넷에서는 서브넷에 접근할 수 없게 만들고 싶을 때 사용한다. 이렇게 만든 서브넷을 프라이빗 서브넷이라고 부른다.
- 인터넷 게이트웨이는 VPC에 연결하지만, NAT 게이트웨이는 특이하게도 퍼블릭 서브넷에 연결한다. 프라이빗 서브넷을 외부 인터넷에 직접 노출시키지 않으면서도 인터넷에 접근은 할 수 있게 만들어야 해서 나온 구조이다.
보충: 프라이빗 서브넷의 EC2가 소프트웨어 업데이트나 외부 API 호출이 필요할 때 NAT 게이트웨이를 사용한다. NAT 게이트웨이 자체는 퍼블릭 서브넷에 위치하고 EIP를 가지고 있어서 인터넷과 통신하는 중계자 역할을 한다.
VPC Endpoint
VPC Endpoint는 인터넷을 거치지 않고 AWS 서비스(S3, DynamoDB 등)에 직접 연결해주는 서비스이다. 인터넷을 거치지 않고 통신하기 때문에 보안 목적으로 많이 사용한다.
- 게이트웨이 VPC 엔드포인트
- 인터넷을 거치지 않고 S3, DynamoDB에 접근할 수 있게 해준다.
- 인터페이스 VPC 엔드포인트
- 인터넷을 거치지 않고 S3, DynamoDB를 포함한 모든 AWS 리소스에 접근할 수 있게 해준다.
보충: 게이트웨이 VPC 엔드포인트는 라우팅 테이블에 경로를 추가하는 방식으로 동작하며 추가 비용이 없다. 인터페이스 VPC 엔드포인트는 ENI(탄력적 네트워크 인터페이스)를 서브넷에 생성하는 방식으로 동작하며 시간당 요금이 부과된다.
참고 문서: AWS VPC Endpoint 공식 문서
PrivateLink
PrivateLink는 인터넷을 거치지 않고 특정 VPC의 사용자가 다른 VPC에 있는 애플리케이션에 접속하게 만들고 싶을 때 사용한다. 인터넷을 거치지 않고 통신하기 때문에 보안 목적으로 많이 사용한다.
보충: PrivateLink는 VPC 피어링과 달리 전체 VPC 네트워크를 연결하는 것이 아니라 특정 서비스(엔드포인트)만 노출한다. 주소 범위가 겹치는 VPC 간에도 사용할 수 있다는 장점이 있다.
VPC 피어링
VPC 피어링(Peering)은 인터넷을 거치지 않고 서로 다른 VPC를 사설 네트워크로 직접 연결하는 기능을 의미한다.
보충: VPC 피어링은 같은 리전뿐 아니라 다른 리전(Cross-Region Peering) 또는 다른 AWS 계정 간에도 설정할 수 있다. 단, 전이적 피어링(A-B-C 연결 시 A가 C에 직접 통신)은 지원하지 않으므로 A와 C를 직접 연결해야 한다.
NAT Gateway vs VPC Endpoint vs PrivateLink vs VPC 피어링
공통점
- VPC 내부에서 외부(AWS 서비스, 애플리케이션, 인터넷)로 연결
차이점
- NAT Gateway : 외부 인터넷 연결용 / Private EC2 → 인터넷
- VPC Endpoint : AWS 서비스 연결용 / VPC → (인터넷 연결 없이) → AWS 서비스
- PrivateLink : 애플리케이션 연결용 / VPC → (인터넷 연결 없이) → 다른 VPC의 애플리케이션
- VPC 피어링 : VPC 연결용 / VPC → (인터넷 연결 없이) → VPC
보충: 시험에서 자주 혼동되는 개념이다. “인터넷 없이 AWS 서비스 접근”은 VPC Endpoint, “인터넷 없이 다른 VPC의 특정 서비스 접근”은 PrivateLink, “인터넷 없이 다른 VPC 전체와 연결”은 VPC 피어링, “인터넷 접근이 필요한 프라이빗 서브넷”은 NAT Gateway를 선택한다.