[AWS] AWS 서비스
# AWS 서비스
Fargate
- 버 또는 클러스터를 관리할 필요 없이 컨테이너를 실행할 수 있도록 지원하는 Amazon ECS를 위한 컴퓨팅 엔진
- 컨테이너를 실행하기 위해 가상 머신 클러스터를 프로비저닝, 구성 및 확장할 필요가 없습니다.
AWS Config
- AWS 리소스 구성을 측정, 감사 및 평가할 수 있는 서비스
- AWS 리소스 구성을 지속적으로 모니터링 및 기록하고, 원하는 구성을 기준으로 기록된 구성을 자동으로 평가
Cognito
- 웹과 모바일 앱에 빠르고 손쉽게 사용자 가입, 로그인 및 액세스 제어 기능을 추가 가능
- 수백만의 사용자로 확장할 수 있고, Facebook, Google 및 Amazon과 같은 소셜 자격 증명 공급자와 엔터프라이즈 자격 증명 공급자(SAML 2.0 사용)를 통한 로그인을 지원
CloudTrail
- AWS 계정의 활동 내역이 CloudTrail 이벤트에 기록
- 사용자 계정에서 이루어진 활동을 기록하고, 로그 파일을 사용자의 S3 버킷으로 전달하는 웹서비스
- CloudTrail 트레일을 설정하면 CloudTrail 이벤트를 Amazon S3, Amazon CloudWatch Logs 및 Amazon CloudWatch Events로 전송
이점
- 사용자 활동에 대한 가시성 제공
- 작업에 대한 중요 정보 기록
Step Functions
- 시각적 워크플로를 사용해 분산 애플리케이션과 마이크로 서비스의 구성 요소를 손쉽게 조정할 수 있게 해주는 완전관리형 서비스
- 여러 AWS 서비스를 서버리스 워크플로로 조정하여 앱을 신속하게 빌드 및 업데이트 가능
- 애플리케이션의 구성 요소를 일련의 단계로 배열 및 시각화할 수 있는 그래픽 콘솔 제공
- 자동으로 각 단계를 트리거 및 추적하고 오류가 발생할 경우 재시도
- 각 단계의 상태 기록
ElastiCache
- Memcached, Redis 프로토콜과 호환되는 서버 노드를 쉽게 배포 및 실행할 수 있도록 해주는 웹 서비스
- 관리형 인 메모리 시스템에서 정보를 검색할 수 있는 기능을 지원
- 인 메모리 캐싱 기능을 이용하면 읽기 중심의 애플리케이션 워크로드(sns, 게임, 미디어 공유 등) 또는 컴퓨팅 중심의 워크로드의 지연시간과 처리량이 비약적으로 향상
- 인 메모리 캐싱은 핵심 데이터 조각을 메모리에 저장해 액세스 지연 시간을 줄여줌
Lambda@Edge
- 서버를 프로비저닝하거나 관리하지 않고 글로벌 AWS 엣지 로케이션에서 코드를 실행
- 가장 짧은 네트워크 지연 시간으로 최종 사용자에게 응답
- Node.js 코드를 AWS Lambda에 업로드하고 Amazon CloudFront 요청에 대한 응답으로 함수가 트리거되도록 구성
- API Gateway와 Lambda가 리전별 서비스라는 것입니다. Lambda@Edge 및 Amazon CloudFront를 사용하면 최종 사용자의 위치에 따라 여러 AWS 위치에서 로직을 실행
API Gateway
- 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안할 수 있게 해주는 완전관리형 서비스
- “관문” 역할을 하는 REST 및 WebSocket API를 생성
- 래픽 관리, 권한 부여 및 액세스 제어, 모니터링, API 버전 관리를 비롯해 최대 수십만 건의 동시 API 호출을 수락 및 처리하는 데 관련된 모든 작업을 처리
Storage GW
- 온프레미스 환경과 AWS 클라우드 간에 하이브리드 스토리지 지원
- Amazon 클라우드 스토리지 서비스에 데이터를 안전하고 안정적으로 저장하면서 자주 액세스하는 데이터는 온프레미스에 캐싱하여 지연 시간이 짧은 성능을 제공
- 파일, 볼륨, 테이프 3가지 스토리지 인터페이스 지원
- 각 GW에서는 1가지 유형의 인터페이스 제공
- 파일 GW : NFS와 같은 파일 프로토콜을 사용하여 S3에서 객체 저장, 검색 가능
- 볼륨 GW : iSCSI 프로토콜을 사용하여 애플리케이션에 블록 스토리지 제공 / 볼륨의 데이터는 S3에 저장
SNS (Simple Notification Service)
- 클라우드에서 손쉽게 알림을 설정, 운영 및 전송할 수 있도록 하는 웹 서비스
- 개발자에게 애플리케이션의 메시지를 게시하고 이를 구독자나 다른 애플리케이션에 즉시 전송
- 애플리케이션에서 정기적으로 업데이터를 확인하거나 ‘폴링’할 필요 없이 ‘푸시’ 메커니즘을 통해 다수의 구독자에게 메시지 전송
SQS
- 완전 관리형 메시지 대기열 서비스
- 분산 애플리케이션에서 폴링 모델을 통해 메시지를 교환하는 데 사용되는 메시지 대기열 시스템
- 컴퓨터 간에 송수신하는 메시지를 저장하기 위한 안정적이고 확장성이 뛰어난 호스팅 대기열을 제공
- 메시지 지향 미들웨어를 관리하고 운영하는 데 따른 복잡성과 오버헤드를 제거하고 개발자가 차별화 작업에 집중할 수 있도록 지원
- 표준 대기열
- FIFO 대기열
MQ
- Apache ActiveMQ용 관리형 메시지 브로커 서비스
- ActiveMQ의 프로비저닝, 설정, 유지보수를 관리하여 운영 작업을 최소화
- JMS, NMS, AMQP, STOMP, MQTT 및 WebSocket 등을 비롯한 업계 표준 메시징 API와 프로토콜을 사용
- 여러 가용 영역(AZ)에 걸쳐 메시지를 중복으로 저장
- 활성-대기 브로커를 제공
Kinesis Data Streams
- 스트리밍 데이터를 처리 또는 분석하는 사용자 지정 애플리케이션 구축
- 데이터 처리량 수준에서 데이터를 스트리밍하는 데 필요한 인프라, 스토리지, 네트워킹 구성을 관리
- 3곳의 AZ에 데이터를 동기적으로 복제
- 로그 및 데이터 피드 수용 시간 단축
- 실시간 지표 및 보고 : 실시간으로 Amazon Kinesis 데이터 스트림 데이터에서 지표를 추출하고 보고서를 생성 가능
- 실시간 데이터 분석
- 복잡한 스트림 처리
Kinesis Data Firehose
- 스트리밍 데이터를 데이터 스토어와 분석 도구에 로드
- 완전관리형
- 데이터를 로드하기 전, 배치, 압축, 암호화
- 거의 실시간으로 분석하고 통찰력을 확보
Redshift
- 완전관리형 데이터 웨어하우스
- 모든 데이터를 표준 SQL 및 기존 BI(비즈니스 인텔리전스) 도구를 사용하여 간편하고 비용 효율적으로 분석 가능
- 다중 노드의 규모 및 리소스를 활용하며 다양한 최적화 기능을 사용하여 대용량 데이터 세트에 대한 분석 및 보고 워크로드에 대해 기존 데이터베이스와 비교하여 10배의 향상된 성능을 제공
Direct Connect
- 온프레미스를 AWS에 연결할 때 인터넷의 대안으로 사용할 수 있는 네트워크 서비스
- AWS와 개인 데이터 센터 또는 기업 네트워크 간의 프라이빗 네트워크 연결을 통해 전달 가능
Aurora
- MySQL 및 PostgreSQL 호환 관계형 데이터베이스
- MySQL보다 최대 5배 뛰어난 성능 제공, 대부분의 MySQL 애플리케이션 변경할 필요 X
- 1/10 비용으로 상용 데이터베이스의 보안, 가용성, 안정성 제공
- RDS에서 Aurora의 모든 것을 자동관리
- 내결함성을 갖춘 복구 분산 스토리지 시스템
- 읽기 전용 복제본 최대 15개 / 특정 시점 복구 / S3로 지속적 백업 / 3개의 AZ에 걸친 복제
RDS
- 관계형 데이터베이스를 간편하게 설정, 운영, 확장할 수 있는 관리형 서비스
- 데이터베이스 인스턴스 유형으로 제공
- 읽기 전용 복제본
- 온라인 트랜잭션 처리(OLTP)와 보고 및 분석 모두에 대해 Amazon RDS를 사용
Dynamo DB
- 비관계형 데이터베이스(NoSQL)
- 워크로드 수요에 맞춰 자동으로 처리 능력을 확장하며 테이블 크기가 증가함에 따라 데이터를 파티셔닝 및 재파티셔닝
- AWS 리전의 세 개 시설에 데이터를 동기적으로 복제
Elastic Beanstalk
- 애플리케이션을 업로드하기만 하면 Elastic Beanstalk가 자동으로 용량 프로비저닝, 부하 분산, Auto-Scaling, 애플리케이션 상태 모니터링 등의 배포 세부 정보를 처리
- 기존 컨테이너, PaaS와 차이점 : PaaS는 프로그래밍 부담을 줄여주지만 개발자가 유연성과 제어력을 발휘할 수 없음. 공급업체가 사전 정의한 설정을 그대로 따라야하고 인프라에 대한 제어권이 없음
- 용량 프로비저닝, 로드 밸런싱, Auto Scaling, 애플리케이션 배포 등의 세부 정보를 자동으로 처리하여 사용자의 애플리케이션 버전을 실행할 수 있는 환경을 만듦
- 배포 가능한 코드를 업로드하기만 하면 나머지는 AWS Elastic Beanstalk에서 처리
AWS Glue
-1. Glue
- 완전 관리형 ETL(추출, 변환, 로드) 서비스
- 분석을 위해 데이터를 준비하는 시간 소모적인 단계를 자동화
- 데이터 스토어 간에 원하는 데이터를 분류, 정리, 보강, 이동
- 서버리스
- 구성
- AWS Glue 데이터 카탈로그(중앙 메타데이터 리포지토리) : 데이터를 자동으로 검색 및 프로파일링
- ETL 엔진(자동적으로 Python, Scala코드 생성) : 소스 데이터를 대상 스키마로 변환
- 스케줄러(종속적 해결방안, 작업 모니터링, 재시도 관리)
- 언제 사용?
- 데이터의 속성을 검색하고, 데이터를 변환하여 분석용으로 준비하는 데 사용
-2. Glue 데이터 카탈로그
- 모든 데이터 자산의 정형 및 운영 메타데이터를 저장하는 중앙 리포지토리
- 데이터 세트에 대한 테이블 정의와 물리적 위치 저장, 비즈니스 속성 추가, 변경 추적
- Apache Hive Metastore와 호환
-2-1. AWS Glue 크롤러
- 크롤러는 데이터 스토어에 연결하고, 우선순위가 지정된 분류자 목록을 거치면서 데이터 스키마 및 기타 통계를 추출한 후, 메타데이터로 Glue 데이터 카탈로그를 채움
- 주시적으로 실행되어 새로운 데이터의 가용성과 기존 데이터에 대한 변경 사항 감지
- 새로운 테이블, 기존 테이블에 새로운 파티션, 새로운 테이블 정의 버전을 자동으로 추가
-2-2. Glue 와 AWS Data Pipeline
- Glue
- 서버리스 Apache Spark 환경에서 실행되는 관리형 ETL 서비스 제공
- ETL 작업에 집중 / 컴퓨팅 리소스 구성, 관리 X
- 데이터 우선 접근 방식으로, 사용자는 데이터 속성과 데이터 조작에 집중
- 통합된 데이터 카탈로그를 제공하여 메타데이터를 ETL뿐만 아닌 다른 서비스를 통해 쿼리 하는 데 사용
- Spark 환경이므로 데이터 변환 작업을 위한 스케일 아웃 실행 환경 제공
- Data Pipeline
- 실행 환경, 코드를 실행하는 컴퓨팅 리소스에 대한 액세스 및 제어, 데이터 처리를 수행하는 코드 자체와 관련하여 유연성을 지원하는 관리형 오케스트레이션 서비스
- 사용자 계정에서 컴퓨팅 리소스를 시작
- Spark 이외의 엔진을 사용하거나 이기종 작업 세트를 원할 경우 사용