image

클라우드 컴퓨팅 환경에서는 적절한 컴퓨팅 서비스를 선택하는 것이 매우 중요하다. AWS는 다양한 워크로드에 최적화된 여러 컴퓨팅 옵션을 제공하며, 각각은 고유한 특징과 사용 사례를 가지고 있다.
그 중에서도 대표적인 컴퓨팅 모델은 다음의 세 가지로 나눌 수 있다.

  • 가상 머신(VM) 기반 컴퓨팅
  • 컨테이너 기반 컴퓨팅
  • 서버리스 컴퓨팅

다음은 이 세 가지 컴퓨팅 방식의 특징과 장단점을 비교하고, 어떤 상황에서 어떤 서비스를 선택하면 좋은지에 대해 정리한 내용이다.

AWS 컴퓨팅 옵션

image

AWS는 기본적으로 3가지 유형의 컴퓨팅 옵션을 제공한다.

  1. 가상머신(VM) - Amazon EC2
  2. 컨테이너 - Amazon ECS, Amazon EKS
  3. 서버리스 - 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 인스턴스는 생성부터 종료까지 여러 상태를 거친다.

  1. Pending: 인스턴스 설정 중 (요금 부과 없음)
  2. Running: 사용 가능 상태 (요금 부과 시작)
  3. Stopping: 중지 진행 중
  4. Stopped: 완전히 중지됨 (컴퓨팅 요금 없음, 스토리지 요금만)
  5. Shutting down: 종료 진행 중
  6. Terminated: 완전히 삭제됨

EC2 인스턴스 3가지 동작:

  • 재부팅: IP 주소 유지, 데이터 보존
  • 중지/시작: 새로운 하드웨어에 배치될 수 있음, EBS 데이터 보존
  • 종료: 모든 데이터 삭제, 복구 불가능

EC2 요금 옵션

  1. 온디맨드: 사용한 만큼만 지불, 장기 약정 없음
  2. 예약 인스턴스: 1-3년 약정으로 최대 75% 할인
  3. 스팟 인스턴스: 미사용 용량 활용, 최대 90% 할인
  4. 전용 호스트: 물리적 서버 전체 임대

고가용성을 위한 아키텍팅

어떤 애플리케이션이든 최소 2개의 서로 다른 가용 영역에 2개 이상의 EC2 인스턴스를 배치하는 것이 좋다.

  • 인스턴스 1개 실패 → 애플리케이션 다운
  • 10개 중 1개 실패 → 10%만 영향, 가용성 거의 유지

컨테이너 서비스

컨테이너란?

→ 컨테이너는 코드와 모든 종속성을 패키징하는 표준화된 단위
어떤 환경에서든 일관되게 실행되도록 설계되었다.

VM vs 컨테이너

구분 가상 머신(VM) 컨테이너
운영 체제 각각 독립된 OS 호스트 OS 공유
시작 시간 느림 (분 단위) 빠름 (초 단위)
리소스 사용 많음 적음
격리 수준 높음 중간

Amazon ECS (Elastic Container Service)

AWS 네이티브 컨테이너 오케스트레이션 서비스

구성 요소:

  • 태스크 정의: 컨테이너 설정을 정의하는 JSON 파일
  • 서비스: 태스크의 원하는 개수를 유지
  • 클러스터: 컨테이너가 실행되는 인프라

실행 모드:

  1. EC2 모드: 사용자가 관리하는 EC2 인스턴스에서 실행
  2. 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가지 특징

  1. 관리할 서버가 없음
  2. 사용량에 따른 자동 확장
  3. 유휴 리소스 비용 없음
  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 강의를 토대로 공부한 내용을 정리한 것입니다.