[AWS] 2. EC2, EBS 톺아보기

Baedonguri·2일 전
0
post-thumbnail

Amazon EC2 (Elastic Compute Cloud)

Amazon EC2는 클라우드에서 안전하고 확장 가능한 컴퓨팅 용량을 제공하는 서비스로, 사용자가 원하는 만큼의 가상 서버를 신속히 구성하고 관리할 수 있도록 지원함


목차

  1. EC2 Introduce
  2. EC2 Components
  3. EC2 Instaces
  4. EC2 Instace Purchase Options
  5. EC2 AMI
  6. EC2 Security Group
  7. EC2 Auto Scaling Group
  8. AWS Elastic Block Store
  9. 참고 자료

EC2 Introduce

Amazon EC2는 사용자가 애플리케이션을 클라우드에서 실행할 수 있도록 다양한 인스턴스 유형을 제공하며, 이를 통해 확장성, 유연성, 비용 효율성을 갖춘 서버 환경을 지원합니다.

주요 개념

  • Instance: EC2에서 제공하는 가상 머신(virtual machine).
  • AMI (Amazon Machine Image): 인스턴스 생성을 위한 템플릿.
  • Instance Type: 컴퓨팅, 메모리, 스토리지 등이 다른 다양한 유형.
  • Amazon EBS Volume : Elastic Block Store를 사용하는 데이터에 대한 영구 스토리지 볼륨
  • Instance Store Volume : 인스턴스를 중단, 최대 절전 모드로 전환 또는 종료할 때 삭제되는 임시 데이터용 스토리지 볼륨.
  • Key Pair : 인스턴스에 대한 보안 로그인 정보. AWS는 퍼블릭 키를 저장하고 사용자는 프라이빗 키를 안전한 장소에 저장
  • Security Group: 인스턴스에 도달할 수 있는 프로토콜, 포트 및 소스 IP 범위와 인스턴스가 연결할 수 있는 대상 IP 범위를 지정할 수 있는 가상 방화벽.

EC2 Components

  • AMI: 인스턴스에서 실행할 소프트웨어(예: OS)가 포함된 템플릿
  • Key Pair: 인스턴스에 연결할 때 ID를 증명하는 데 사용하는 보안 자격 증명 세트. 퍼블릭 키는 인스턴스에 있고 프라이빗 키는 로컬에 있음
  • Network: Virtual Private Cloud(VPC)는 AWS 계정 전용 가상 네트워크이며 기본 VPC에는 각 가용 영역에 기본 서브넷이 있음
  • Security Group: 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할
  • EBS Volume: 이미지의 루트 볼륨이 필요함. 필요에 따라 데이터 볼륨을 추가할 수 있음

EC2 Instances

1. 인스턴스 종류

인스턴스 유형설명
범용다양한 워크로드에 적합한 균형 있는 성능 제공 (예: T, M 시리즈)
컴퓨팅 최적화고성능 CPU가 필요한 컴퓨팅 작업에 적합 (예: C 시리즈)
메모리 최적화대규모 메모리를 요구하는 데이터베이스, 캐싱 등에 적합 (예: R, X 시리즈)
스토리지 최적화고속 I/O 성능을 요구하는 작업에 최적화 (예: I, D 시리즈)
가속화된 컴퓨팅GPU, FPGA 등이 필요한 고성능 연산에 최적 (예: P, G 시리즈)

2. 인스턴스 선택 시 고려사항

  • 애플리케이션의 특성과 요구사항 (CPU, 메모리, 스토리지, 네트워크 성능)
  • 비용 효율성 (온디맨드, 예약 인스턴스, 스팟 인스턴스 등의 가격 모델 고려)
  • 확장성 및 탄력성 요구사항
  • 규정 준수 및 보안 요구사항
  • 지리적 위치 및 가용 영역 고려

3. EC2 인스턴스 선택 방법 및 최적화 도구 활용

  • AWS EC2는 다양한 인스턴스 유형을 제공하여, 워크로드 특성에 맞게 선택할 수 있도록 함.
  • Cost Explorer:
    • 사용법: 지난 14일간의 리소스 사용량과 비용을 분석해 특정 인스턴스 패밀리 내에서 가장 적합한 인스턴스 크기를 추천받을 수 있음.
    • 활용 팁: 여러 인스턴스를 테스트할 필요 없이, 예상 비용과 리소스 요구량을 미리 분석할 수 있어 효율적
  • Compute Optimizer:
    • 사용법: 머신러닝을 기반으로 인스턴스 성능을 최적화하는 추천 사항을 제공
    • 활용 팁: CPU, 메모리, 네트워크 등의 요구사항을 예측해, 현재 선택된 인스턴스가 적합한지 판단하고 더 나은 성능 또는 비용 최적화를 위해 인스턴스 크기나 유형 변경을 제안

