AWS 핵심 서비스 5가지 개념 정리 (EC2, S3, RDS, DynamoDB, Lambda)
1. EC2 (Elastic Compute Cloud): 가상 서버
EC2는 AWS의 가장 기본이 되는 서비스로, 쉽게 말해 클라우드에서 빌려 쓰는 가상 컴퓨터(서버)입니다.
웹사이트를 운영하기 위해 서버 컴퓨터가 필요할 때, 물리적인 장비를 구매하는 대신 EC2 인스턴스를 몇 번의 클릭만으로 생성하고 대여할 수 있습니다.
핵심 포인트
- AMI (Amazon Machine Image): 서버를 부팅하는 데 필요한 템플릿입니다. OS(Windows, Linux) + 소프트웨어가 포함되어 있습니다.
- 인스턴스 유형 (Instance Types): 서버의 "사양"입니다. (예:
t시리즈는 범용/버스터블, m시리즈는 범용, c시리즈는 CPU 최적화, r시리즈는 메모리 최적화)
- Security Groups (보안 그룹): 인스턴스(서버) 레벨의 방화벽입니다. Inbound 트래픽과 Outbound 트래픽의 포트와 IP를 제어합니다.
- EBS (Elastic Block Store): EC2 인스턴스에 연결하는 가상 하드 디스크(SSD/HDD)입니다. EC2가 꺼져도 데이터가 보존됩니다.
- 구매 옵션:
- On-Demand: 사용한 만큼 지불 (가장 비싸지만 유연함)
- Reserved Instances (RI): 1년 또는 3년 약정 (대폭 할인)
- Spot Instances: 경매 방식 (가장 저렴하지만, AWS가 중단시킬 수 있음. 배치 작업에 적합)
SAA 문제에서의 역할: 웹 서버, 애플리케이션 서버, 배치 처리, DB 서버(직접 설치 시) 등 서버 OS에 대한 완전한 제어가 필요할 때 사용됩니다.
2. S3 (Simple Storage Service): 객체 스토리지
S3는 파일을 저장하는 무한한 용량의 저장소입니다. EC2가 '서버'라면, S3는 '파일 창고'입니다.
EC2의 EBS와 가장 큰 차이점은, S3는 OS나 소프트웨어를 설치하는 하드디스크가 아니라, 완성된 파일(객체)을 그대로 저장하고 HTTP(S) 주소로 접근할 수 있다는 것입니다.
핵심 포인트
- 객체 스토리지 (Object Storage): 파일을 '객체' 단위로 저장합니다. 폴더 구조는 사실 가상이며,
Key(파일 경로)와 Value(데이터)로 관리됩니다.
- 높은 내구성 및 가용성: 데이터가 자동으로 여러 리전에 복제되어 사실상 99.999999999%의 내구성을 가집니다. (데이터 유실 걱정 X)
- 스토리지 클래스 (Storage Classes):
- S3 Standard: 가장 빠르고 비쌈. 자주 접근하는 데이터.
- S3 Intelligent-Tiering: 접근 패턴에 따라 자동으로 클래스 이동. (비용 최적화)
- S3 Standard-IA / One Zone-IA: 자주 접근하지 않는 데이터. (백업용)
- S3 Glacier / Glacier Deep Archive: 매우 저렴. 장기 보관용 아카이브. (데이터 검색에 시간 소요)
- 정적 웹 사이트 호스팅: S3 버킷만으로 HTML/CSS/JS로 구성된 정적 웹 사이트를 호스팅할 수 있습니다.
- 권한 관리: Bucket Policy(버킷 전체 정책)와 ACL(객체별 권한)로 접근을 제어합니다.
SAA 문제에서의 역할: 이미지/동영상 원본 저장, 로그 파일 저장, 데이터 백업 및 아카이브, 정적 웹사이트의 리소스(HTML, CSS, JS) 저장.
3. RDS (Relational Database Service): 관리형 관계형 DB
RDS는 AWS가 대신 관리해주는 관계형 데이터베이스(RDBMS) 서비스입니다.
EC2에 직접 MySQL이나 PostgreSQL을 설치할 수도 있지만, RDS를 사용하면 DB 설치, OS 패치, 백업, 모니터링, 고가용성 구성 등 귀찮은 관리 작업을 AWS가 대신해줍니다. 개발자는 비즈니스 로직에만 집중할 수 있습니다.
핵심 포인트
- 관리형 서비스 (Managed Service): 개발자는 OS나 DB 서버에 직접 접속(SSH)할 수 없습니다. AWS가 알아서 관리해줍니다.
- 지원 엔진: MySQL, PostgreSQL, MariaDB, Oracle, SQL Server 그리고 AWS가 만든 Amazon Aurora를 지원합니다.
- Multi-AZ (다중 AZ): 고가용성(HA)의 핵심입니다. 데이터베이스의 이중화를 의미합니다.
- Master DB가 있는 AZ에 장애가 발생하면, 다른 AZ에 대기 중이던 Standby DB로 자동 Failover(장애 조치)가 일어납니다. (데이터 동기 복제)
- Read Replicas (읽기 전용 복제본): 성능 향상이 목적입니다.
- Master DB의 복제본을 여러 개 만들어, 읽기(SELECT) 트래픽을 분산시킵니다. (데이터 비동기 복제)
- Multi-AZ(장애 대비)와 Read Replicas(성능 향상)는 목적이 다릅니다.
SAA 문제에서의 역할: 웹 애플리케이션의 메인 데이터베이스. 정형화된 데이터(사용자 정보, 상품 목록, 주문 내역)를 저장하고 관리할 때 사용됩니다.
4. DynamoDB: 관리형 NoSQL DB
DynamoDB는 AWS가 제공하는 완전 관리형 NoSQL 데이터베이스입니다. RDS가 관계형(RDBMS)이라면, DynamoDB는 비관계형(NoSQL)입니다.
RDS보다 더 완전한 관리형 서비스로, 서버 자체를 신경 쓸 필요가 전혀 없습니다. 사용자는 테이블을 만들고 읽기/쓰기 용량만 설정하면 됩니다.
핵심 포인트
- NoSQL / Key-Value: 스키마가 유연한 JSON(Document)과 유사한 데이터를 저장합니다.
Key(Primary Key)를 통해 데이터를 조회합니다.
- 엄청난 확장성 및 속도: 10ms 미만의 매우 빠른 응답 속도를 보장하며, 초당 수백만 건의 요청을 처리할 수 있도록 자동 확장됩니다.
- 완전 관리형 (Fully Managed/Serverless): RDS와 달리 인스턴스 크기, OS 패치 등을 전혀 고려할 필요가 없습니다.
- 용량 모드:
- Provisioned (프로비저닝됨): 읽기/쓰기 용량(RCU/WCU)을 미리 할당. (예측 가능한 트래픽)
- On-Demand (온디맨드): 사용한 만큼만 지불. (예측 불가능한 트래픽)
SAA 문제에서의 역할: 초고속 응답 속도가 필요할 때, 대규모 트래픽이 예상될 때, 스키마가 유연해야 할 때 (예: 게임 랭킹 보드, IoT 센서 데이터, 세션 데이터, 장바구니).
5. Lambda: 서버리스 컴퓨팅
Lambda는 EC2의 정반대에 있는 서비스입니다. EC2가 '서버'라면, Lambda는 '서버가 없는(Serverless)' 컴퓨팅 서비스입니다.
서버를 24시간 켜두는 대신, 특정 이벤트가 발생했을 때만 코드를 실행하고, 실행된 시간(ms)만큼만 비용을 지불합니다.
핵심 포인트
- 서버리스 (Serverless): 개발자는 서버(EC2)를 프로비저닝하거나 관리할 필요가 없습니다. 오직 코드(함수)만 업로드하면 됩니다.
- 이벤트 기반 (Event-Driven): 코드가 스스로 실행되는 것이 아니라, '이벤트'에 의해 트리거됩니다.
- (예: S3에 파일이 업로드되면 -> Lambda 실행)
- (예: API Gateway로 HTTP 요청이 오면 -> Lambda 실행)
- (예: DynamoDB 테이블에 데이터가 추가되면 -> Lambda 실행)
- 비용 효율성: 코드가 실행되는 밀리초(ms) 단위와 호출 횟수로만 과금됩니다. 아무도 호출하지 않으면 비용은 0입니다. (유휴 비용 없음)
- 상태 비저장 (Stateless): Lambda 함수는 상태를 저장하지 않습니다. 필요한 데이터는 DynamoDB나 S3 같은 외부 저장소에 보관해야 합니다.
SAA 문제에서의 역할: S3 썸네일 이미지 자동 생성, API Gateway와 연동하여 서버리스 API 백엔드 구성, 실시간 데이터 처리 파이프라인, 간단한 자동화 스크립트 실행.
정리
- 컴퓨팅: EC2 (서버 O) vs Lambda (서버 X)
- 스토리지: S3 (파일/객체 저장)
- 데이터베이스: RDS (관계형/관리형) vs DynamoDB (NoSQL/완전관리형)