본문 바로가기
AWS/AWS Certificate

[AWS SAA]AWS Solutions Architect C02 study - 영역 1: 복원력을 갖춘 아키텍처 설계

by isn`t 2020. 12. 18.

목차

1. CloudFront
2. ELB
3. Auto Scaling
4. SQS
5. SNS
6. EC2
7. EBS
8. EFS
9. S3
10. RDS
11. CloudWatch

1. Amazon CloudFront


리전(Region)과 가용 영역(Available Zone)


AWS는 전 세계에 클라우드 서비스를 원활하게 제공하기 위해서 주요 도시에 IDC(Internet Data Center)를 운영하고 있다.주요 국가에 '리전'을 운영 중이며, 사용자가 서비스를 이용할 때 가장 가까운 리전으로부터 빠르게 서비스를 이용할 수 있도록 한다. 리전은 가용 영역(AZ)으로 이루어져 있는데, AZ가 기존의 IDC이다. 하나의 리전에는 여러 개의 가용 영역이 있기 때문에 하나의 가용 영역이 이용 불가능한 상황이 발생하더라도 다른 가용 영역에서 서비스를 지속할 수 있도록 한다.

엣지 로케이션(Edge Location)


엣지 로케이션은 AWS의 CDN 서비스인 CloudFront를 위한 캐시 서버들의 모임이다. 유저가 콘텐츠 데이터를 빠르게 이용할 수 있도록 전 세계 각지에 위치한 캐시 서버에 복사해서 가지고 있다가, 접속한 유저의 위치와 가장 가까운 캐시 서버에서 콘텐츠를 제공한다.

CloudFront란?


전 세계에 캐시 서버를 구축해 놓고 물리적으로 가장 가까운 위치에서 콘텐츠를 서비스하는 것을 CDN(Content Delivery Network)이라고 한다. 2020년 12월 기준으로 210개의 엣지로 로케이션을 운영중이다. CloudFront를 앞단에 배치해서 보안성을 높이는 용도로 활용할 수도 있다.

CloudFront 특징


  • SSL/TLS 암호화 및 HTTPS
  • 주요 공격을 차단
  • 액세스 제어(OAI, Origin Access Identity)
  • 가용성
  • 실시간 네트워크 측정을 통한 라우팅 최적화

 

2. Amazon ELB(Elastic Load Balancer)


ELB란?


트래픽을 Amazon EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수, 가상 어플라이언스와 같은 여러 대상에 자동으로 분산시킨다. 애플리케이션의 내결함성에 필요한 고가용성과 보안을 갖추고 있다.

ELB 유형


유형 기능
ALB - 7계층 HTTP/HTTPS 레벨 로드 밸런싱
- 마이크로 서비스, 컨테이너 기반에 최적화
- SSL/TLS
NLB - 4계층 TCP 레벨 로드 밸런싱
- 짧은 지연 시간, 트래픽 변동이 심한 서비스에 최적
CLB - 4계층과 7계층에서 동작
- EC2-Classic 을 위한 전용 로드 밸런서. 현재는 사용 안 함.
GWLB - 3계층 게이트웨이 + 4계층 로드밸런싱
- IP 레벨 로드 밸런싱

*GWLB(GateWay Load Balancer)는 2020년 11월에 발표된 새로운 로드밸런서 유형이다. 기존에는 트래픽이 들어오면 보안 검사를 실행하는 특정 EC2의 Elastic network interface로 먼저 라우팅 시킨 후에 다른 EC2로 트래픽을 보내도록 했다. 이와 같은 방식으로 보안성을 확보하고 어플라이언스를 네트워크로 추가할 수 있게 되었지만, 고가용성과 확장성을 보장하기에는 무리가 있었다. GWLB는 투명한 게이트웨이와 트래픽 분산을 위한 로드밸런서를 결합하여 가상 어플라이언스의 확장/축소를 용이하게 하는 새로운 로드밸런서 유형이다. 한국의 서울 리전에서는 아직 지원되지 않는 것으로 보인다.
https://aws.amazon.com/ko/blogs/korea/introducing-aws-gateway-load-balancer-easy-deployment-scalability-and-high-availability-for-partner-appliances/

ELB 특징


  • Health Check
  • 쿠키를 추가하는 방식으로 고정 세션기능 제공
  • SSL Termination

 

3. AWS Auto Scaling


AWS Auto Scaling이란?


자동으로 AWS 리소스의 규모를 조정하서 인프라 비용을 최소화하면서도 고가용성을 확보할 수 있는 서비스이다.수신 트래픽 분산에 Elastic Load Balancing, 컴퓨팅 계층에 Amazon EC2, 데이터 계층에 DynamoDB를 사용하는 표준 3 티어 아키텍처를 따른다. 이 경우 수요에 따라 EC2 Auto Scaling 그룹과 DynamoDB 테이블의 규모를 자동 조정하게 된다.

Auto Scaling Group


관리 대상 인스턴스들을 AutoScaling 그룹으로 묶을 수 있다. 조건에 따라 그룹 내에서 인스턴스 수를 조정한다.

시작 구성(Launch configurations)


Auto Scailing 그룹 내에서 EC2 인스턴스를 시작하기 위한 인스턴스 템플릿이다. 시작 구성에서 AMI, 인스턴스 유형, 키 페어, 보안 그룹, EBS 등의 정보를 미리 지정해둔다. 하나의 Auto Scaling 그룹에는 하나의 시작 구성만 지정될 수 있고, 하나의 시작 구성은 여러 Auto Scaling 그룹에서 사용될 수 있다.

조정 옵션


  • 현재 인스턴스 수준 유지 : 항상 지정된 수의 인스턴스를 유지하도록
  • 수동 조정 : Auto scaling 그룹에서 최소/최대 또는 사용자 지정 용량을 조정
  • 일정 기반 : 수요의 증감이 일정에 따라 예측 가능한 경우 미리 확장/축소 작업을 구성
  • 온디맨드 기반 : 일정 시간 리소스 사용률이 기준치 이상/이하로 유지되면 인스턴스를 확장/축소하는 방식

 

4. SQS


Amazon SQS란?


AWS에서 관리해주는 메세지 큐 서비스. 메세지 지향 미들웨어 운영에 도움을 준다. SaaS 형태로 이미 완성된 메세지 큐 서비스를 제공하기 때문에 사용한 만큼 비용을 지불하기만 하면 된다.

SQS 특징


  • 메세지 보존 기간은 1분~14일 조정가능하며, 디폴트는 4일
  • 메세지는 XML, JSON, 일반 Text 데이터를 1KB~256KB까지 포함 가능
  • 메세지 개수 최대 대기열은 무제한, inflight는 120,000, FIFO 는 20,000개 까지.
  • 대기열 개수도 무제한
  • SQS는 리전에 종속되기 때문에 다른 리전에서 메세지를 공유할 수 없음
  • AWS KMS의 키를 이용하여 대기열의 메세지 본문 암호화

 

5. Amazon SNS


Amazon SNS(Simple Notification Service)란?


AWS 클라우드에서 알림을 설정하고 전송하는 웹 서비스. 스마트폰 앱을 예시로 보면, 개발자들이 애플리케이션의 메세지를 게시하고 이를 사용자들이 받아볼 수 있도록 하는 푸쉬 알림도 해당한다. 클라이언트에게 제공되는 알림이 "푸쉬" 메커니즘을 사용하기 때문에 새로운 정보를 정기적으로 폴링하지 않아도 된다. 알림은 HTTP/HTTPS, 이메일, SMS등 다양한 프로토콜로 지정할 수 있다.

SQS vs SNS


  • SNS : 푸시 메커닞므을 통해 다수의 구독자에게 시간이 관건인 메세지 전송
  • SQS : 분산 애플리케이션의 폴링 모델을 통해 메세지를 교환하는데 사용되는 메세지 대기열 서비스

 

6. EC2


EC2 란?


AWS 상에서 안정적이고 스케일링 가능한 컴퓨팅 파워를 통해 가상화 서버를 제공하는 서비스. '인스턴스' 단위로 관리하게 되며 필요에 따라 한 개부터 수천 개의 인스턴스를 오가며 손쉽게 확장 가능하다. EC2를 이용하면 물리 장비 기반의 서버를 도입하는 과정에서 필요한 절차를 극단적으로 줄여서 빠르게 스케일링 가능한 유연한 서버 운용이 가능하다. 비용은 사용량에 대해서 시간 단위로 청구된다.

EC2의 유형


A, T, M 범용
C 컴퓨팅 최적화
I,D,H 스토리지 최적화
P,G,F,Inf1 GPU 최적화, 가속화 컴퓨팅
R,X,Z 메모리 최적화

EC2 구매 옵션


온디맨드 인스턴스 - 필요할 때 마다 생성해서 사용하는 방식의 인스턴스이며, 초 단위 비용 청구
- 빈번한 서버 생성/삭제하는 개발 환경에 적합
예약 인스턴스 - 연 단위 기간 약정으로 온디맨드 대비 75% 저렴한 비용
- 장기적 이용
스팟 인스턴스 - 정해진 스펙의 인스턴스에 대해서 가장 높은 가격을 제시한 사용자에게 인스턴스 할당
- 동영상 인코딩과 같은 단기적인 병렬 컴퓨팅 파워가 필요한 경우
전용 인스턴스 - 고객 전용의 하드웨어에서 인스턴스 제공
- 보안성, 안정성

EC2 instance store

EC2를 생성하면 기본적으로 연결되는 스토리지이다. 이 볼륨은 연결된 EC2에 대해서 종속적이므로 인스턴스의 수명과 일치한다. 즉, 휘발성 스토리지이다.

인스턴스를 부팅하자마자 바로 사용할 수는 없다. 파일시스템을 생성하고 마운트해야 사용할 수 있다.

인스턴스에 직접 연결된 스토리지이기 때문에 동일 조건 하에서는 EBS보다 빠르다.

따러서 일관되고 빠른 읽기/쓰기 성능을 보장하는데 적합하므로 소규모 데이터 캐싱에 적합하다.

 

 

7. EBS


EBS란?


Amazon EBS는 EC2 인스턴스에 연결되는 서버용 블록 스토리지 서비스이다. 데이터가 영구적으로 저장되며 원하는 AZ에 생성 가능하다. EC2 인스턴스와 분리하여 독립적으로 사용 가능하기 때문에 다른 EC2 인스턴스에 교체 연결도 가능하다. 크기는 1GB 단위로 조정 가능하다.

EBS 볼륨 유형


- 범용 SSD 프로비저닝된 IOPS SSD 처리량 최적화 SSD 콜드 HDD 마그네틱
사용 목적 다양한 워크로드 처리 지연 시간에 민감한 고성능 처리 자주 엑세스하기 위해 처리량에 집중된 HDD 액세스 빈도 낮지만 처리량에 집중된 저비용 HDD 액세스 빈도가 낮으면서 성능도 낮은 HDD
사용 사례 - 부트 볼륨
- 지연시간이 짧은 대화형 앱
- 개발 및 테스트 환경
- 지속적인 IOPS 성능 또는 범용 SSD 이상의 볼륨당 처리량(16,000)을 필요로 하는 워크로드
- I/O에 집중된 데이터베이스 워크로드
- 빅 데이터
- 데이터 웨어하우스
- 로그 처리
- 스토리지 비용이 최대한 낮아야 하는 시나리오 - 데이터에 자주 액세스하지 않는 워크로드
유형 gp2, gp3 io1, io2 st1 sc1 standard
볼륨당 최대 IOPS 16,000 64,000 500 250 40~200
볼륨당 최대 처리량 250MiB/s 1,000MiB/s 500MiB/s 250MiB/s 40~90MiB/s

EBS 스냅샷


EBS 볼륨의 스냅샷을 만들어 S3에 백업할 수 있다. 물리적인 장치에 비유하면 하드디스크 백업과 동일하다. 백업해둔 상태 그대로 EBS 볼륨을 복원하거나 새로운 볼륨을 복사해서 다른 EC2에 연결하는 것도 가능하다. EBS의 스냅샷은 무중단으로 생성 가능하다. 스냅샷을 생성하는 도중에도 EBS와 EC2의 중단 없이 사용 가능하다. 생성된 스냅샷은 다른 사용자에게 공유할 수 있으며, 복사본 스냅샷은 원본에 영향을 끼치지 않는다. 스냅샷의 복사는 다른 리전으로도 가능하며, 리전 간 복사가 가능한 덕분에 서비스의 글로벌 단위 확장이나 마이그레이션 및 재해복구에 굉장히 유리하다. 스냅샷 기능을 이용하면 EBS 볼륨의 크기를 조정할 수도 있는데, 기존 디스크의 스냅샷을 생성할 때 새로 장착할 EBS의 크기를 조정한 후 새롭게 생성된 EBS를 연결해서 사용하면 디스크 크기 조정의 효과도 얻을 수 있다.

EBS의 성능 및 보안 옵션


1) 프로비저닝 된 IOPS SSD와 EBS-Optimized EC2

EBS 볼륨 유형을 선택할 때 프로비저닝 된 IOPS SSD를 사용하면 디스크 IOPS가 높은 EBS 볼륨을 사용할 수 있다. 이 기능은 EC2 인스턴스에 EBS-Optimized 옵션을 적용해서 함께 사용할 수 있다. EBS-Optimized 인스턴스는 EBS 디스크 서비스를 위한 전용 네트워크 대역폭을 구성해서 디스크 성능을 최적화하는 기능을 제공한다. C,M,R 시리즈에서 추가 비용 없이 사용 가능한 옵션이며, Provisioned IOPS SSD의 최대 성능을 끌어낼 수 있다.

2) EBS 암호화

AES-256 알고리즘으로 EBS를 내부의 데이터를 보호할 수 있다. 암호화 키는 AWS KMS에서 사용자가 직접 생성할 수도 있고, 기본으로 제공되는 기본키를 사용할 수도 있다. 이렇게 암호화된 EBS의 스냅샷을 생성하면 스냅샷을 공유하더라도 사용이 불가능하다.

 

8. Amazon EFS (Elastic File system)


EFS란?


AWS에서 완전 관리해주는 NFS 프로토콜 파일 시스템 서비스이며, 파일 시스템 인터페이스를 통해 EC2 인스턴스에 접근할 수 있다. Elasitc이므로 확장 시에도 서비스 중단 없이 온디맨드 방식으로 페타바이트 규모까지 확장이 가능하다. 가상 머신을 위한 확장 가능한 스토리지이며, EC2에 마운트 가능한 파일 시스템을 제공한다. 여러 대의 EC2에서 동시에 하나의 EFS 파일 시스템에 액세스할 수 있다. 즉, 사용자가가 파일을 추가하고 제거할 때 자동으로 확장/축소되므로 프로비저닝에 대해서 크게 신경 쓸 필요가 없다. EFS에서는 Standard와 Infrequent Access 스토리지 클래스를 제공하며, 파일의 수명 주기에 따라 해당 스토리지에 자동으로 이동하도록 설정할 수 있다. EFS는 사용자가 속한 리전의 모든 AZ에서 접근 가능하며, 고가용성을 제공한다. EFS에 접근할 수 있는 EC2는 IAM 정책으로 관리한다. AWS KMS에서 키를 발급하여 저장 데이터와 전송 데이터를 암호화 할 수 있다. 모든 EFS 파일 시스템은 전역적으로 고유한 ID를 자동으로 생성하며, 이름도 붙일 수 있지만 S3처럼 고유한 이름을 만들 필요는 없다.

AWS DataSync


DataSync 서비스를 이용하면 기존의 파일 시스템을 Amazon EFS에 안전하게 동기화할 수 있다. 또한 DataSync를 이용하면 두 EFS 파일 시스템 간에 파일을 복사할 수도 있는데, 다른 리전에 있는 시스템이나 계정에서도 복사가 가능하다.

 

9. Amazon S3(Simple Storage Service)


S3란?


버킷이라는 리전 내에서 유일한 영역을 생성하고 데이터를 key-value의 객체로 저장하는 스토리지. 비용이 저렴하며 HTTP기반의 RESTful한 통신이기 때문에 웹 사이트의 콘텐츠를 호스팅할 수 있고, URL로 파일을 공유할 수 있는 기능을 제공한다. S3는 백업, 데이터 아카이빙, 데이터 레이크 등의 다양한 목적으로 사용될 수 있으며, 비용은 EBS 대비 20% 저렴하고 전송 데이터와 저장 데이터에 대해서 SSL 암호화를 지원한다.

 

S3는 최대 속도를 보장하기 위해 I/O를 병렬로 처리한다. 쓰기 작업은 Multipart 업로드를 통해, 읽기 작업은 Ranged GETs를 통해 병렬 I/O를 구현한다.

S3에 저장된 각 리소스 단위로 IAM 정책 설정이 가능하며, 버킷에 대한 접근 정책을 ACL로 관리할 수 있다.

S3 유형

  • Standard : 모든 데이터 유형에 적합한 범용 스토리지로, 대개 자주 액세스하는 데이터에 사용됨\
  • Standard-IA(Infrequent Access) : 자주 액세스하지는 않지만 빠른 접근이 필요한 경우, 다중 AZ. S3대비 58% 저렴하여 최근 백업 서비스로 많이 사용.
  • Intelligent-Tiering : 액세스 패턴을 알 수 없거나 액세스 패턴이 변경되는 데이터에 대해 자동 비용 절감 효과 제공
  • One Zone-IA : 빠르게 접근 가능해야 하지만 자주 액세스하지는 않는 데이터용, 단일 AZ
  • Glacier : 데이터 보관 및 장기 백업을 위한 안정적이고 저렴한 스토리지. 검색 옵션이 1분부터 12시간까지인 장기적인 백업 및 아카이브용
  • Deep Archive : 일년에 한두 번 액세스하고 12시간 이내에 복원할 수 있는 장기적인 데이터 아카이빙용

AWS Storage Gateway


Storage Gateway란?

S3가 REST방식의 데이터 전송 방식이라면 Storage Gateway는 AWS에서 제공하는 하이브리드 클라우드 구축을 위한 서비스이다. S3와 같은 스토리지에 iSCSI 방식으로 접근할 수 있도록 한다.

클라우드로 이전하고 싶어도 어쩔 수 없이 온프레미스 환경에서 운용해야 하는 애플리케이션들이 있다. 이들 애플리케이션을 위해 클라우드 스토리지를 온프레미스에서 저장 공간으로 사용할 수 있도록 액세스를 제공하는 것이 Storage Gateway의 역할이다. 이러한 환경을 '하이브리드 클라우드'라고 한다.

Storage Gateway의 유형

1) 파일 게이트웨이

백업 파일이나 콘텐츠 파일과 같은 파일을 온라인으로 저장하고 배포하기 위해 온프레미스 인프라를 확장하고 관리하는 일은 비효율적이다. 파일 게이트웨이는 클라우드 스토리지에 연결해서 애플리케이션 데이터 파일과 백업 이미지와 같은 파일들을 S3에 객체로 저장할 수 있도록 하는 유형이다. SMB 또는 NFS 방식을 제공한다.

2) 볼륨 게이트웨이

같은 원리로 iSCSI 블록 스토리지 볼륨을 제공한다. 스토리지를 캐시모드 또는 백업모드로 동작시킬 수 있는데, 캐시 모드에서는 데이터가 S3에, 저장 모드에서는 데이터가 로컬로 저장해놓고 지연 시간을 줄이기 위해 전체 데이터 셋이 온프레미스에서 제공된다. 두 모드 모두 AWS Backup 서비스를 이용하면 EBS 스냅샷으로 만들 수 있다.

3) 테이프 게이트웨이

기존에 구축해둔 백업 워크플로우를 따로 수정하지 않아도 온프레미스에서 물리적 테이프를 AWS의 가상 테이프로 대체할 수 있도록 한다. 테이프 게이트웨이에서는 기업에서 많이 사용하는 주요 백업 애플리케이션들을 모두 지원하며, 지연 시간을 줄이기 위해 온프레미스에 가상 테이프를 캐시한다.

S3 vs EBS vs #EFS


EBS

  • 블록 스토리지
  • EC2에 연결하는 디스크 느낌
  • 사용을 위해서는 반드시 EC2에 연결해야 함
  • 스냅샷 지원

EFS

  • 스케일링 가능한 파일 시스템
  • NFS 프로토콜을 사용하는 NAS 서비스
  • 스냅샷이나 백업을 기본으로 지원하지 않으므로 백업을 위해서는 별도로 AWS Backup 서비스를 이용해야 함

S3

  • 객체 단위로 저장되는 Object Storage. 기존의 파일 시스템과 같은 계층구조가 아니다.
  • 웹사이트 콘텐츠의 호스팅도 가능하다. GET,POST 등의 작업이 가능하기 때문.
  • EC2는 AMI를 저장하기 위해 S3를 사용한다.
  • EBS의 스냅샷이 저장되는 위치가 S3이다.

웹에서 데이터를 받아오는 Repository 역할을 할 것인지에 따라 갈린다. 후자에서는 S3가 적합하다.
자동 확장이 가능하여 프로비저닝에 신경쓰고싶지 않은 NAS가 필요하다면 EFS
EC2를 사용하고 스냅샷 기능을 사용하고 싶다면 EBS

 

10. Amazon RDS


RDS란?

AWS 클라우드에서 제공하는 관계형 데이터베이스 서비스. DB 서버를 위한 리소스 구매 없이 RDS를 이용해서 클라우드화 할 수 있다. AWS에서 전적으로 관리해주는 서비스이기 때문에 DB 인스턴스 제어를 위한 shell을 제공하지 않는다. DB인스턴스 생성을 위해서 AWS CLI를 이용하는 것은 가능하다. 또한 고급 권한이 필요한 테이블이나 시스템에 대해서 접근을 제어한다. 자동화된 백업을 수행하거나, 백업 스냅샷을 생성할 수도 있으며, 이미 많이 쓰이고 있는 MySQL, MariaDB, PostgreSQL, Oracle, Microsoft SQL Server와 같은 제품 유형을 선택할 수 있다. 읽기 전용 복제본을 생성하여 장애 조치를 수행할 수 있으며, IAM으로 접사용자 제어가 가능하다. 복잡한 트랜잭션,쿼리,빠른 쓰기속도가 필요한 경우에 적합하며, 대규모의 읽기/쓰기작업에는 부적합하다.

RDS 스토리지 유형

  • 범용 SSD
  • 프로비저닝된 IOPS SSD
  • 마그네틱

RDS를 위한 고가용성

  • 비동기식 : RDS 읽기 전용 복제본을 사용하면 단일 DB 인스턴스의 용량 한도 이상으로 탄력적으로 확장하여 읽기 중심의 데이터베이스 워크로드 처리가 가능하다. 필요한 경우 읽기 전용 복제본은 독립적으로 실행되는 DB 인스턴스로 승격시킬 수도 있다.
  • 동기식 : 다중 AZ에 RDS를 배포하면 서로 다른 AZ에 동기식 예비 복제본을 프로비저닝하고 유지한다. 물론 동기식이므로 데이터 복제가 지속적으로 발생하기 때문에 단일 AZ 배포에 비해 쓰기 속도가 조금 느려질 수 있다.

 

11. AWS CloudWatch


CloudWatch란?

AWS 리소스와 실행중인 애플리케이션에 대해서 실시간 이벤트 모니터링, 기록, 추적을 지원하는 서비스이다. CloudWatch의 홈 페이지에는 사용 중인 모든 AWS 서비스에 대한 지표가 자동으로 표시된다. 측정된 정보를 바탕으로 리소스나 인스턴스를 확장/축소시킬지 결정할 수 있다. CloudWatch 경보를 이용하면 AWS SNS나 Auto Scaling에 연동해서 정책기준을 대신하는 알림을 만들 수도 있다. 측정된 지표는 최대 455일(15개월)까지 보존되며 지난 2주동안 새로운 요소가 없는 지표는 콘솔에 나타나지 않는다. 이러한 경우는 AWS CLI에서 get-metric-data, get-metric-statistics 명령을 사용할 수 있다.

CloudWatch는 다양한 모니터링 메트릭을 통해서 호스트 수준의 메트릭이나, 호스트를 집계한 집계 수준의 메트릭을 볼 수 있다. ElasticSearch를 함께 활용해서 백단에 kinbana와 같은 서드파티 솔루션을 활용해서 로그를 분석하고 시각화하여 의미 있는 데이터의 생산이 가능하다.