4. 버스트 가능한 성능 인스턴스 (Burstable performance instances)

  • Amazon EC2 인스턴스 유형으로, 기본적인 수준의 컴퓨팅 성능을 제공하면서도 필요할 때 순간적으로 추가 성능을 사용할 수 있는 기능을 가진 인스턴스.
  • 이러한 인스턴스는 기본적으로 저렴한 가격에 기본 성능을 유지하며, 일정 기간 동안 CPU 크레딧을 축적하여 추가 성능이 필요한 순간에 크레딧을 사용해 성능을 확장할 수 있음
  • 많은 범용 워크로드는 평균적으로 바쁘지 않고, 높은 수준의 지속적인 CPU 성능이 필요하지 않음..
  • 주요 특징
    • CPU 크레딧 기반: 인스턴스는 CPU 크레딧을 모아서 필요할 때 소비함. 크레딧이 충분할 경우 순간적으로 CPU 성능을 높일 수 있음
    • 기본 성능 + 순간 확장성: 기본적인 성능은 항상 제공되며, 크레딧이 쌓이면 순간적인 성능 확장이 가능
    • 비용 효율성: 저렴한 비용으로 안정적인 컴퓨팅 성능을 제공하면서, 필요할 때만 추가 성능을 사용해 비용 절감을 가능
  • 활용 사례
    • 성능 순간 확장 가능 인스턴스는 다음과 같은 불규칙한 트래픽이나 가벼운 작업 부하가 있는 애플리케이션에 적합하다.
    1. 웹 서버: 대부분의 웹 사이트는 트래픽이 일정하지 않기 때문에, 기본 성능으로 대부분의 요청을 처리하고, 순간적인 트래픽 증가 시 확장된 성능으로 대응이 가능!
    2. 개발 및 테스트 환경: 지속적인 높은 성능이 필요하지 않지만, 간헐적으로 높은 성능을 요구하는 개발, 테스트 서버에 적합
    3. 소규모 데이터베이스: 트래픽이 일정하지 않은 소규모 데이터베이스에서는 기본 성능으로 충분하며, 순간적으로 처리 성능이 요구될 때 확장된 성능을 사용할 수 있음
    4. 마이크로서비스: 특정 시간에만 높은 성능이 필요하고 그 외에는 기본 성능만으로도 충분한 마이크로서비스 아키텍처에 적합
  • 장점
    • 유연성: 일관된 기본 성능과 필요할 때의 순간 성능 확장이 가능해 다양한 애플리케이션에서 활용할 수 있음
    • 비용 절감: 필요한 순간에만 성능을 확장하기 때문에 비용을 최적화할 수 있음
  • 사용 가능 타입
    • EC2 버스트 인스턴스는 T4g, T3a 및 T3 인스턴스 유형과 이전 세대 T2 인스턴스 유형으로 구성됨
    • T4g: T3 대비 최대 40% 더 높은 가격 대비 성능과 20% 더 낮은 비용을 제공하는 가장 저렴한 유형
    • T3a: T3 인스턴스 대비 10% 더 낮은 비용으로 가장 저렴한 x86 기반 인스턴스
    • T3: 이전 세대 T2 인스턴스에 비해 최대 30% 낮은 가격/성능으로 x86 워크로드에 대한 최고의 피크 가격/성능
    • T2:이전 세대 버스트 가능 인스턴스

EC2 Instance Purchase Options

