본문 바로가기
AWS/AWS Certificate

[AWS SAA]AWS SOLUTIONS ARCHITECT C02 STUDY - 영역 2: 성능이 뛰어난 아키텍처 정의

by isn`t 2020. 12. 22.

목차

[1. Elastic Cache]
[2. Amazon DynamoDB]
[3. Amazon Redshift]
[4. Amazon Aurora]
[5. Amazon Route 53]
[6. AWS CloudTrail]
[7. AWS Elastic Beanstalk]
[8. AWS OpsWorks]
[9. AWS CloudFormation]
[10. AWS Lambda]
[11. AWS API Gateway]

1. Elastic Cache


Elastic Cache란?


인메모리 관리형 캐시 서비스. 세션 정보나 임시 데이터를 순간적으로 처리하는데 최적화 되어있고, DB에서 자주 액세스되는 정보들을 메모리 기반으로 빠르게 캐싱하여 웹 인스턴스에 실시간 처리하여 응답할 수 있는 기능을 한다. 관리형이기 때문에 장애 상황에 대해서 자가 복구 기능이 있고, 클러스터 구성이 굉장히 쉽다.

Elastic Cache 특징


  • 인메모리
  • 완전 관리형 Redis 지원
  • 실시간 처리 사례에 적합

 

2. Amazon DynamoDB


DynamoDB란?


관리형 NoSQL 기반의 key-value DB 서비스로, 읽기와 쓰기에 대한 처리량을 즉시 변경 가능하다. 읽기 작업이 많아지면 읽기 작업의 용량을 늘리는 등의 조작이 실시간으로 가능해진다. 비용은 프로비저닝 한 만큼 과금된다. 테이블이 커지더라도 key 기반의 간결한 DB이기떄문에 밀리초 수준의 빠른 응답시간이 보장된다. MongoDB에서 지원하는 JSON document도 지원하며 TTL 기능을 제공하기 때문에 특정 만료시간이 지난 요소를 제거한다던지, 저장비용이 더 저렴한 S3로 자동 이동하도록 할 수 있다.

DynamoDB 특징


  • NoSQL
  • 워크로드 수요에 맞춰 자동으로 프로비저닝
  • 3개 리전에 동기 복제
  • key-value 기반 GET/PUT 가능

 

3. Amazone Redshift


Redshift란?


완전 관리형 클라우드 데이터 웨어하우스 서비스. Redshift는 열(column)기반, 표준 SQL을 지원하므로 정교한 쿼리 최적화, 병렬 쿼리 실행 기능으로 페타바이트 규모의 정형 데이터까지도 처리 가능하며, Redshift의 모든 보안 기능은 추가 비용 없이 제공된다. Redshift는 CloudTrail 서비스와 통합하여 모든 Redshift API 호출을 감시할 수 있다. 연결 시도, 쿼리, 변경사항을 비롯한 모든 SQL 작업을 기록한다.

Redshift Spectrum이란?


별도의 로딩 없이 S3에 있는 엑사바이트 규모의 비정형 데이터에 대해 쿼리를 실행할 수 있는 기능이다.쿼리를 발행하면, Amazon Redshift SQL 엔드포인트로 전달되고 여기에서 쿼리 플랜을 생성하고 최적화한다. Redshift는 자신이 가지고 있는 로컬의 데이터와 S3에 있는 데이터 현황을 파악하고, 읽어들일 데이터 중 S3에 있는 양을 최소화하는 플랜을 생성하면 실제 데이터를 읽어오고 처리하는 것은 Redshift Spectrum이 하게 된다. Redshift spectrum은 필요한 경우 수천 개의 인스턴스로 확장되며, 데이터 크기에 신경쓰지 않고 쿼리를 빠르게 실행할 수 있다.

 

4. Amazon Aurora


AWS Aurora란?

완전히 AWS 클라우드 환경에 네이티브한 SQL DB 서비스이며 RDS 서비스 중 하나이다. 기존의 MySQL과 호환이 가능. RDS에서 운영중인 MySQL의 스냅샷을 받아서 바로 Aurora에 마이그레이션 하는 등의 작업도 가능하다. 최대 15개의 읽기 전용 복제본을 제공하며, 이 복제본들을 클러스터로 구성하여 사용할 수도 있다. Aurora의 스토리지 용량은 미리 프로비저닝 하는 것이 아니라 최대 64 TB까지 자동으로 확장 가능한 방식이며, 스토리지 데이터는 3곳의 AZ에 6개의 복제본으로 S3에 백업해둔다. Redshift가 스토리지 역할을 한다면 Redshift는 컴퓨팅작업을 하게 되는데, 스토리지와 컴퓨팅을 분리하므로 개별적 운용이 가능해진다.

Aurora 특징

  • MySQL,PostgreSQL 지원
  • 3개의 AZ에 6개 복제본 제공
  • 최대 15개의 읽기 전용 복제본

Aurora vs MySQL

기능 Aurora 복제본 MySQL 복제본
복제본 개수 최대 15개 최대 5개
복제본 유형 비동기식(밀리초) 비동기식(초)
복제본 위치 리전 내 교차 리전
자동 장애 조치 아니오
사용자 정의 복제 아니오
모델 Active Standby
마스터 노드 여러 개 한 개

Multi Master node

중간의 에이전트가 DB 쓰기 작업에 대한 프록시 역할을 하기 때문에 충돌로 인한 성능 이슈를 방지한다.

 

5. Amazon Route53


가용성과 확장성이 우수한 DNS(도메인 네임 시스템). 최종 사용자를 애플리케이션 단으로 라우팅할 수 있는 안정적인 서비스를 기업과 개발자에게 제공한다. 역할 자체는 도메인 주소를 IP주소로 변환하는 역할을 하며, 관련한 DNS 요청을 처리하는 클라우드 환경에서의 DNS이다. 반대로 AWS 내부에서 외부의 인프라로 라우팅하는데도 Route53을 사용할 수 있으며, REST API 기반으로 사용할 수도 있다. 또한 DNS 상태 요청을 보내 애플리케이션, 웹 서버, 기타 리소스의 상태와 성능을 모니터링할 수도 있다.

Route53의 고가용성과 낮은 레이턴시


AWS의 DNS서버는 전 세계에 분산되어있어 각종 재해와 장애로부터 네트워크 문제를 예방할 수 있으며, 최종 사용자가 애플리케이션에 안정적으로 라우팅 할 수 있다. 세계 각지의 DNS 서버에서 애니캐스트 네트워크를 처리하는 Route53은 네트워크 상태에 따라 최적의 위치에서 DNS쿼리에 응답하도록 설계되어 있어 낮은 지연시간을 확보하였다.

쿼리 로깅


날짜, 도메인 이름, 쿼리 유형, 위치를 포함하여 Route53이 수신하는 쿼리에 대한 정보를 로깅하도록 할 수 있다. 쿼리 로깅을 구성하면 Route53은 CloudWatch Logs에 로그를 전송한다.

 

6. AWS CloudTrail


CloudTrail이란?


AWS CloudTrail은 사용자 계정에서 이루어진 활동을 기록하고, 로그 파일을 사용자의 Amazon S3, Amazon CloudWatch Logs 및 Amazon CloudWatch Events로 전달하는 웹 서비스이다. CloudTrail은 요청한 사람, 사용된 서비스, 수행된 작업, 작업의 파라미터, AWS 서비스에서 반환한 값 등의 정보를 기록할 수 있다. CloudTrail을 이용하면 내부 정책 및 국제 표준을 준수하는데 도움이 된다. 현재 리전에 대한 최대 90일의 계정 활동 및 이벤트 정보를 볼 수 있다. 리전당 최대 5개의 Trail을 생성할 수 있기 때문에 보안, 개발, 운영 등 서로 다른 담당자가 자신만의 Trail을 커스텀할 수 있다.

CloudTrail 특징


  • 약 5분마다 S3로 로그 파일 전송
  • IAM으로 제어
  • 리소스 수준의 로깅 가능
  • S3로 전송한 이후 로그 파일에 대한 무결성 검증 가능

CloudTrail Insights


프로비저닝 증가, IAM, 주기적인 작업의 비정상적 격차와 같은 활동 식별. 애플리케이션이나 스크립트의 오작동이나 잘못된 반복 루프로 인한 대규모 리소스 호출에 대한 신속한 조치 가능. 주로 쓰기 작업에 대한 API를 추적.

CloudWatch와 통합


Trail 결과에 대한 모니터링과 경보 생성, SNS 알림 등을 이용할 수 있다. CloudWatch Logs와 통합하게 되면 S3와 CloudWatch Logs 양쪽으로 CloudTrail 로그를 전달한다.

 

7. AWS Elastic Beanstalk


Elastic Beanstalk란?

여러가지 다양한 플랫폼(JAVA, .net. PHP, GO, nodejs, Docker, Ruby등)을 선택해서 코드를 업로드하면 그 코드가 수행될 수 있을 만큼의 인프라가 자동으로 생성된다. 개발자가 애플리케이션을 업로드하기만 하면 Elastic Beanstalk가 자동으로 용량 프로비저닝, 부하 분산, Auto-Scaling, 애플리케이션 상태 모니터링 등의 배포 세부 정보를 처리한다. 인프라를 최소값으로 할 것인지, 가용성을 확보할 것인지 등은 세분화 하여 선택할 수 있다. EC2에 플랫폼을 설치하고 실행환경을 구성할 필요 없이 코드 실행이 가능하다.

What is different from PaaS?

대부분의 기존 애플리케이션 컨테이너나 PaaS는 프로그래밍 부담을 줄여주지만 개발자가 유연성과 제어력을 활발히 발휘할 수 없습니다. 개발자는 공급업체가 사전 정의한 설정을 그대로 따를 수밖에 없으며, 애플리케이션 인프라의 여러 요소에 대한 제어권을 가질 기회가 거의 없거나 전혀 없습니다. 하지만 AWS Elastic Beanstalk의 경우, 개발자는 애플리케이션을 실행하는 AWS 리소스를 완벽히 제어할 수 있습니다. 개발자는 Elastic Beanstalk의 관리 기능을 사용해 인프라 구성 요소의 일부(또는 전부)를 완벽하게 관리할 수 있습니다. <AWS FAQ 발췌>

 

8. AWS OpsWorks


OpsWorks란?

Ceph를 기반으로 하는 배포 서비스. OpsWorks에 내장된 레시피가 있고 이것을 활용한 자동화가 가능하다. Chef, Puppet 관리 인스턴스를 제공하는 서비스이다. Chuf와 Puppet은 코드 기반으로 서버 구성을 자동화 할 수 있게 하는 자동화 플랫폼이다. Chef와 Puppt을 통해 EC2 인스턴스나 온프레미스 환경에서 서버가 구성, 배포되는 방법을 자동화할 수 있다.

 

9. AWS CloudFormation


CloudFormation이란?


AWS 자동화 솔루션에서 가잠 섬세한 제어가 가능한 서비스이다. JSON이나 YAML 형태의 document에 사용자가 원하는 인프라의 형태를 코드형태로 기술하여 이 문서를 deploy하면 인프라가 자동으로 배포된다. 현재 사용중인 인프라에 대한 템플릿을 CloudFormation으로 받아서 다른 리전에 배포하는 등의 재생산성이 높은 서비스이다.

CloudFormation vs Elastic Beanstalk


두 서비스는 상호 보완적인 관계이다. Elastic Beanstalk는 클라우드에서 손쉽게 애플리케이션을 배포하고 실행할 수 있는 환경을 제공하고, 개발자 도구와 통합여 애플리케이션의 수명 주기를 한 곳에서 관리할 수 있게 돕는다. Elastic Beanstalk는 내부적으로 CloudForamtion을 사용하여 리소스를 생성한다.

 

10.AWS Lambda


Lambda란?

AWS의 서버리스 컴퓨팅에서 가장 핵심적인 요소. 기본적으로 Event driven 방식으로 동작한다. 특정한 Job이 특정 event에만 발생한다면 굳이 EC2 인스턴스에 띄워 둘 필요가 없고, event가 발생하지 않으면 낭비가 심해진다. 이 경우 해당 event에 반응하여 job을 수행한 뒤 lambda 인스턴스는 사라지게 된다. 예를 들어 S3 버킷에 특정 오브젝트가 들어왔을 때, lambda가 S3버킷을 감지하고 있다가 들어온 오브젝트를 썸네일이나 다른 버킷에 저장하는 동작, 또는 DynamoDB나 Kinesis로 들어오는 스트리밍 데이터를 지속적으로 lambda가 Pull해서 뒷단의 EMR이나 데이터 분석을 위한 서비스로 보내는 등의 예시가 있다. lambda는 C#이나 JAVa,Python, Node.js를 제공하고 있다.

EC2 vs Lambda


EC2는 광범위한 인스턴스 유형과 OS, 네트워크 및 보안 설정, 전체 소프트웨어 스택을 사용자 지정 옵션으로 유연하게 제공하므로 기존 애플리케이션을 쉽게 클라우드화 할 수 있다. EC2를 사용하면 용량 프로비저닝, 서버 모니터링, 내결함성 및 확장성 설계를 직접 수행해야 한다. Lambda는 S3 버킷의 변경사항, DynamoDB 테이블의 업데이트, 애플리케이션이나 디바이스에서 발생한 특정 이벤트에 대한 응답으로 코드를 실행할 수 있다. Lambda를 이용하면 자체 인스턴스를 따로 프로비저닝 할 필요가 없고, 용량 프로비저닝, 서버 모니터링, 보안 패치, 코드 배포, 로깅과 같은 모든 운영작업을 수행할 수 있으며 코드 기반의 확장과 뛰어난 고가용성, 사용자가 별도의 작업을 하지 않아도 된다는 장점을 가진다.

Lambda 특징


  • JAVA, Go, Powershell, Node.js, C#, Python, Ruby 지원하며 그 외의 언어에 대한 런타임 API도 제공
  • Lambda를 실행하는 인프라에 접근할 수 없음
  • 수행하는 코드를 S3에 저장하고 암호화하며 무결섬 검사를 수행

Lambda 함수


Lambda에서 실행하는 코드는 'Lambda 함수'로 업로드된다. 각 함수에는 이름과 설명, 진입점, 리소스 요구사항 등이 명시되어 있다. 자체 /tmp 디렉토리에 Lambda 함수만을 위한 디스크 공간이 제공된다. 코드에서 스레드와 프로세스를 사용할 수 있고 Lambda에서 가급적 언어와 운영체제 활동에 대한 제한을 두지 않으려고 하지만, 인바운드 연결은 Lambda에서 차단된다. 아웃바운드 전용 TCP/IP, UDP/IP 소켓만 지원된다. 또한 ptrace 시스템 호출도 차단된다. 25번 SMTP포트도 스팸 방지를 위해 차단한다.

 

11. AWS API Gateway


API Gateway란?


AWS API Gateway는 개발자가 API를 쉽게 게시하고 관리, 모니터링, 보호할 수 있도록 전방위적으로 지원하는 완전관리형 서비스이다. Ec2, ECS, Elastic Beanstalk의 애플리케이션, Lambda에서 실행되는 코드 등에 액세스하는 "현관문" 역할을 하는 API를 생성할 수 있다. API Gateway를 사용해서 서버를 실행하거나 관리할 필요 없이 채팅 앱, 스트리밍 대시보드 및 알림 같은 실시간의 양방향 통신 애플리케이션을 구축할 수 있습니다. API Gateway를 사용하면 연결된 사용자 간에 영구 연결이 유지되며 이러한 사용자 간에 메시지를 전송할 수 있습니다.

API Gateway에서 지원하는 API 유형


HTTP API: AWS Lambda 함수 또는 HTTP 백엔드로 프록시를 통해 전송하는 API를 구축하는 데 최적화되어 서버리스 워크로드에 적합합니다. API 관리 기능은 현재 제공되지 않으며, 다음의 사례에 적합하다.

  • AWS Lambda 또는 모든 HTTP 엔드포인트를 위한 프록시 API 구축
  • OIDC 및 OAuth 2 권한 부여 기능이 탑재된 최신 API 구축
  • 대규모 확장 가능성이 있는 워크로드
  • 지연 시간에 민감한 워크로드의 API

REST API: REST API는 단일 솔루션에서 API 프록시 기능과 API 관리 기능을 제공합니다. REST API는 사용 플랜, API 키, 게시, API 수익 창출 같은 API 관리 기능을 제공합니다.

  • 고객이 단일한 가격으로 자사의 API 구축, 관리 및 게시에 필요한 포괄적 기능을 구매하려는 경우 적합.

WebSocket API: WebSocket API는 연결된 클라이언트 간에 영구 연결을 유지하여 실시간 메시지 통신을 가능하게 합니다. API Gateway에서 WebSocket API를 사용하면 연결된 클라이언트의 메시지가 수신될 때 호출할 AWS Lambda 함수, Amazon Kinesis 또는 모든 HTTP 엔드포인트와의 백엔드 통합을 정의할 수 있습니다.
<AWS FQA 발췌>