
클라우드 컴퓨팅 환경에서는 적절한 컴퓨팅 서비스를 선택하는 것이 매우 중요하다. AWS는 다양한 워크로드에 최적화된 여러 컴퓨팅 옵션을 제공하며, 각각은 고유한 특징과 사용 사례를 가지고 있다.
그 중에서도 대표적인 컴퓨팅 모델은 다음의 세 가지로 나눌 수 있다.
- 가상 머신(VM) 기반 컴퓨팅
- 컨테이너 기반 컴퓨팅
- 서버리스 컴퓨팅
다음은 이 세 가지 컴퓨팅 방식의 특징과 장단점을 비교하고, 어떤 상황에서 어떤 서비스를 선택하면 좋은지에 대해 정리한 내용이다.
AWS 컴퓨팅 옵션
AWS는 기본적으로 3가지 유형의 컴퓨팅 옵션을 제공한다.
- 가상머신(VM) - Amazon EC2
- 컨테이너 - Amazon ECS, Amazon EKS
- 서버리스 - AWS Lambda, AWS Fargate
각 옵션은 특정한 사용 사례에 최적화되어 있으며, 한 서비스가 모든 상황에 적합하지는 않고 적절히 선택할 수 있어야 한다.
Amazon EC2: 클라우드 가상 서버
EC2란?
Amazon Elastic Compute Cloud(EC2)는 클라우드에서 안전하게 크기 조정이 가능한 컴퓨팅 용량을 제공하는 웹 서비스다. 물리적 서버를 에뮬레이션하는 가상 머신을 제공하여 사용자가 운영체제를 설치하고 애플리케이션을 실행할 수 있게 해준다.
EC2 구성 요소
1. Amazon Machine Image (AMI)
AMI는 EC2 인스턴스의 템플릿 역할을 한다. 케이크와 레시피의 관계를 비유해보면, AMI는 레시피이고 EC2는 실제 케이크다.
AMI에 포함되는 내용:
- 운영체제
- 스토리지 매핑
- 아키텍처 유형
- 시작 권한
- 사전 설치된 애플리케이션
AMI 선택 옵션들:
- Quick Start AMI: AWS에서 제공하는 기본 이미지
- AWS Marketplace AMI: 써드파티 공급업체 제공
- 사용자 AMI: 사용자가 직접 생성한 커스텀 이미지
- 커뮤니티 AMI: 커뮤니티에서 공유하는 이미지
2. 인스턴스 유형
EC2 인스턴스 유형은 패밀리 + 세대 + 추가 기능 + 크기로 구성된다.
예시로 c5n.xlarge는
c: 컴퓨팅 최적화 패밀리5: 5세대n: 추가 기능 (네트워크 최적화)xlarge: 인스턴스 크기
주요 인스턴스 패밀리:
- 범용: 균형 잡힌 컴퓨팅, 메모리, 네트워킹 리소스
- 컴퓨팅 최적화: 고성능 프로세서가 필요한 컴퓨팅 집약적 애플리케이션
- 메모리 최적화: 메모리에서 대용량 데이터셋을 처리하는 워크로드
- 스토리지 최적화: 로컬 스토리지에 대한 높은 순차 읽기/쓰기 액세스
EC2 인스턴스 수명 주기
EC2 인스턴스는 생성부터 종료까지 여러 상태를 거친다.
- Pending: 인스턴스 설정 중 (요금 부과 없음)
- Running: 사용 가능 상태 (요금 부과 시작)
- Stopping: 중지 진행 중
- Stopped: 완전히 중지됨 (컴퓨팅 요금 없음, 스토리지 요금만)
- Shutting down: 종료 진행 중
- Terminated: 완전히 삭제됨
EC2 인스턴스 3가지 동작:
- 재부팅: IP 주소 유지, 데이터 보존
- 중지/시작: 새로운 하드웨어에 배치될 수 있음, EBS 데이터 보존
- 종료: 모든 데이터 삭제, 복구 불가능
EC2 요금 옵션
- 온디맨드: 사용한 만큼만 지불, 장기 약정 없음
- 예약 인스턴스: 1-3년 약정으로 최대 75% 할인
- 스팟 인스턴스: 미사용 용량 활용, 최대 90% 할인
- 전용 호스트: 물리적 서버 전체 임대
고가용성을 위한 아키텍팅
어떤 애플리케이션이든 최소 2개의 서로 다른 가용 영역에 2개 이상의 EC2 인스턴스를 배치하는 것이 좋다.
- 인스턴스 1개 실패 → 애플리케이션 다운
- 10개 중 1개 실패 → 10%만 영향, 가용성 거의 유지
컨테이너 서비스
컨테이너란?
→ 컨테이너는 코드와 모든 종속성을 패키징하는 표준화된 단위
어떤 환경에서든 일관되게 실행되도록 설계되었다.
VM vs 컨테이너
| 구분 | 가상 머신(VM) | 컨테이너 |
|---|---|---|
| 운영 체제 | 각각 독립된 OS | 호스트 OS 공유 |
| 시작 시간 | 느림 (분 단위) | 빠름 (초 단위) |
| 리소스 사용 | 많음 | 적음 |
| 격리 수준 | 높음 | 중간 |
Amazon ECS (Elastic Container Service)
→ AWS 네이티브 컨테이너 오케스트레이션 서비스
구성 요소:
- 태스크 정의: 컨테이너 설정을 정의하는 JSON 파일
- 서비스: 태스크의 원하는 개수를 유지
- 클러스터: 컨테이너가 실행되는 인프라
실행 모드:
- EC2 모드: 사용자가 관리하는 EC2 인스턴스에서 실행
- Fargate 모드: AWS가 관리하는 서버리스 인프라에서 실행
태스크 정의 예시:
{
"family": "webserver",
"containerDefinitions": [
{
"name": "web",
"image": "nginx",
"memory": "100",
"cpu": "99"
}
],
"requiresCompatibilities": ["FARGATE"],
"networkMode": "awsvpc",
"memory": "512",
"cpu": "256"
}Amazon EKS (Elastic Kubernetes Service)
→ 관리형 Kubernetes 서비스
ECS vs EKS 비교
| 구분 | Amazon ECS | Amazon EKS |
|---|---|---|
| 기술 기반 | AWS 네이티브 | Kubernetes |
| 컨테이너 단위 | 태스크 | 포드 |
| 워커 노드 | 컨테이너 인스턴스 | Kubernetes 노드 |
| 러닝 커브 | 쉬움 | 복잡함 |
| 에코시스템 | AWS 중심 | 광범위한 오픈소스 |
서버리스 컴퓨팅
서버리스의 4가지 특징
- 관리할 서버가 없음
- 사용량에 따른 자동 확장
- 유휴 리소스 비용 없음
- 내장된 고가용성과 내결함성
AWS Fargate
→ 컨테이너용 서버리스 컴퓨팅 엔진
Fargate는 EC2 인스턴스를 추상화하여 인프라 관리 없이 컨테이너를 실행할 수 있게 해준다. Amazon ECS와 EKS 모두에서 사용 가능하며, 사용자는 컨테이너 정의만 하면 AWS가 나머지를 처리한다.
AWS Lambda
→ 이벤트 기반 서버리스 컴퓨팅
Lambda의 핵심 개념:
- 함수: 실행할 코드 단위
- 트리거: 함수를 실행시키는 이벤트
- 런타임: 지원하는 프로그래밍 언어 환경
- 핸들러: 함수의 진입점
Lambda 사용 사례:
- 데이터 처리
- 실시간 스트림 처리
- 웹 애플리케이션 백엔드
- IoT 백엔드
- 이미지/비디오 처리
요금 모델:
- 요청 횟수당 과금
- 실행 시간(밀리초 단위)당 과금
- 최소 요금 없음
적절한 컴퓨팅 서비스 선택하기
의사결정 가이드
사용 사례별 추천
1. 기존 애플리케이션 마이그레이션 (리프트 앤 시프트) → Amazon EC2
📌 리프트 앤 시프트(Lift and Shift): 클라우드 마이그레이션 전략 중하나로 기존의 온프레미스(on-premise) 애플리케이션을 거의 변경 없이 클라우드 환경으로 그대로 옮기는(migrate) 방식을 의미
- 최소한의 리팩터링으로 마이그레이션 가능
- 기존 인프라와 유사한 환경 제공
2. 이벤트 기반 처리 (파일 업로드 시 데이터 처리) → AWS Lambda
- 트리거 기반 실행
- 사용한 만큼만 비용 지불
- 자동 확장
3. 마이크로서비스 아키텍처 → Amazon ECS/EKS
- 빠른 확장/축소
- 코드 이동성
- 환경 일관성
4. 대용량 데이터 처리 → Amazon EC2 (메모리 최적화)
- 고성능 컴퓨팅 필요
- 예측 가능한 워크로드
선택 시나리오 예시
시나리오 1: 분기별 인벤토리 업데이트
요구사항: S3에 업로드된 스프레드시트를 데이터베이스에 자동 저장
최적 선택: AWS Lambda
- 분기에 한 번만 실행 → 서버 상시 운영 불필요
- S3 이벤트 트리거 활용
- 실행 시간만큼만 과금
시나리오 2: 온프레미스 Linux 애플리케이션 마이그레이션
요구사항: 최소 리팩터링으로 AWS 이전, 탄력적 확장 필요
최적 선택: Amazon EC2
- 기존 Linux 환경과 동일한 실행 환경
- Auto Scaling 지원
- 최소 코드 변경
시나리오 3: 새로운 마이크로서비스 애플리케이션
요구사항: 빠른 배포, 확장성, 환경 일관성
최적 선택: Amazon ECS/EKS
- 컨테이너의 이동성과 일관성
- 빠른 부팅 시간으로 신속한 확장
- CI/CD 파이프라인과 잘 통합
이 글은 AWS Skill Builder의 AWS Technical Essentials 강의를 토대로 공부한 내용을 정리한 것입니다.