1. 구매옵션 종류

  • 온디멘드(On-Demand) 인스턴스
    • 특징: 필요할 때 즉시 인스턴스를 시작하며, 장기 계약 없이 시간당 또는 초당 과금.
    • 활용: 예측 불가능한 워크로드나 일시적인 테스트 환경에 적합.
    • 예시: 특정 마케팅 캠페인, 이벤트로 트래픽 급격히 증가할 때 혹은 스타트업의 초기 제품 (장기약정 부담)
  • 예약 인스턴스(Reserved Instances)
    • 특징: 1년 또는 3년 동안 EC2 인스턴스를 예약하여 비용을 절감. 최대 75%까지 할인 가능.
    • 활용: 일정한 워크로드가 예상되는 경우에 장기적으로 비용 절감.
    • 워크로드 예시: 지속적인 접근이 필요하고 예상 사용량이 일정한 사내 인프라 어플리케이션, 백엔드 데이터 베이스 서버 등 항상 가동이 필요한 시스템.
  • 절약 플랜(Savings Plans)
    • 특징: EC2 인스턴스 유형과 상관없이, 약정한 사용량에 대해 할인 제공. 1년 또는 3년 약정.
    • 활용: 특정 인스턴스 유형에 제한되지 않고 유연하게 인스턴스를 사용할 때 비용 절감.
    • 예시: 워크로드 특성상 EC2 인스턴스 유형을 자주 변경하거나 서버리스 환경(Lambda, Fargate)과 함께 사용하는 경우나, 신규 서비스 런칭 후 안정화 단계 (사용자 패턴에 따라 유형 변경할 때)
  • 스팟 인스턴스(Spot Instances)
    • 특징: AWS에서 사용하지 않는 여유 인스턴스를 저렴하게 사용할 수 있음. 최대 90%까지 할인 가능하지만 언제든 종료될 수 있음.
    • 활용: 중단에 민감하지 않은 배치 작업, 빅데이터 처리, 분산 컴퓨팅 작업에 적합.
    • 예시: 비정기적 데이터 분석 작업, 이미지 및 동영상 렌더링 작업과 같은 일정 시간이 소요되는 배치작업, 대규모 분산 컴퓨팅 작업 (HPC)
  • 전용 호스트(Dedicated Hosts)
    • 특징: 물리적 서버 전체를 전용으로 사용하며, 인스턴스 배치를 제어할 수 있음. 라이선스 관리에도 유리.
    • 활용: 라이선스 요구 사항이 있거나 규제 준수를 위해 물리적 서버에 대한 완전한 제어가 필요한 경우.
    • 예시: BYOL(Bring Your Own License)을 사용해야 하거나 특정 물리적 서버 요구 사항이 있을 때, 데이터 격리 요구가 높은 프로젝트나 민감한 정보가 포함된 워크로드.
  • 전용 인스턴스(Dedicated Instances)
    • 특징: 다른 고객과 물리적 서버를 공유하지 않고 전용 인프라에서 실행. 그러나 전용 호스트처럼 물리적 제어는 없음.
    • 활용: 보안과 규제 요건에 맞춰 물리적 격리가 필요한 워크로드에 적합.
    • 예시: 보안 요건이 높은 데이터베이스나 다른 고객과의 물리적 격리를 위해 전용 인프라가 필요한 워크로드
  • 용량 예약(Capacity Reservations)
    • 특징: 특정 리전에 용량을 예약해 필요할 때 즉시 사용할 수 있도록 보장. 예약 기간 동안에는 온디멘드 가격 적용.
    • 활용: 특정 시점에 리소스가 반드시 필요할 때나 중단 없는 가용성이 요구될 때.
    • 예시: 예측 가능한 이벤트 준비(연말연시와 같은), 긴급 대응용 DR(재해 복구) 시스템 (즉각 가동하여 가용성 보장이 필요한 비즈니스)

