sungwony

[AWS] Application 본문

cloud & devops/amazon web service

[AWS] Application

일상이상삼상 2020. 2. 9. 23:47

이 글은 Udemy의 AWS Certified Solutions Architect - Associate 2019 강의를 개인 학습용도로 정리한 글입니다


 

SQS

 

Amazon SQS는 message queue에 접근할 수 있도록 하는 웹 서비스이다. 메세지 큐는 컴퓨터가 처리할 때 까지 기다리는 동안 메세지를 저장하는데 사용된다. Amazon SQS는 웹 서비스 애플리케이션의 하나의 컴포넌트가 다른 컴포넌트가 소비하도록 생성한 메세지를 빠르고 안정적으로 큐잉하는 분산 큐 시스템이다. 하나의 큐는 처리를 대기하는 메세지를 위한 임시 리파지토리이다. SQS는 다음과 같은 특징이 있다.

 

- SQS는 pull 기반이다(push 기반이 아님)

- 메세지는 256KB 이하이다

- 메세지는 1분에서 14일까지 큐에 보관될 수 있다. 기본 유지 기간은 4일이다

- 조회가능 타임아웃은 독자가 해당 메세지를 선택한 후 SQS 대기열에서 메시지가 보이지 않는 시간이다. 조회가능 타임아웃전에 작업이 처리되면 메세지가 큐에서 삭제된다. 해당 시간 내에 작업이 처리되지 않으면 메시지는 다시 표시되고 다른 리더가 메세지를 처리한다. 이때문에 같은 메세지가 두번 딜리버리될 수 있다

- 조회가능 타임아웃 최대는 12시간이다

- SQS는 메세지가 최소 한번 처리되는것을 보장한다

- Amazon SQS long polling은 Amazon SQS 큐로부터 메세지를 검색하는 방식이다. 일반적인 short polling은 즉각 반환(메세지 큐가 비어있음에도)되는 반면 long polling은 메세지가 메세지 큐에 도착하거나 long polling 타임아웃시 까지 응답을 반환하지 않는다

 

SQS를 사용하면 어플리케이션의 컴포넌트간 결합도를 낮출 수 있고 그 결과 각 컴포넌트들은 독립적으로 실행될 수 있으며 컴포넌트 사이의 메세지 관리를 간편하게 해준다. 분산된 어플리케이션의 어떤 컴포넌트라도 메세지를 fail-safe 큐에 저장할 수 있다. 메세지는 어떤 포맷의 텍스트라도 256KB 까지 포함시킬 수 있다. 어떤 컴포넌트도 Amazon SQS API를 사용하여 메세지를 프로그램적으로 검색할 수 있다.

 

SWF(Simple Work Flow)

 

Amazon Simple Workflow Service(Amazon SWF)는 분산된 어플리케이션 컴포넌트 사이에서 업무를 조직화하는 것을 간편하게 해주는 웹 서비스이다. SWF는 미디어 프로세싱, 웹 어플리케이션 백엔드, 비지니스 프로세스 워크플로우, 분석 파이프라인 등 테스크를 조직화하도록 고안된 범위의 유즈케이스를 어플리케이션에 허용한다. 테스크는 실행할 수 있는 코드, 웹 서비스콜, 휴먼 액션, 스크립트에 의해 수행된 어플리케이션에서 다양한 프로세싱 스텝의 수행을 대표한다.

 

SWF vs SQS

 

- SQS는 14일까지 보관 기간을 갖는다. SWF는 1년 까지의 워크플로우를 실행할 수 있다

- Amazon SWF는 테스크 기반 API가 존재하고 Amazon SQS는 메세지 기반 API를 제공한다

- Amazon SWF는 테스크가 오직 한번 할당되는 것을 보장하고 절대 중복되지 않는다. Amazon SQS는 중복된 메세지를 사용자가 처리해줄 필요가 있고 메세지가 오직 한번 처리되는 것을 보장해줄 필요가 있다

