(응용) AWS - Serverless
AWS에 대해 알아봅니다.
1. Serverless
서버가 없는게 아니라 서버를 우리가 관리할 필요 없이 알아서 우리들의 어플리케이션 코드를 클라우드에서 돌릴 수 있게 해줌 (Resource Management, Auto Scaling UP/Down 등 해줌)
AWS는 Infrastructure Management를 알아서 해줌, 우리가 할 일은 코드를 짜고 구현만 하면됨
1.1. AWS는 우리를 위해서 무엇을?
-
Capacity Provisioning
-
예) DynamoDB/EC2의 경우 얼마나 많은 읽기/쓰기가 발생하는지 서버과부하가 생기는지 감시하고 그에 따라 대응
-
-
Auto-Scaling
-
사람의 개입없이 서버를 키웠다 줄였다 조절
-
-
Patching
-
EC2 인스턴스에서 OS를 돌리거나 RDS에서 DB를 구축할 때 알아서 업데이트 및 패치를 시켜줌
-
1.2. Serverless 이점
-
빠른 배포(Faster Deployment)
-
대단한 확장성(Scalable)
-
비용 절감(Lower Cost)
-
항상 돌아가는게 아니라 Event에 근거하여 돌아가기 떄문에 비용이 저렴함 (Lambda와 같음)
-
1.3. Serverless AWS 서비스
-
Lambda
-
서버를 구축할 필요없이 단순히 코드작성
-
-
SQS(Simple Queue Service)
-
메세지를 큐에 담고 들어온 순서에 따라 메세지를 처리
-
-
SNS(Simple Notification Service)
-
메세지 서비스로 특정 이벤트 발생이 텍스트나 이메일을 보내주는 서비스
-
-
API Gateway
-
Serverless 이며 확장성이 뛰어난 API를 만들고 퍼블리쉬를 관리하는 서비스
-
-
DynamoDB
-
테이블을 만들고 설정만 해준다면 알아서 테이블을 업데이트 해줌
-
RCU와 WCU를 Auto Scaling 해줄 뿐만 아니라 TTL을 통하여 테이블 클리너 제공
-
-
S3
-
웹사이트 호스팅 및 오브젝트를 보관하는 스토리지
-
2. Step Function
-
Serverless 어플리케이션을 구축함에 있어 시각적 인터페이스 제공
-
일련의 Step으로 Serverless 어플리케이션을 관리할 수 있음
-
Step은 Business Logic에 의해 순서대로 실행되어짐
-
Step의 output은 또다른 Step의 input이 될 수 있음
2.1. Workflow
2.1.1. Sequential Workflow (State Machine)
-
START → Strip Strings → Remove WhiteSpace → Word Counts → END
2.1.2. Parallel Workflow
-
START → Process Photo → [Extract Metadata - Adjust Image Size - Update Color Channel - Crop Image] → Store in DB → END
3. Lambda - Version Control
-
Lambda Function을 처음 만들면 Version은 $LATEST 가 됨
-
변경된 Lambda Function을 업로드하면 그 Version이 $LATEST 가 됨
-
Version은 우리가 Alias 를 부여할 수 있음
-
다른 Lambda Version을 가질 수 있음
-
다른 Lambda Version은 다른 ARN 이 존재함
-
-
Alias 는 다른 Version으로 변환 시 사용되어짐
4. Lambda - VPC Access
-
Lambda 함수를 만들고 Private PC 혹은 Private Subnet 안에 있는 Resource 를 접근해야하는 일이 있었을 텐데 당연하지만 밖에서는 접근되어선 안됨
-
Lambda → Private VPC[Private Subnet(EC2, RDS)]
-
Lambda 함수가 Private VPC에 접근해야하는 상황
-
예) Lambda 함수가 Serverless Website 에서 RDS DB 읽기&쓰기
-
예) Lambda 함수가 보안적인 부분에 문제가 생긴 EC2 인스턴스 종료해야하는 상황
-
4.1. VPC 안에 Lambda가 접근하려면?
-
Lambda 함수가 Private Subnet 에 접근할 수 있게 허용해줘야함
-
Lambda 함수는 아래와 같은 VPC Configuration 이 요구됨
-
Private Subnet ID
-
Security Group ID
-
-
Lambda 함수는 Private Subnet 으로부터 사용 가능한 IP 주소를 부여해주는 ENI(Elastic Network Interface) 를 셋업함
Twitter
Google+
Facebook
Reddit
LinkedIn
StumbleUpon
Email