2. 스팟 인스턴스 (spot instance)

  • 개요
    • 온디맨드에 비해 최대 90%까지 할인 받을 수 있음
    • 스팟 인스턴스에 대해 지불할 수 있는 최대 스팟 가격을 정의함
    • 인스턴스의 스팟 가격이 설정해둔 최대 가격보다 낮다면 해당 인스턴스를 유지
    • 만약 초과할 경우 중지하거나 종료함 (유예시간 2분)
    • 시간 당 스팟은 오퍼와 용량에 따라 달라짐
    • 가격은 수요와 공급에 따라 항상 변화함
    • 안정성이 떨어지는 특성. 전체 EC2 인스턴스가 부족해지면 스팟 인스턴스를 종료 시킴..
  • 개념
    • 스팟 요청(Spot Request):
      • 스팟 요청 유형에는 단일 스팟 인스턴스를 요청하는 "단일 요청"과 여러 인스턴스를 요청하는 "스팟 플릿(Spot Fleet)"이 있음
        - 요청 시 최대 가격을 설정하며, 현재 스팟 가격이 설정한 가격 이하일 때 요청이 충족됨
    • 스팟 플릿(Spot Fleet)
      • 다양한 인스턴스 유형과 가용 영역에서 필요한 수의 스팟 인스턴스를 조합하여 자동으로 요청
      • 비용을 최적화하고, 여러 인스턴스를 관리할 수 있도록 지원하며, 온디맨드와 스팟 인스턴스를 혼합하여 사용 가능
      • 스팟 플릿은 스팟 인스턴스의 집합이며, 선택적으로 온디멘드 인스턴스임
      • 스팟 플릿은 가장 낮은 가격을 스팟 인스턴스를 자동으로 요청할 수 있게 해줌.
      • 가능한 Launch pool을 정의 → 인스턴스 타입, OS, AZ
      • 여러개의 Launch pool을 가질 수 있으며 플릿이 가장 적합한 런치풀을 선택함
      • 스팟 플릿이 예산 혹은 용량에 도달할 경우, 인스턴스 시작을 중지함.
    • 스팟 가격(Spot Price):
      • 스팟 인스턴스의 가격은 AWS의 여유 용량에 따라 변동하며, 사용자는 최대 가격을 지정할 수 있음
      • 지정한 가격보다 현재 스팟 가격이 높아지면 인스턴스가 종료될 수 있음
    • 중단 알림(Interruption Notice)
      • AWS는 스팟 인스턴스를 회수하기 약 2분 전에 중단 알림을 제공
      • 이를 통해 중요한 작업을 저장하거나 종료 작업을 수행할 수 있음
    • Spot Block
      • AWS가 스팟 인스턴스를 회수하는 걸 원하지 않을 경우 사용할 수 있는 옵션
      • 지정된 기간동안 스팟 인스턴스를 차단하는 기능 (1~6시간)
      • 그 동안 중단 없이, 해당 블록을 사용할 수 있음
      • 간헐적으로 인스턴스가 회수되는 경우가 있으나 일반적으로는 회수 되지 않음
  • 할당 전략
    • 최저가격 : 스팟 플릿은 가장 낮은 풀에서 인스턴스를 실행하기 때문에 비용 최적화가 가능. 워크로드가 매우 짧은 경우도 좋은 옵션임.
    • 다각화: 다양한 방법으로 스팟 인스턴스를 실행할 수 있음
      이 경우, 스팟 인스턴스는 유저가 정의한 모든 풀에 분산됨. → 가용성과 긴 워크로드에 적합 → 한 풀이 사라져도 다른 풀이 활성화되어 있음
    • 용량 최적화 : 사용 가능한 용량이 가장 큰 풀을 선택하고, 그 중 가장 낮은 풀을 선택하는 전략. 대부분의 워크로드에 가장 적합한 선택임
  • 활용사례
    • 배치 작업 및 데이터 분석, 장애 복원력이 뛰어난 워크로드 등에 사용함
    • 중요한 작업이나 데이터 베이스엔 적합하지 않음

EC2 AMI

Amazon Machine Image(AMI)는 여러 유형으로 제공되며, 각 유형은 운영체제, 애플리케이션 스택, 구동 소프트웨어 등에 따라 차별화된 특성을 지님.

1. AMI 유형

  • A. 퍼블릭 AMI (Public AMI)

    • 설명: AWS에서 기본적으로 제공하거나 AWS 커뮤니티에서 공유하는 공용 이미지.
    • 특성:
      • 사용자가 별도의 설정 없이 바로 사용할 수 있음.
      • Ubuntu, Amazon Linux, Windows Server 등 다양한 운영체제 제공.
      • 비용 효율적이고 빠르게 배포 가능.
  • B. AWS Marketplace AMI

    • 설명: AWS Marketplace에서 제공하는 AMI로, 상용 소프트웨어와 애플리케이션 스택이 포함되어 있음.
    • 특성:
      • 사용자는 구독 형태로 AMI를 사용하며, 소프트웨어 라이선스가 포함된 가격 구조.
      • 보안 소프트웨어, 개발 툴, 비즈니스 애플리케이션 등 다양한 상용 애플리케이션 제공.
      • AWS 지원 정책에 따른 업데이트 및 관리가 용이함.
  • C. 사용자 정의 AMI (Custom AMI)

    • 설명: 사용자가 자신만의 요구 사항에 맞춰 환경을 설정하고 이를 이미지로 저장하여 필요 시 여러 인스턴스에 동일한 환경을 배포할 수 있음.
    • 특성:
      • 사용자 요구에 따라 최적화된 환경 제공 가능.
      • 보안 설정, 애플리케이션 설치, 시스템 구성 등을 포함하여 관리 가능.
      • 유지 관리와 반복 배포에 유리하며, 동일한 설정의 환경을 일관되게 제공.
  • D. 커뮤니티 AMI (Community AMI)

    • 설명: AWS 커뮤니티에서 제공하는 이미지로, 다른 사용자가 생성하여 공유한 AMI.
    • 특성:
      • 다양한 사용자 설정을 참고할 수 있어 특정 작업에 최적화된 설정을 찾기 용이.
      • 보안 및 안정성에 대한 검토가 필요, 신뢰할 수 있는 소스 확인이 중요.
  • E. 골든 이미지 (Golden AMI)

    • 설명: 기업에서 보안과 컴플라이언스 규정을 준수한 표준화된 이미지를 생성하여 사용하는 AMI.
    • 특성:
      • 보안 규정과 컴플라이언스 요구 사항을 충족.
      • 엔터프라이즈급 환경에서 통일된 서버 환경을 배포할 때 유용.
      • 변경 관리 프로세스를 통해 관리되며, 업데이트 및 패치가 규칙적으로 적용됨.