- Amazon SWF는 어플리케이션의 모든 테스크와 이벤트를 지속적으로 추적한다. Amazon SQS는 멀티 큐를 사용할 경우 어플리케이션 레벨의 트레킹을 직접 구현할 필요가 있다

 

SWF Actors

 

- Workflow Starter : workflow를 초기화할 수 있는 어플리케이션. 주문의 위치를 추적하는 E-Commerce 웹사이트, 버스 시간표를 검색하는 모바일 앱이 될 수 있다

- Deciders : workflow 실행시 실행 Task들의 플로우를 제어한다. 만약 workflow에서 무언가 끝났다면(또는 실패했다면) Decider가 다음에 실 것을 결정한다

- Activity Workers : 실행 Task들을 수행한다

 

SNS

 

Amazon Simple Notification Service(Amazon SNS)는 클라우드에서 설치와 동작, 알림 전송을 간단하게 만드는 웹 서비스이다. SNS는 개발자에게 어플리케이션에서 메세지를 퍼블리싱 하고 구독자나 다른 어플리케이션에 메세지를 즉시 전송하는데 높은 확장성, 유연성, 가성비 효과를 제공한다

 

SNS의 이점

 

- 즉각적이다. PUSH 기반의 딜리버리 서비스(NO POLLING)

- 단순한 API와 어플리케이션에 결합이 쉬움

- 다중 전송 프로토콜에 유연한 메세지 전송

- 저렴하고, 선결제(up-front) 비용이 없는 종량제(pay-as-you-go) 모델

- 웹 기반의 AWS 관리 콘솔이 포인트 앤 클릭 인터페이스의 간편함을 제공

 

SNS vs SQS

 

- SNS와 SQS 모두 AWS의 메세징 서비스이다

- SNS는 PUSH 기반이고 SQS는 PULL 기반이다

 

Elastic Transcoder 

 

- 클라우드의 미디어 트랜스코더

- 원본 소스 포맷의 미디어 파일을 스마트폰, 테블릿, PC 등에서 재생할 수 있는 다른 포맷으로 변환

- 대중적인 아웃풋 포맷을 위한 트랜스코딩 프리셋을 제공한다. 이것은 특정 디바이스에서 어떤 세팅이 가장 최적인지 추정할 필요가 없음을 의미한다

- 코드 변환을 진행한 분단위와 코드 변환 해상도에 기반하여 요금 지불

 

API Gateway

 

Amazon API Gateway는 개발자가 모든 규모의 API를 쉽게 게시, 유지 관리, 모니터링 및 보안 할 수 있도록하는 완전 관리 형 서비스이다. 단지 몇 번의 클릭으로 AWS Management Console에서 어플리케이션의 정문 역할을 하는 API를 생성할 수 있다. API는 어플리케이션에 데이터를 엑세스하고, 비지니스 로직을 수행하고, 백앤드 서비스의 기능 예를들어 Amazon Elastic Compute Cloud(Amazon EC2)에서 실행하는 어플리케이션, AWS Lambda에서 실행중인 코드, 이외의 어떤 웹 어플리케이션의 정문 역할을 수행할 수 있다.

 

API Gateway로 할 수 있는 것들

 

- RESTful API를 정의해 HTTPS 앤드포인트를 노출

- Lambda, DynamoDB와 같은 서비스에 서버없이 연결

- 각 API 앤드포인트를 다른 대상으로 전송

- 저렴한 비용으로 효율적으로 수행

- 손쉬운 확장

- API 키를 통한 추적과 제어

- 공격을 막기위한 Throttle 요청

- 모든 요청을 모니터링 하기 위해 로그를 CloudWatch에 연결

- 여러 버전의 API를 유지보수

 

API 게이트웨이 설정 방법

 

- API 정의(Container)

- 리소스와 내부 리소스(URL Path) 정의

