Programming

[AWS, Certified Developer Associate] EC2 - AMI, Instance Store, EBS, EFS

EBS Volume

  • 네트워크 드라이브 (물리 드라이브 X, 네트워크를 통해 연결된 드라이브)
    • 네트워크로 연결되어 있으므로 일시적인 지연이 있을 수 있음
  • 네트워크 드라이브이므로 분리 및 다른 인스턴스에 연결 가능
  • CCP 레벨에서는 하나의 EBS는 하나의 EC2 인스턴스에만 마운트 가능
    • 하나의 EC2에 여러 EBS는 가능 
    • Associate 레벨에서는 일부 EBS 다중 연결 가능
  • 특정 AZ에 고정됨. 다른 AZ로 연결 불가능
    • 스냅샷을 이용하면 가능
  • Volume이므로 용량을 미리 결정해야함(GBs, IOPS[단위 초당 전송 수]). 이후 용량 변경 가능
  • EC2 인스턴스 생성 시 콘솔에서 EBS 볼륨을 생성하면 종료 시 삭제 옵션 설정 가능 (Delete on Termination attribute)
    • EC2 인스턴스 종료 시 EBS 볼륨이 자동으로 삭제됨 (Root EBS 볼륨은 디폴트)

 

EBS Snapshot

  • EBS Volume의 특정 시점에서의 백업
  • 이를 위해 EBS를 EC2 인스턴스에서 분리할 필요는 없지만, 분리를 권장
  • 다른 가용영역 or 다른 리전에 복제 / 복원 가능
  • EBS 스냅샷 아카이브
    • 스냅샷을 최대 75% 저렴한 아카이브 티어로 옮기는 기능
    • 아카이브 복원 시 24 - 72시간 소요 (즉시 X)
  • EBS 스냅샷을 위한 휴지통
    • EBS 스냅샷 영구삭제가 아닌 임시로 휴지통에 삭제 가능 (실수로 삭제 방지)
    • 보관기간 1일 ~ 1년까지 설정 가능
  • 빠른 스냅샷 복원
    • 스냅샷이 매우 클 때 EBS 볼륨을 초기화 하거나, 매우 빠르게 인스턴스화 해야 하는 경우 유용
    • 비용 높음

 

EBS Volume 유형

  • 크기, 처리량, IOPS (단위 초당 IO작업 수)으로 결정됨
  • gp2 / gp3 (SSD)
    • General Purpose
    • 다양한 워크로드에 대해 가격 / 성능의 절충안
    • gp2
      • 짧은 지연시간, 효율적인 비용
      • 시스템 부팅 볼륨, 가상 데스크톱, 개발 / 테스트 환경에서 사용하기 적합
      • 1GiB - 16 TiB
      • 3000 IOPS
      • 최대 IOPS 16000
      • 볼륨 크기와 IOPS가 연결되어 있음
        • GB 당 3 IOPS
        • 5334 GB일 때 MAX IOPS 초과됨 
    • gp3
      • 최신 세대 볼륨
      • 3000 IOPS 및 125 MiB/s 처리량
      • 볼륨 크기와 IOPS가 연결되어 있지 않음.
        • 16000 IOPS 및 1000 MiB/s 까지 증가 가능 (IOPS, 처리량 독립적으로 설정 가능)
  • io1 / io2 (SSD)
    • 최고 성능
    • 미션 크리티컬, 지연시간 낮은 대용량 워크로드에 필요
  • st1 (HDD)
    • 저비용 HDD 볼륨
    • 잦은 접근, 처리량이 많은 워크로드에 필요
    • 빅데이터, 데이터 웨어하우징 로그 처리 적합
  • sc1
    • 최저비용 HDD 볼륨
    • 접근 빈도가 낮은 워크로드
    • 콜드 HDD
  • EC2 인스턴스에는 gp2/gp3, io1/io2만이 부팅 볼륨으로 사용 가능 (루트 OS가 실행될 위치)

 

EBS Volume Provisioned IOPS (PIOPS) SSD

  • IOPS 성능이 중요한 비즈니스 애플리케이션 or 16000 IOPS 이상이 필요한 애플리케이션에 적합
  • 일반적으로 DB 워크로드에 적합
  • gp2 / gp3 볼륨을 io1 / io2 볼륨으로 바꾸는 것
    • 4 GiB - 16 TiB
    • Nitro EC2 인스턴스에 대해 최대 64000 IOPS / Nitro 아닌 경우 32000 IOPS
    • gp3 볼륨과 같이 IOPS를 볼륨 크기와 독립적으로 설정 가능
    • io2는 io1과 동일한 비용으로 내구성, 기가 당 IOPS 수가 더 높음

 