2. 루트 디바이스 유형

AMI(Amazon Machine Image)의 루트 디바이스는 인스턴스를 시작할 때 기본 운영 체제가 설치되는 스토리지 장치를 의미함. 이 디바이스는 인스턴스의 부팅 및 운영에 필수적이다.

  • 부팅 디바이스: 인스턴스가 시작될 때 가장 먼저 접근하는 디바이스로, 운영 체제와 필수 애플리케이션이 포함됨 종류로는 EBS, Instance Store가 있음
  • EBS (Elastic Block Store)
    • 특성:
      • EBS 볼륨은 EC2 인스턴스와 독립적으로 존재하여, 인스턴스가 종료되더라도 데이터가 유지됨
      • EBS 볼륨의 상태를 스냅샷으로 저장할 수 있어, 복구 및 백업이 용이.
      • 볼륨 크기를 동적으로 변경할 수 있음
      • 일반적으로 사용되는 스토리지, 프로비저닝된 IOPS SSD, 스루풋 최적화 HDD 등 다양한 유형으로 제공됨.
      • EBS는 가용 영역 내에서 데이터의 내구성을 보장하기 위해 자동으로 복제됨
    • 활용 사례:
      • 데이터베이스: 관계형 데이터베이스 및 NoSQL 데이터베이스의 영구 저장소로 적합
      • 애플리케이션 서버: 운영 체제와 애플리케이션 데이터를 저장하는 데 사용
      • 파일 스토리지: 파일 시스템을 구성하여 파일 저장 및 접근을 위한 스토리지로 활용
      • 백업 및 복구: 스냅샷을 통해 중요한 데이터를 백업하고, 필요 시 빠르게 복구할 수 있음
  • Instance Store
    • 특성:
      • 임시 스토리지: 인스턴스와 함께 생성되며, 인스턴스가 종료되면 데이터가 삭제되어 데이터의 영구성을 보장하지 않음
      • 고속 성능: 인스턴스 스토리는 EC2 호스트의 로컬 디스크를 기반으로 하여 매우 높은 I/O 성능을 제공
      • 간단한 구조: 별도의 설정 없이 바로 사용할 수 있어 즉각적인 성능 요구에 대응할 수 있음
    • 활용 사례:
      • 임시 데이터 처리: 데이터 처리 또는 계산 과정에서 생성된 임시 파일 및 데이터 저장에 적합
      • 캐시 및 세션 저장소: 웹 애플리케이션에서 세션 정보나 캐시 데이터를 빠르게 처리하고 저장하는 데 유용
      • 테스트 및 개발: 개발 및 테스트 환경에서 빠르게 인스턴스를 생성하고, 테스트 결과나 로그 데이터를 저장할 수 있음
      • 빅데이터 처리: 대량의 데이터를 처리할 때 인스턴스 스토리지를 활용하여 빠른 속도로 데이터에 접근할 수 있음

EC2 Security Group

1. 개요

  • EC2 보안 그룹은 AWS에서 제공하는 가상 방화벽
  • EC2 인스턴스에 대한 네트워크 접근을 제어
  • 보안 그룹은 인스턴스의 네트워크 트래픽을 허용하거나 차단하는 규칙을 설정할 수 있도록 해줌
  • 이는 인스턴스를 안전하게 보호하고, 외부의 불필요한 접근을 차단하는 데 중요한 역할을 함