- 각 리소스를 위한 설정

   - 지원되는 HTTP 메소드 선택(용법)

   - 보안 설정

   - 타겟 선택(EC2, Lambda, DynamoDB 등)

   - 요청과 응답 변환 설정

 

API 게이트웨이 배포방법

 

- 스테이지에 API 배포

   - API 게이트웨이 도메인을 사용(기본)

   - 커스텀 도메인을 사용

   - AWS 자격 관리자를 지원 : 무료 SSL/TLS 자격

 

API 게이트웨이 정리

 

- API 게이트웨이가 높은 레벨에 있음을 상기

- API 게이트웨이는 성능을 높이기 위한 캐싱 기능이 있음

- API 게이트웨이는 저비용이고 자동으로 확장

- 공격을 막기 위해 API 게이트웨이의 통행량을 제한

- CloudWatch에 결과를 로깅

- Javascript/AJAX 사용하여 여러 도메인의 API 게이트웨이에 요청한다면 API 게이트웨이에 CORS를 활성화했는지 확인해야 한다

- CORS는 클라이언트에 의해 실행된다

 

Kinesis

 

Amazon Kinesis는 AWS에서 스트리밍 데이터를 전송하기 위한 플랫폼이다. Kinesis는 부하를 줄이고 스트리밍 데이터 분석을 쉽게 해주며 비지니스 요구에 맞는 커스텀 어플리케이션을 구축할 수 있는 기능을 제공한다

 

Kinesis 정리

 

- Kinesis Stream과 Kinesis Firehose의 차이점을 이해해야한다. Kinesis Stream은 Shard라고 하는 영속 저장소(24시가 - 7일 유지)가 있고 Kinesis Firehose는 이런 저장소가 존재하지 않아 곧바로 처리되야 한다. 주어진 시나리오 문제에 대해 가장 연관성있는 서비스를 선택해야 한다

- Kinesis Analytics를 이해해야 한다

 

Web Identity Federation - Cognito

 

Web Identity Federation는 Amazon, Facebook, Google과 같은 웹기반 아이덴티티 제공자에 성공적으로 인증된 이후 AWS에 유저 엑세스를 제공하도록 한다. 성공적인 인증에 따라 유저는 Web ID 제공자로 부터 인증 코드를 받게되는데 이것을 임시 AWS 보안 크리덴셜을 위해 교환할 수 있다. Amazon Cognito는 Web Identity Federation에 다음 기능을 제공한다

 

- App에 Sign-up 그리고 Sign-in

- 게스트 유저를 위한 액세스

- 어플리케이션과 Web ID 제공자 사이의 Identity Broker로 동작하여 추가적인 코드 작성이 불필요

- 여러 디바이스의 유저 데이터 동기화

- 모든 모바일 어플리케이션 AWS 서비스에 권장된다

 

Cognito 정리

 

- Federation은 유저가 Web Identity 제공자(Google, Facebook, Amazon)에 인증하는 것을 허용한다

- 유저는 먼저 Web ID 제공자에 인증하고 Authentication Token을 발급받는다. 이를 임시 AWS 크리덴셜과 교환하고 AWS 크리덴셜은 IAM Role을 대체한다

- Cognito는 어플리케이션과 Web ID 제공자 사이의 상호작용을 다루는 ID Broker로 추가적인 코드를 작성할 필요가 없게한다

- 유저 Pool은 유저에 기반한다. 이것은 유저 등록, 인증, 복구와 같은 업무들을 처리한다

- ID Pool은 AWS 리소스에 접근을 인가한다

'cloud & devops > amazon web service' 카테고리의 다른 글

[AWS] Serverless  (0) 2020.03.05
[AWS] 고가용성 아키텍처(High Availability Architect)  (0) 2020.01.26
[AWS] VPC 2/2  (0) 2020.01.24
[AWS] VPC 1/2  (0) 2020.01.15
[AWS] Route53  (0) 2019.12.30