반응형
AWS Lambda
Serverless
- 서버리스는 서버가 없는 것이 아니라 서버가 보이지 않게 하거나 서버를 프로비저닝 하지 않는 것을 의미
- 서버리스 서비스를 사용하는 개발자는 서버 관리할 필요가 없음
- Lambda, DynamoDB, Cognito, API Gateway, S3, SNS, SQS, KDF, Aurora, Fargate 등이 서버리스 서비스
AWS Lambda
- 서버를 구축 및 프로비저닝 하는 과정을 거치지 않고 코드를 실행하는 서비스
- Lambda의 핵심 구성 요소는 Lambda 함수와 이벤트 소스로 구성
- 최대 15분의 실행 제한 시간이 있고 15분을 초과하는 작업에 대해서는 비적합
- 더 많은 Lambda 함수를 동시에 필요로 하는 경우 AWS 가 자동으로 프로비저닝 해서 스케일링을 진행
- Lambda는 AWS의 CloudWatch와 같은 다양한 서비스와 여러 프로그래밍 언어와 통합이 쉬움
- 메모리 할당량은 128MB ~ 10GB, 메모리는 1MB씩 증가
- 메모리가 증가되면 CPU와 네트워크 품질 등 성능이 향상
- Lambda 컨테이너 이미지는 컨테이너 이미지 자체에 Lambda Runtime API를 구현해야 실행 가능
- 컨테이너에 Lambda Runtime API 가 구현되어 있지 않으면 ECS 나 Fargate에서 컨테이너 실행
AWS Lambda 네트워킹 기초
- 기본적으로 Lambda 함수를 시작하면 VPC 외부에서 시작되어서 VPC 내의 리소스로 액세스 할 권한이 없음
- DynamoDB와 같은 퍼블릭 리소스에 액세스는 가능하지만 프라이빗 RDS 에는 액세스 불가능
- Lambda 함수 생성 시 VPC 활성화와 ENI 생성을 통해 VPC 내에 생성하고 프라이빗 RDS로 액세스 가능
- Lambda 함수가 RDS에 직접 액세스 하게 되면 함수가 너무 많이 생성되었다 사라지길 반복하게 되어 로드 상승
- RDS 프록시를 이용하여 연결을 한 곳으로 모으고 RDS와 연결하여 인스턴스 연걸의 수를 줄임
- RDS 프록시 장점
- 데이터베이스 연결의 풀링과 공유를 통해 확장성 향상
- 장애 발생 시 장애 조치 시간을 66% 까지 줄여 가용성을 향상시키고 연결을 보존
- RDS 프록시 수준에서 IAM 인증을 강제하여 보안을 높이고 자격 증명은 Secrets Manager에 저장
Amazon DynamoDB
Amazon DynamoDB
- 완전 관리형 데이터베이스
- 데이터가 다중 AZ 간에 복제되어 가용성이 높음
- NoSQL 데이터베이스이며 RDS 나 Aurora 같은 관계형 데이터베이스는 아니지만 Transaction 지원 기능이 있음
- 데이터베이스가 내부에서 분산되기 때문에 방대한 워크로드로의 확장이 가능
- 초당 수백만 개의 요청을 처리하고 수조 개의 행, 수백 TB의 스토리지를 가지고 처리 속도가 빠르며 일관성이 높음
- 보안, 권한 부여, 관리 기능 등 보안과 관련된 모든 기능은 IAM과 통합
- 비용이 적게 들고 오토 스케일링 기능이 탑재
- 액세스가 빈번한 데이터는 Standard Class에, 빈번하지 않은 데이터는 IA Table Class에 저장
- DynamoDB는 테이블로 구성되며 데이터베이스가 이미 존재하는 서비스로 따로 생성할 필요 없음
- 테이블을 생성하면 각 테이블에 기본 키가 부여되는데 기본 키는 생성 시 결정
- DynamoDB 항목의 최대 크기는 400KB로 큰 객체 저장에는 적합하지 않음
- 스키마를 빠르게 전개해야 할 때 유용
- Attributes(속성)은 null로 설정하거나 추후에 추가 가능
- DynamoDB 읽기 / 쓰기 용량 설정 모드
- 프로비저닝 된 모드 (기본값)
- 초당 읽기 / 쓰기 요청 수를 예측해서 미리 지정
- 미리 용량을 계획하고 읽기 용량 단위(RCU)와 쓰기 용량 단위(WCU)만큼의 비용을 지불하는 방식
- 오토 스케일링 기능으로 테이블 로드에 따라 RCU와 WCU를 늘리거나 줄일 수 있음
- 비용 절감을 원할 때 사용
- 온디맨드 모드
- 읽기 / 쓰기 용량이 워크로드에 따라 자동으로 확장
- 미리 용량을 계획하지 않으므로 RCU, WCU 개념이 없고, 사용한 만큼의 비용 지불
- 워크로드를 예측할 수 없거나 급격히 증가하는 경우에 유용
- 프로비저닝 된 모드 (기본값)
Amazon DynamoDB - 고급 기능
- DynamoDB Accelerator (DAX)
- DynamoDB를 위한 고가용성의 완전 관리형 무결절 인메모리 캐시
- DynamoDB 테이블에 읽기 작업이 많을 때 DAX 클러스터를 생성하고 데이터를 캐싱하여 읽기 혼잡을 해결
- DAX는 캐시 데이터에 마이크로초 수준의 지연 시간을 제공
- DAX 클러스터는 기존 DynamoDB API와 호환
- 캐시의 기본 TTL은 5분으로 설정
- DAX는 개별 객체 캐시, 쿼리와 스캔 캐시를 처리하는데 유용
- 집계 결과 저장에는 ElastiCache가 좋고, 대용량의 연산을 저장할 때는 DynamoDB가 좋음
- DynamoDB - 스트림 처리
- 테이블의 생성, 업데이트, 삭제를 포함한 모든 수정 사항에 스트림 생성 가능
- 사용자 테이블에 새로운 사용자가 등록되었을 때 이메일을 보내는 등 변경 사항에 실시간 반응하는데 활용
- 실시간으로 사용 분석, 파생 테이블 삽입, 리전 간 복제 가능
- DynamoDB 테이블 변경 사항에 대해 Lambda 함수 실행 가능
- DynamoDB Streams
- 보존 기간 24시간, 소비자 수 제한
- Lambda 트리거와 함께 사용하거나 DynamoDB Stream Kinesis 어댑터 사용하여 데이터 처리
- Kinesis Data Streams
- 보존 기간 1년, 소비자 수를 많이 가질 수 있음
- AWS Lambda, Kinesis Data Analytics, KDF, AWS Glue Stream ETL 등 데이터 처리 방법이 다양
- DynamoDB - Global Tables
- 복수의 리전에서 짧은 지연 시간으로 액세스 할 수 있게 해주는 기능
- 다중 활성 복제 가능
- 애플리케이션이 모든 리전에서 테이블을 읽고 쓸 수 있음
- Global Tables 활성화를 위해서는 DynamoDB 스트림을 활성화해야 리전 간 테이블 복제 가능
- DynamoDB - Time To Live (TTL)
- 타임스탬프 만료 후에 자동으로 아이템을 삭제할 수 있는 기능
- 웹 세션 핸들링이나 일정 기간 이후 데이터를 삭제해야 하는 규정을 따라야 할 때 사용
- DynamoDB - 재해 복구
- 지정 시간 복구(Point In Time Recovery, PITR)를 활성화를 통해 35일 동안 지속되는 백업 작업 가능
- 온디맨드 백업은 직접 삭제 할 때 까지 보존, AWS Backup 서비스를 통해 리전 간 백업 복사 가능
AWS API Gateway
AWS API Gateway
- API Gateway는 Lambda와 통합하면 완전한 서버리스 애플리케이션이 구축되므로 인프라 관리 필요 없음
- WebSocket 프로토콜을 지원
- API 버저닝을 핸들링하므로 v1, v2, v3이 생겨도 클라이언트 연결이 끊기지 않음
- 개발, 테스트, 운영 환경 관리
- 인증 및 권한 부여 등 수 많은 보안 기능을 API Gateway에 활성화 가능
- API Key 생성할 수 있고, API Gateway에 클라이언트 요청이 과도할 때 스로틀링 가능
- API Gateway가 사용자를 식별하는 방법으로는 IAM 역할, Amazon Cognito, 사용자 지정 권한 부여자로 확인
AWS API Gateway - Integration High Level
- Lambda 함수
- Lambda 함수 지연 호출
- Lambda 함수를 사용하는 REST API를 완전 서버리스 애플리케이션에 노출시키는 가장 일반적인 방법
- HTTP
- 백엔드의 HTTP 엔드포인트 노출
- 온프레미스에 HTTP API가 있거나 클라우드 환경에 ALB가 있을 때 API Gateway를 활용
- 속도 제한, 캐싱, 인증, API 키 등의 기능을 추가하기 위해 통합
- AWS Service
- API Gateway로 어떤 AWS API라도 노출 가능
- API Gateway에서 직접 SQS에 메세지를 게시하는 등에 활용
- 인증을 추가하거나 API를 퍼블릭으로 배포하거나 특정 AWS 서비스에 속도 제한을 추가하기 위해 통합
API Gateway - 배포 방법
- Edge Optimized - 글로벌 클라이언트용, 모든 요청이 CloudFront 엣지 로케이션을 통해 라우팅, 지연 시간 개선
- 리전 배포
- 모든 사용자는 API Gateway를 생성한 리전과 같은 리전에 있어야 함
- 자체 CloudFront 배포를 생성할 수 있고, 캐싱 전략과 CloudFront 설정에 더 많은 권한을 가질 수 있음
- 프라이빗 배포 - ENI 같은 VPC 엔드포인트를 사용하여 VPC 통해서 액세스 가능
AWS Step Function
AWS Step Function
- Serverless Workflow를 시각적으로 구성할 수 있는 기능, Lambda 함수를 오케스트레이션 하는 데 활용
- 시퀀싱, 병행 실행, 조건 설정, 타임아웃, 에러 처리 기능 등 제공
- Lambda 함수 뿐 아니라 EC2, ECS, 온프레미스 서버, API Gateway, SQS 등과 연동 가능
반응형
'자격증 > SAA-C03' 카테고리의 다른 글
[SAA-C03] 데이터 & 분석 (0) | 2023.09.12 |
---|---|
[SAA-C03] AWS 데이터베이스 (0) | 2023.09.11 |
[SAA-C03] AWS의 컨테이너 - ECS, ECR, EKS, App Runner (0) | 2023.09.07 |
[SAA-C03] AWS 디커플링 애플리케이션 - SQS, SNS, Kinesis, Active MQ (0) | 2023.09.06 |
[SAA-C03] AWS 스토리지 정리 (0) | 2023.09.05 |