2. 목적

  • EC2 인스턴스에 대한 접근을 제어하여 외부 공격 및 무단 접근으로부터 보호함
  • 특정 포트 및 IP 주소에서의 트래픽을 허용하거나 차단하여 보안 정책을 시행
  • 변경이 필요할 때 즉시 규칙을 수정할 수 있어, 동적으로 보안 요구 사항에 대응할 수 있음

3. 특성

  • 보안 그룹은 상태 기반으로 작동. 즉, 인바운드 규칙에서 허용된 트래픽에 대한 응답은 자동으로 허용
  • 간편하게 보안 그룹에 규칙을 추가하거나 삭제하며, 실시간으로 적용
  • 여러 EC2 인스턴스에 동일한 보안 그룹을 적용할 수 있어 관리가 용이
  • 기본적으로 모든 인바운드 트래픽이 차단되고, 모든 아웃바운드 트래픽은 허용
  • 보안그룹은 리전과 VPC조합에만 제한됨
  • 다른 리전으로 전환하는 경우나 새 VPC를 생성한 경우, 새 보안그룹을 생성해야함
  • 보안그룹은 EC2 인스턴스 외부에 있음
    즉, 트래픽이 블록될 경우, EC2는 이를 모름

4. 활용 사례

  • 웹 서버 보호: HTTP/HTTPS 포트를 열어 웹 서버에 대한 접근을 허용하고, 다른 포트는 차단하여 보안을 강화
  • 데이터베이스 접근 제어: RDS와 같은 데이터베이스에 대한 접근을 제한하여 특정 IP 주소에서만 연결할 수 있도록 설정
  • 개발 및 테스트 환경: 개발자들이 인스턴스에 접근할 수 있도록 특정 IP 범위를 허용하고, 불필요한 접근을 차단
  • VPN 설정: VPN을 통해 내부 네트워크와 EC2 인스턴스를 연결할 때, 필요한 포트만 열어 외부 접근을 제한

5. Best Practices 및 주의점

  • 필요한 최소한의 접근 권한만을 부여하여 보안을 강화. 불필요한 포트는 차단
  • 보안 그룹 규칙을 정기적으로 검토하여, 변경된 요구 사항이나 취약점을 반영
  • 가능하면 CIDR 블록을 사용하여 특정 IP 주소 또는 범위만 허용하도록 설정
  • AWS CloudTrail 및 VPC 흐름 로그를 활성화하여 보안 그룹의 활동을 모니터링
  • 보안 그룹을 설정할 때 신뢰할 수 없는 IP 또는 포트에 대한 접근을 차단
  • 개발 운영 측면에서는 ssh 액세스를 위해 보안그룹을 별도로 분리하는 것이 좋음
  • 만약 임의의 포트에 연결하려고 했는데, 응답이 오지 않고 정지해있으며 타임아웃이 발생할 경우
    이는 보안 그룹 문제일 가능성이 높음
  • 실제로 연결 거부 오류가 발생하면 실제로 연결이 거부 되었다는 응답을 받음.

EC2 Auto Scaling Group

1. 개요

  • 오토스케일링 그룹은 EC2 인스턴스를 자동으로 시작하고 중지하여 워크로드 수요에 맞춰 리소스를 조정
  • 최소, 최대, 원하는 용량을 설정하여 필요에 따라 인스턴스 수를 자동으로 조정

2. 목적

  • 서버 장애나 애플리케이션 오류 발생 시 자동으로 대체 인스턴스를 추가하여 고가용성을 유지
  • 수요가 적을 때 자동으로 인스턴스를 줄여 불필요한 리소스 비용을 절감
  • 트래픽이 증가하면 인스턴스를 추가하여 성능을 유지하고 사용자가 항상 원활하게 서비스를 이용할 수 있도록 함

3. 구성

  • Auto Scaling Group (ASG):
    • 관리할 EC2 인스턴스 집합을 정의함.
    • ASG는 최소, 최대, 원하는 인스턴스 수를 설정할 수 있음
  • Launch Template/Configuration:
    • EC2 유형 및 크기
    • AMI, 보안그룹, Key, IAM Policy
    • EC2 User Data.. 등
  • Scaling Policies:
    • 트래픽 부하에 따라 인스턴스를 추가하거나 줄이는 정책을 설정
    • 이러한 정책은 사용자가 정의하는 조건(예: CPU 사용량)에 따라 동작함
    • 예시) CPU 점유율이 N%를 넘어섰을 때 추가 실행, 2개 이상이 필요한 스택에서 EC2 하나가 죽었을 때 추가 실행..