EBS Multi-Attach (다중연결)

  • 하나의 EBS 볼륨을 동일한 AZ의 여러 EC2 인스턴스에 연결 가능 (최대 16개의 EC2 인스턴스 연결 가능)
  • io1 / io2 타입만 가능
  • 클러스터를 인식할 수 있는 파일시스템을 사용해야 함 (XFS, EX4가 아닌)
  • 각 인스턴스는 고성능 볼륨에 대한 전체 읽기/쓰기 권한을 가짐 (동시에 읽기/쓰기 가능)
  • 사용사례
    • 클러스터된 리눅스 애플리케이션의 가용성 증가 (ex. Teradata)
    • 애플리케이션에서 동시 쓰기 작업을 관리하는 경우

 

 

EFS (Elastic File System)

  • 관리형 NFS (네트워크 파일 시스템)
  • NFS이므로 많은 EC2 인스턴스 (수백개)에 마운트 가능
  • 서로 다른 AZ의 EC2 인스턴스에도 가능
  • 고가용성, 고확장성, 고비용 (gp2 EBS 볼륨의 3배)
  • 사용량에 따라 비용 지불 (용량 프로비저닝 필요없음)
  • 사용 사례
    • 콘텐츠 관리, 웹서비스, 데이터공유, 워드프레스
  • 내부적으로 NFSv4.1 프로토콜 사용
  • EFS에 대한 액세스 제어를 위한 보안그룹 설정 필요
  • Window가 아닌 리눅스 기반 AMI와만 호환
  • KMS를 사용해 EFS 드라이브에서 미사용 데이터 암호화 활성화 가능
  • 리눅스 표준 파일 시스템인 POSIX 시스템 사용. 표준 파일 API 존재

 

EFS 옵션 설정

  • EFS Scale
    • 수천개의 동시 NFS 클라이언트, 10GB/s 이상의 처리량
    • 페타바이트 규모의 NFS 자동 확장 가능
  • Performance Mode
    • General Purpose (기본값) : 웹서버, CMS와 같이 지연시간에 민감한 경우 사용
    • MAX I/O : 처리량 최대화. 지연시간이 더 길지만 처리량 크고 병렬성 높음 (빅데이터 애플리케이션, 미디어처리)
  • Throughput Mode
    • Bursting : 높은 처리량 (스토리지 늘어날수록 높은 처리량)
    • Provisioned : 스토리지 크기에 관계없이 처리량 설정 가능
    • Elastic : 워크로드에 따라 처리량 자동 확장 가능 (워크로드 예측 불가능 시 유용)
  • Storage Class
    • Storage Tiers : 며칠 후 파일을 EFS-IA 계층으로 옮길 수 있는 기능(비용 절감)
      • Standard : 자주 액세스하는 파일을 위한 계층
      • EFS-IA : 자주 액세스하지 않는 파일을 위한 계층. 파일 검색 시 비용 발생. 저장 시 비용 낮아짐
    • Availability and durability
      • Standard : 다중 AZ, 프로덕션 환경 유용
      • One Zone : 단일 AZ, 개발 환경 유용, 백업 사용 기본값, EFS-IA와 호환 안됨 (EFS One Zone-IA)
      • 90% 비용 절감

 

 

AMI (Amazon Machine Image)

  • 사용자 지정(customization) EC2 인스턴스
    • AWS에서 지정한 AMI, 사용자 지정 AMI 사용 가능 
    • 각 소프트웨어 구성에 대해 OS 정의 및 설정, 모니터링 도구 설정 등을 자체적으로 AMI 생성 시 부팅, 구성 시간 단축
    • EC2 인스턴스에 설치하고자 하는 소프트웨어가 AMI를 통해 사전에 패키징됨
  • 특정 리전에 맞춰 구축해놓고 원하는 리전에 복사해 사용 가능
  • AWS Marketplace에서 다른 사용자가 만든 AMI 구매 가능
  • 이를 활용해 다른 리전에 EC2 인스턴스 사본을 빠르게 생성 가능
    • Region1에서 EC2 인스턴스 생성 -> 해당 EC2 인스턴스 AMI 생성 -> Region2에서 해당 AMI를 복사해 EC2 인스턴스 생성

 

EC2 Instance Store

  • EBS의 성능보다 더 높은 성능을 요구할 때, EC2 Instance Store 활용 가능 (인스턴스의 물리 디스크에 위치하는 SSD 저장 장치)
  • EC2 인스턴스 중지 또는 종료 시 데이터 유실 (= 임시 스토리지, 단기 데이터 보관에 유용)
    • 버퍼, 캐시, 스크래치 데이터, 임시 데이터 등 자주 변경되는 정보의 임시저장에 사용
    • 장기 스토리지는 EBS가 적합
    • 사용 시 필요에 따라 백업 or 복제 필요
  • EC2 인스턴스 장애 시 인스턴스 스토어도 장애 발생

 


Reference

Udemy - AWS Certified Developer Associate 시험 합격을 위한 모든 것!