서버리스는 서버가 없는건 아니라고 한다.
그저 서버를 관리할 필요가 없다는것!
그냥 코드 배치만 하면 된다고 한다.
프로비저닝 하지 않는것을 의미한다!
Amazon EC2 를 보면 서버가 클라우드 안에있고 제한된 RAM,CPU,,,,
그리고 지속적으로 실행이괴고 서버를 스캐일링 해줘야한다.
하지만 Amazon Lambda 는 가상의 함수로 관리할 서버가 없다
짧은 실행시간으로 제한시간이 있고 사용하지 않으면 실행이 되지 않는다.
일단 가격 측정하기가 쉽다. 그냥 Lambda 가 실행된 시간 만큼 청구가 된다고한다.
AWS 전체 서비스와 통합이 가능하고
AWS Cloudwatch 로 쉬운 관리도 된다.
Ram 을 올리면 CPu 성능도 향상이 된다.
먼저 S3 에 이미지가 삽입되면 이벤트가 발생하고 lambda 를 실행시키게 된다.그렇게 썸네일은 S3에 넣어지게 되고 Metadata 는 DynamoDB 에 들어가게 된다.
Lambda 때문에 기능이 자동화 S3에 새 이미지와 앱이 생성되는 이벤트에 대한 반응형 Archi 를 얻게된다.
CRON 은 EC2 Instance 에서 작업을 생성한다고 한다...
근데 가상서버에서 실행해야하는데 아무것도 안하고 있으면 시간 낭비라고 한다.
이럴때 CloudWatch Event 를 사용해서 1시간마다 lambda 를 실행시켜서 일을 시켜주면 된다고 한다.
Lambda 의 함수 성능 높이기 위한 lambda 의 기능이라고 한다. 최대 10배 높일수 있다고 한다.
이게 활성화 되어있으면 기존에 lambda 가 실행되고 초기화하지않고 바로 실행시키고 종료가 된다. 그래서 실행속도가 좋다고 한다.
웹사이트 보안 및 개인정보 보호
엣지에서 동적 웹 애플리케이션
검색 엔진 최적화 (SEO)
다양한 오리진과 데이터 센터 간 지능적인 라우팅
엣지에서의 봇 완화
실시간 이미지 변환
A/B 테스팅
사용자 인증 및 권한 부여
사용자 우선 순위 지정
사용자 추적 및 분석
Javascript 로 작성된 함수라고 한다.
그리고 Viewer 요청 및 응답 변경에 사용되고는 한다.
Viewer Request 랑 Viewer Response 가 있는데
Viewer Request 는 viewer 로 부터 요청을 받은 다음에 Viewer 요청을 수정할수 있고
Viewer Response 는 응답 보내기 전에 Viewer 응답 수정 가능한것이다.
CloudFront 는 고성능, 고확장성이 필요할때 뷰어 요청,응답에 사용된다고 한다.
NodeJS 와 Python 으로 작성된 Lambda 함수이다.
모든 CloudFront 요청 및 응답 변경에 사용된다고 한다.
여기서 ViewerRequest,Viewer Response 두개 다 있지만
Origin Request,Origin Response 라는 개념도 추가가 된다.
Origin Request 는 Origin 에 요청을 전송하기 전에 수정 가능한것이고
Origin Response 는 Origin 에서 응답 받은 후에 수정하는것이다.
CloudFront Function은 캐시 정규화,헤더수정,URL 재작성,,요청인증에 쓰인다
Lambda@Edge 는 더 긴 실행시간,다른 AWS service 에 엑세스, 하기 위한 AWS SDK ,,,외부 서비스에 대한 네트워크 엑세스를 통해 대규모 데이터 통합 수행,,,
Lambda 는 시작하면 VPC 외부에서 시작한다.
그래서 VPC 안에 있는 resource 에 접근을 하지 못한다.
그래서 VPC 안에서 Lambda 를 시작하면 된다.
Private subent 에 ENI 를 만들어서 접근을 가능하게 해준다.
만약 람다가 db에 직접적으로 접근을 하고 그것들이 많아저 버리면 DB 의 Load 는 당연하게 상승될것이다.그래서 Proxt 를 두어서 모든 연결을 Proxy 로 주어서 결국 연결은 하나인것처럼 속이는것이다.
RDS Proxy 역시 Public Access 가 가능하지 않기 때문에 Lambda 를 VPC 내에 접근가능ㅎ ㅏ게 해야한다.
완전 관리형 데이터베이스
다중 AZ간의 데이터 복제를 통해 고가용성 제공
NoSQL - 관계형 데이터베이스가 아님. 트랜잭션 지원
대규모 워크로드로 확장 가능한 분산 데이터베이스
성능이 빠르고 일관성을 유지함 (한 자릿수 밀리초의 성능)
보안, 인가 및 관리를 위해 IAM과 통합되어 있음
저렴한 비용. 오토 스케일링 기능 제공
유지 관리나 패치 작업이 필요 없으며 항상 사용 가능함
Standard 및 Infrequent Access (IA) 테이블 클래스 지원
또한 DynamoDB 는 DB를 만들필요없다 이미 DB가 존재하는 서비스이다.
Provisioned Mode,On-Demand Mode 가 있다
Provisioned Mode 는 미리 용량을 관리하는것이다.
또한 미리 계획해도 ASG 사용이 가능하고
비용절감 원할떄 적합하다
On-Demand Mode 는 워클드에 따라 자동으로 확장한다.
예측할수 없는 작업량이나 급격한 증가가 예상되는 경우에 적합하다.
고가용성의 완전 관리형 무결절 인메모리 캐시이다.
읽기 많을떄 DAX Cluster 생성하고 데이터 캐싱,읽기 혼잡 해결한다고 한다.
DAX 는 쿼리와 스킨 캐시를 처리하는데 유용하다고 한다.
대용량 연산을 저장할떄 유용하다.
집계결과 저장은 ElastiCache 가 좋다고 한다.
스트림 처리는 데이터의 변경 사항을 실시간으로 감지하고 처리하는 기술이다.
실시간으로 변경 사항에 대응하기 (사용자에게 환영 이메일 보내기)
실시간 사용 분석
파생 테이블 삽입
리전 간 복제 구현
DynamoDB 테이블 변경 시 AWS Lambda 호출
DynamoDB Stream
보존 기간: 24시간
소비자 수 제한
Lambda 트리거 또는 DynamoDB Stream adapter 사용 가능
Kinesis Data Stream
보존 기간: 1년
더 많은 소비자의 수
AWS Lambda, Kinesis Data Analytics, Kineis Data Firehose, AWS Glue Streaming ETL 등 사용 가능
여러 리전 간에 복제가 가능한 Table 이다.
양방향 복제를 한다고 한다.
만료 TimeStmap 가 지나면 자동으로 항목 삭제하는기능이다.
Session Data 저장이나 갱신되지 않은건 자동으로 삭제한다한다.
S3로 내보내기 (Export to S3) - PITR 기능 활성화해야 함
최근 35일 이내 어떤 시점으로든 테이블을 내보낼 수 있음
읽기 용량이나 성능에 영향을 주지 않음
데이터 분석 수행 가능
감사 목적으로 스냅샷 확보 가능
데이터를 다시 DynamoDB로 가져오기 전에 데이터 ETL 등 대규모 변경을 실행할 수 있음
DynamoDB JSON 또는 ION 형식으로 내보냄
S3에서 가져오기 (Import from S3)
S3에서 CSV, DynamoDB JSON 또는 ION 형식의 데이터를 가져와 DynamoDB에 새로운 테이블로 임포트
쓰기 용량을 소모하지 않음
임포트 중 발생하는 오류는 모두 CloudWatch Logs에 기록됨
Client 가 직접 Lambda 함수를 지연호출 할수 있게 할려면 클라이언트가 IAM Permission 있어야한다.
AWS Lambda + API Gateway: 완전 서버리스 애플리케이션이 구축되므로 인프라 관리 필요 없음
WebSocket 프로토콜 지원: 양방향 통신 가능
API 버전 관리 (v1, v2 ...)
환경 관리 (dev, test, prod ...)
보안 관리
API 키 생성, 요청 스트롤링
Swagger/OpenAPI와 같은 공통 표준을 사용하여 신속히 API를 정의하여 가져올 수 있고 Swagger/OpenAPI로 내보낼 수도 있음
요청 변환 및 유효성 검사
API 응답 캐시
Lambda Function,HTTP,AWS SErvice 와 연동이 된다.
이렇게 API Gateway 를 통해서 AWS service 를 외부에 노출 시킨다.
전세계 누구나 APi Gateway 로 access 가능하다.
모든 사용자는 API Gateway 를 생성한 리전과 같은 리전에 있어야한다.
VPC 엔드포인트(ENI) 를 사용해서 VPC 내에서만 엑세스 할수 있다.
User Authentication through
IAM Roles (내부 애플리케이션에서 유용)
Cognito (외부 사용자를 위한 신원 확인 - ex. 모바일 사용자)
사용자 지정 권한 부여 (자체 로직 실행)
Custom Domain Name HTTPS security through integration with AWS Certificate Manager (ACM)
Edge-Optimized 엔드포인트를 사용하는 경우 인증서는 us-east-1에 있어야 함
egional 엔드포인트를 사용하는 경우 인증서는 API Gateway 리전에 있어야 함
Route 53에서 CNAME 또는 A-alias 레코드를 설정하여 도메인 및 API Gateway를 가리키도록 해야함
Serverless WorkFlow 를 시작적으로 구성할 수 있는 기능이다.
승인을 해야만 진행되는 단계를 설정할 수 있다.
웹 및 모바일 앱과 상호작용 할수있는 자격증명을 부여한다.
Serverless database 를 생성한다.
간단한 로그인 가능하고
이메일 , 휴대폰 전화번호로 인증가능하고
다중요소인증이 된다.