4. 오토스케일링 설정 정책

오토스케일링 그룹은 다양한 정책을 사용해 트래픽 부하에 따라 자동으로 조정할 수 있음

  1. 동적 스케일링(Dynamic Scaling)

    • 정책 기반: 특정 기준(예: CPU 사용률, 메모리 사용률 등)에 따라 자동으로 인스턴스 수를 조정
      • 단계적 조정 정책(Step Scaling): 특정 조건을 만족할 때 여러 단계를 거쳐 점진적으로 인스턴스를 확장하거나 축소
      • 간단한 조정 정책(Simple Scaling): 조건 충족 시 한 번에 하나의 인스턴스를 추가하거나 제거하는 단순한 조정 방법
    • 목표 추적 조정(Target Tracking Scaling): 예를 들어 평균 CPU 사용률이 50%를 유지하도록 설정하는 등 특정 지표를 목표로 자동으로 확장 및 축소함
  2. 예측 스케일링(Predictive Scaling)

    • 머신러닝을 통해 트래픽 패턴을 분석하고, 예측된 수요에 따라 자동으로 인스턴스 수를 조정함.
    • 트래픽의 시간대별 변동을 예측하여 미리 리소스를 확보할 수 있음
  3. 종료 정책

    • 인스턴스 숫자를 줄일 경우 어떤 순서로 인스턴스를 종료시킬 것인가에 대한 정책

5. Best Practice 및 주의점

  • Amazon CloudWatch를 사용해 오토스케일링 지표를 모니터링하고, 트래픽 변화에 빠르게 대응할 수 있도록 하기
  • 용량 계획 수립을 통해 최소, 최대 인스턴스 수를 실제 트래픽 패턴에 맞게 설정하여 불필요한 리소스 낭비를 줄이기
  • 실패 복구 전략 설정을 통해 오토스케일링이 서버 장애 시 자동으로 인스턴스를 대체할 수 있도록 설정하여 애플리케이션 가용성을 높이기
  • 스팟 인스턴스와 온디맨드 인스턴스를 혼합한 유연한 구성을 통해 비용 절감을 극대화 하기
  • 스케일링 정책이 너무 빠르게 동작하면 비용이 증가할 수 있고, 너무 느리면 성능 저하가 발생할 수 있으므로 적절한 속도로 설정해야 함
  • 트래픽 급증에 따라 인스턴스가 빠르게 확장되면 예상보다 비용이 많이 발생할 수 있으므로, 모니터링 및 알림 설정을 통해 관리해야 함

AWS Elastic Block Store

EC2 인스턴스와 함께 사용할 수 있는 확장 가능하고 고성능의 블록 스토리지 리소스

1. 개요

  • AWS 클라우드에서 제공하는 고성능 블록 스토리지 서비스로, EC2 인스턴스와 연결하여 데이터를 영구적으로 저장할 수 있도록 지원
  • EBS 볼륨은 특정 가용 영역(AZ)에 배포되며, 인스턴스 종료 후에도 데이터를 보존
  • 다양한 스토리지 유형을 제공하여 성능과 비용을 최적화할 수 있으며, 중요한 데이터 보호와 고가용성을 위해 여러 기능을 갖추고 있음

2. 주요 기능

  • 유연한 스토리지 옵션을 제공하여 용량, 성능, 가격에 맞춘 여러 EBS 볼륨 유형(SSD, HDD)을 제공하여 다양한 워크로드에 대응
  • 데이터를 AZ 내에서 자동 복제하여 내구성을 보장
  • EC2 인스턴스와 함께 사용되며, 인스턴스와 연결 및 분리를 쉽게 할 수 있음
  • Amazon S3에 데이터를 백업할 수 있는 스냅샷 기능을 지원하여 데이터 복구와 복제에 용이
  • 전송 및 저장 중 데이터를 암호화하여 보안성을 강화할 수 있음

