[AWS] 서비스 개념 정리 (3)Certificate/AWS SAA2022. 2. 23. 20:32
Table of Contents
728x90
✅ Amazon SQS (Simple Queue Service)란 ?
- 마이크로 서비스, 분산 시스템 및 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있도록 지원하는 완전관리형 메시지 대기열 서비스이다.
- 메시지 지향 미들웨어를 관리하고 운영하는 데 따른 복잡성과 오버헤드를 제거하고 개발자가 차별화 작업에 집중할 수 있도록 지원한다.
- 메시지를 손실하거나 다른 서비스를 가동할 필요 없이 소프트웨어 구성 요소 간에 어떤 볼륨의 메시지든 전송, 저장 및 수신할 수 있다.
- 주로 트래픽이 많이 몰리는 상황에서 간헐적으로 누락되는 요청을 안정적으로 받아내기 위해 특정 서비스 앞에 붙여서 사용하게 된다.
✅ SQS 사용 이점
- Amazon SQS는 이런 관리 부담이 없고 최소한의 구성으로 바로 사용할 수 있다.
- Amazon SQS는 방대한 규모를 지원하므로 하루에 수십억 건의 메시지를 처리할 수 있다.
- 별도의 구성 없이 Amazon SQS로 전송하는 트래픽 양을 확장하거나 축소할 수 있다.
- Amazon SQS에서는 매우 뛰어난 메시지 안정성을 제공하므로 고객과 이해관계자는 안심하고 사용할 수 있다.
✅ 짧은 폴링과 긴 폴링
- 폴링이란 ?
하나의 장치(또는 프로그램)이 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다. - 짧은 폴링을 사용하여 ReceiveMessage 요청은 서버의 하위 집합(가중치 임의 분포를 기반으로 함)만 쿼리하여 응답에 포함할 수 있는 메시지를 찾습니다. Amazon SQS는 쿼리에서 메시지를 찾지 못하더라도 응답을 즉시 전송합니다.
- 긴 폴링을 사용하면 ReceiveMessage 요청이 모든 서버에서 메시지를 쿼리합니다. Amazon SQS는 적어도 하나의 사용 가능한 메시지를 수집한 후 요청에 지정된 최대 메시지 수까지 응답을 보냅니다.Amazon SQS는 폴링 대기 시간이 만료되는 경우에만 빈 응답을 보냅니다.긴 폴링을 사용하면 Amazon SQS 대기열에서 메시지가 사용 가능해지는 즉시 간편하고 경제적인 방법으로 메시지를 검색할 수 있습니다. 긴 폴링을 사용하면 빈 응답을 수신하는 횟수를 줄일 수 있으므로 SQS 사용 비용을 절감할 수 있습니다.
- 긴 폴링은 빈 응답 수를 줄여서 사용 비용을 줄여줄 수 있기 때문에, ReceiveMessage API 작업에 대한 대기 시간이 0보다 큰 경우에 유효하다.
Long polling
서버측에서 접속을 열어두는 시간을 길게 하는 방식
주기적인 확인(폴링) 대신, 서버 이벤트 발생 시점에서 결과를 받는 방식
클라이언트가 서버에 정보를 요청하면 지정한 기간 동안 연결을 열어둠
정보가 있으면 결과를 보내주고 정보가 없으면 정보가 발생할 때까지 대기 (지정한 기간이 끝나면 다시 요청)
메시지의 양이 많으면 "폴링 → 롱 폴링" 전환을 해도 그다지 성능이 개선되지 않음
✅ SQS의 동작 방식
기본적으로는 표준 대기열로 동작하고, 다른 특징을 가지고 있는 FIFO 대기열로 사용할 수 있다.
- 표준 대기열
- API 작업 별 초당 무제한의 API 호출 수 지원
- 각 메시지의 최소 1회 전달을 보장합니다.
- 정확한 순서를 보장하지 않습니다.
- FIFO 대기열
- API 작업 별 초당 최대 3000개의 트랜잭션 지원 (초당 TPS 수가 제한적이다.)
- 모든 메시지를 정확히 1회 처리함을 보장합니다.
- 정확한 순서를 보장합니다.
- 사용자가 입력한 명령어가 올바른 순서로 실행되도록 보장
- 가격 수정을 올바른 순서로 전송하여 올바른 제품 가격을 표시
- 학생이 계정 등록 전에는 과정에 등록하지 못하도록 차단
✅ SQS의 구성
- 메세지를 생성하는 producer
- 데이터를 연결하는 queue
- 메세지를 가져가는 consumer
✅ 서버 엑세스 로깅
- Amazon S3 버킷에 수행된 요청에 대한 상세 레코드를 제공한다.
- 액세스 로그 정보는 보안 및 액세스 감사에 유용하게 사용될 수 있다. 또한 고객 기반을 이해하고 S3 청구 비용을 파악할 수 있다.
- S3는 기본적으로 서버 액세스 로그를 수집하지 않는다. 로깅을 활성화하면 S3는 사용자가 선택한 대상 버킷에 소스 버킷에 대한 엑세스 로그를 전달한다. 대상 버킷은 소스 버킷과 동일한 AWS 리전에 있어야 하며 기본 보존 기간 구성이어서는 안된다.
- 액세스 로그 레코드에는 버킷에 대한 요청 내역이 자세히 나와있다. 이 정보에는 요청 유형, 요청에 지정된 리소스, 요청을 처리한 날짜 및 시간 등이 포함된다.
다음의 예제 버킷은 로깅 서비스 보안 주체 (logging.s3.amazonaws.com)에 s3 : PutObject 권한을 부여한다는 의미이다.
✅ AWS CloudTrail이란 ?
- AWS 계정에서 AWS Service가 수행하는 작업들은 CloudTrail에 이벤트로 기록된다.
- 이 때 이벤트는 AWS Management Console, AWS CLI, AWS SDK, API에서 수행하는 모든 작업들을 말한다.
- AWS CloudTrail을 사용해 AWS 인프라 전반에 걸친 계정활동을 확인, 검색, 다운로드, 보관, 응답할 수 있다. 따라서 AWS 계정 활동에 대한 CloudTrail을 통한 가시성 확보는 보안 및 운영에서 매우 중요하다.
✅ CloudTrail 작동 방식
- CloudTrail은 생성 시 AWS 계정에서 활성화된다. AWS 계정에서 이루어진 활동이 CloudTrail 이벤트에 기록되고, AWS Console의 Event History에서 이벤트 기록을 확인할 수 있다.
- 이벤트 기록을 통해 AWS 계정에서 발생한 지난 90일간의 활동을 확인할 수 있다.
- CloudTrail은 지정한 Amazon S3 Bucket에 이벤트를 저장할 수 있도록 구성되어 있다. 또한 Amazon CloudWatch Logs 및 Events를 통해 Trail의 이벤트를 전송 및 분석할 수도 있다.
✅ CloudTrail 종류
- 모든 리전에 적용되는 Trail
모든 리전에 적용되는 Trail을 생성하면 CloudTrail은 각 리전에만 이벤트를 기록하고 CloudTrail 이벤트 로그 파일을 지정한 Amazon S3 Bucket으로 전송한다. 새 리전을 추가할 경우 그 리전이 자동으로 포함되어 이벤트가 Logging된다. (Console로 Trail 생성시 Default 옵션이다)
- 리전 하나에 적용되는 Trail
하나의 리전에 적용되는 Trail을 생성하면 CloudTrail은 해당 리전에만 이벤트를 기록한다. 그 후 지정한 Amazon S3 Bucket으로 CloudTrail 이벤트 Log 파일을 전송한다. (AWS CLI, API를 사용해 생성시 Default 옵션이다)
✅ AWS CloudWatch란 ?
- Amazon CloudWatch는 DevOps 엔지니어, 개발자, 사이트 안정성 엔지니어(SRE), IT 관리자 및 제품 소유자를 위해 구축된 모니터링 및 관찰 서비스이다.
- 애플리케이션을 모니터링하고 시스템 전체 성능 변경에 대응하며 리소스 사용률을 최적화하는 데 필요한 데이터와 실행 가능한 인사이트를 제공한다.
- 모니터링 및 운영 데이터를 로그, 지표 및 이벤트 형태로 수집하며 이를 통해 운영 상태를 통합적으로 보고 AWS 및 온프레미스에서 실행되는 AWS 리소스, 애플리케이션 및 서비스를 완벽하게 파악할 수 있다.
✅ CloudWatch 작동 방식
- Amazon CloudWatch는 기본적으로 지표 리포지토리이다.
- Amazon EC2와 같은 AWS 서비스는 지표를 리포지토리에 저장하므로 이러한 지표를 기반으로 통계를 검색할 수 있다. 사용자 지정 지표를 리포지토리에 저장하면 해당 지표에 대한 통계도 검색할 수 있다.
- 지표를 사용하여 통계를 계산한 다음, CloudWatch 콘솔에서 데이터를 그래픽으로 나타낼 수 있다.
- 특정 기준이 충족되었을 때 Amazon EC2 인스턴스를 중지, 시작 또는 종료하도록 경보 작업을 구성할 수 있다.
- 또한 사용자를 대신하여 Amazon EC2 Auto Scaling 및 Amazon Simple Notification Service(Amazon SNS) 작업을 시작하는 경보를 생성할 수 있다.
- AWS 클라우드 컴퓨팅 리소스는 가용성이 매우 높은 데이터 설비에 있다. 확장성 및 안정성을 더욱 높이기 위해 각 데이터 센터 설비는 지역이라고 하는 특정 지리적 영역에 있다. 장애 격리 및 안정성을 최대한 높이기 위해 리전이 서로 완전히 분리되도록 설계되었다. 지표는 리전에 별도로 저장되지만, CloudWatch 교차 리전 기능을 사용하여 다른 리전의 통계를 집계할 수 있다.
✅ Elastic IP란 ?
- 동적 클라우드 컴퓨팅을 위해 고안된 정적 IPv4 주소이다.
- EIP는 AWS 계정에 할당되며 릴리스할 때까지 할당된 상태로 유지된다.
- EIP를 사용하면 주소를 계정의 다른 인스턴스에 신속하게 다시 매핑하여 인스턴스나 소프트웨어의 오류를 마스킹할 수 있다.
- 도메인이 인스턴스를 가리키도록 도메인에 대한 DNS 레코드에 EIP 주소를 지정할 수 있다.
- IPv6에 대한 EIP 주소를 지원하지 않고 있다.
✅ EIP 사용 이유
- EC2 인스턴스를 생성하여 서버를 실행시키면 고정 IP가 아닌 동적 IP를 할당받는다. 인스턴스(서버)를 중지하고 다시 실행시키면 IP가 변경되어 버리는 문제가 발생하므로 탄력적 IP를 할당받아서 사용해야 한다.
✅ EIP 주의 사항
고정 아이피는 전세계적으로 부족한 자원이기 때문에, 보통 유동 IP를 사용하게 된다. 그래서인지, EIP는 생성한 뒤 실제 EC2 인스턴스에 연결된 상태에서는 1개까지는 무료이지만, 인스턴스가 연결되지 않고 EIP가 사용되지 않는 상태에서는 유료다. 따라서 사용하지 않는 EIP는 반드시 삭제 해야한다.
https://pyrasis.com/book/TheArtOfAmazonWebServices/Chapter06
✅ Kinesis
- 실시간으로 데이터 스트림을 수집, 처리, 분석해주는 서비스이다.
✅ kinesis 서비스
- Kinesis Data Stream
- 데이터 스트림 수집 및 저장
- 샤드의 수를 조절하여 스트림을 얼마나 받을지 조절할 수 있다.
- Kinesis Date Firehose (혹은 Delievery Stream)
- 데이터 스트림 처리 및 전송
- Kinesis Video Stream
- 스트리밍 데이터 분석
- 실시간 분석 생성 – 지표를 계산하고, Kinesis를 통해 Amazon S3 또는 Amazon Redshift로 전송할 수 있다.
- 실시간 대시보드 제공 – 집계 및 처리된 스트리밍 데이터 결과를 전송하여 실시간 대시보드를 구성할 수 있다.
- 실시간 지표 생성 – 실시간 모니터링, 알림, 경보에 사용할 사용자 지정 지표와 트리거를 생성할 수 있다.
- Kinesis Data Analytics
- 실시간으로 스트리밍 데이터를 필터링, 집계 및 변환하는 고급 분석 기능을 제공하는 서비스
✅ kinesis 용어 정리
- Data Record
- 데이터 레코드는 데이터 스트림에서 사용되는 메세지를 말한다.
- sequence number, partition key, data blob 등으로 이루어져 있으며 하나에 1MB 까지 사용할 수 있다.
- 한 번 스트림에 들어가면 변경이 불가능하다.
- Retention Period
- 데이터 레코드의 보존 기간은 기본적으로 24시간이다.
- 최소 24시간이며 최대 365일까지 증가시킬 수 있으나 요금이 추가된다.
- Producer
- 스트림에 데이터를 보내준다.
- Consumer
- 스트림에 있는 데이터를 가져와서 사용한다.
- Shard
- 샤드는 데이터 스트림의 단위를 말한다. 하나의 스트림은 하나 또는 그 이상의 샤드로 구성될 수 있다.
- 하나의 샤드는 읽을 때 최대 5개의 트랜잭션을 지원하며 최대 초당 2MB를 읽을 수 있고, 초당 1000개의 레코드를 쓰고 초당 1MB를 쓸 수 있다.
- Partition Key
- 파티션 키는 스트림 내에서 샤드별로 데이터를 그룹화하는데에 사용된다.
- 데이터 레코드에 파티션 키를 지정할 수 있다.
- 파티션 키로 데이터 레코드가 속할 샤드를 결정할 수 있으며 결정시에는 MD5 Hash 함수를 사용한다.
- Sequence Number
- 각각의 데이터 레코드에는 파티션 키에 고유한 Sequence Number가 있다.
- Application Name
- 애플리케이션의 식별자
- DynamoDB, Amazon CloudWatch의 이름으로 사용된다.
참고
728x90
'Certificate > AWS SAA' 카테고리의 다른 글
[AWS] 서비스 개념 정리 (6) (0) | 2022.02.28 |
---|---|
[AWS] 서비스 개념 정리 (5) (0) | 2022.02.25 |
[AWS] 서비스 개념 정리 (4) (0) | 2022.02.24 |
[AWS] 서비스 개념 정리 (2) (0) | 2022.02.23 |
[AWS] 서비스 개념 정리 (0) | 2022.02.23 |
@TTOII :: 뭉게뭉게 클라우드
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!