3. EBS 볼륨 유형

  • EBS는 다양한 유형의 볼륨으로, 각 볼륨마다 성능과 비용 효율성이 다름..
  • 실무에서는 워크로드 특성에 맞는 볼륨을 선택하는 것이 중요
  • General Purpose SSD (gp3/gp2): IOPS 3000으로 시작할 수 있음,
    • 특징: 범용적인 SSD, 높은 성능이 필요하지 않은 웹 서버나 일반 업무용 애플리케이션에 적합
    • 사용 사례: 일반적인 애플리케이션 서버, 웹 서버, 개발 및 테스트 환경.
    • 추가 팁: gp3를 통해 사용자 설정에 따라 IOPS와 처리량을 조절할 수 있어 gp2보다 유연
  • Provisioned IOPS SSD (io2/io1):
    • 특징: 높은 IOPS를 제공하여 데이터베이스 등 I/O 집약적인 워크로드에 적합
    • 사용 사례: 고성능 데이터베이스(예: OLTP, SQL DB), 빅데이터 처리.
    • 추가 팁: 내구성이 높은 io2는 99.999%의 내구성을 제공하여 중요한 데이터를 다루는 애플리케이션에서 활용 가능
  • Throughput Optimized HDD (st1):
    • 특징: 대용량 처리량이 필요한 애플리케이션에 최적화된 HDD.
    • 사용 사례: 빅데이터 분석, 로그 처리, 데이터 웨어하우스.
    • 추가 팁: 주로 순차적인 대규모 데이터 처리에 적합하며, 비용이 저렴
  • Cold HDD (sc1):
    • 특징: 데이터 접근 빈도가 낮은 장기 보관용 데이터에 적합한 비용 효율적 HDD.
    • 사용 사례: 백업 데이터, 아카이빙.
    • 추가 팁: sc1은 비용이 낮아 데이터 접근 빈도가 낮은 환경에서 적합

4. 활용 사례

  • 데이터베이스 스토리지: 프로비저닝된 IOPS SSD 볼륨을 통해 데이터베이스에서 고성능 입출력을 처리
  • 파일 시스템: 일반 목적 SSD 볼륨을 사용하여 파일 시스템을 생성하고, 웹 애플리케이션의 데이터를 저장
  • 빅데이터 및 데이터 분석: 스루풋 최적화 HDD 볼륨을 사용하여 대규모 데이터를 빠르게 처리하고 분석할 수 있음
  • 백업 및 아카이브: 콜드 HDD를 사용하여 오래된 데이터를 아카이브하고 비용을 절감할 수 있음

5. Best Practices 및 주의점

  • 데이터 손실 방지와 복구 시간을 줄이기 위해 정기적으로 스냅샷을 생성하는 전략 필요
  • 워크로드에 맞는 볼륨 유형을 선택하여 성능과 비용 효율성을 최적화
  • 인스턴스 종료 시 EBS 볼륨의 데이터 유지 여부를 확인하여 중요한 데이터 손실을 방지해야 함

6. 볼륨 유형 및 비교

볼륨 타입IOPS 성능처리량 (Throughput)
gp3 (일반 목적 SSD)최대 16,000 IOPS최대 1,000 MB/s
gp2 (일반 목적 SSD)3 IOPS/GB, 최대 16,000 IOPS최대 250 MB/s
io2 (프로비저닝된 IOPS SSD)최대 64,000 IOPS최대 1,000 MB/s
io1 (프로비저닝된 IOPS SSD)최대 64,000 IOPS최대 1,000 MB/s
st1 (스루풋 최적화 HDD)최대 500 IOPS최대 500 MB/s
sc1 (콜드 HDD)최대 250 IOPS최대 250 MB/s

7. EBS 스냅샷 및 백업 전략(DR or Security Compliance)

AWS EBS는 스냅샷을 통해 데이터를 백업하고 복구하는 기능을 제공. 스냅샷을 자동화하면 데이터 복구가 용이

  • 스냅샷 생성 전략:
    • 주기적 스냅샷: 변경이 빈번한 데이터는 하루 한 번, 주기적으로 변경이 적은 데이터는 주 단위로 스냅샷을 생성하는 것이 일반적
    • 증분식 스냅샷: 변경된 부분만 저장하기 때문에, 지속적인 스냅샷을 생성해도 비용이 낮게 유지됨
  • Data Lifecycle Manager와 AWS Backup을 통한 자동화:
    • Data Lifecycle Manager (DLM): 자동으로 스냅샷을 생성, 보관 주기 관리가 가능! DLM을 사용하면 스냅샷을 여러 주기로 생성할 수 있음
    • AWS Backup: EBS뿐 아니라 RDS, DynamoDB 등의 백업을 중앙에서 통합적으로 관리할 수 있음

다음 포스팅에서는 ELB(Elastic Load Balancer)와 Auto Scaling 연동 사례 및 DR, 확장성에 대한 아키텍처를 중심으로 작성할 예정

참고 자료

profile
Software Engineer

0개의 댓글