IT STUDY LOG
[SECTION3] <마이크로서비스> DAY 4 LOG 본문
# PROJECT LOG
IaC 코드 작성
serverless framework를 이용해 lambda 함수 생성 시 생성되는 리소스
Terraform을 이용해 IaC 코드 작성
1. terraform 인프라 환경 구성
(1) versions.tf
(2) provider.tf
(3) variables.tf
- db 정보의 경우 export TF_VAR_<변수명>=<값>을 터미널에서 선언해주어야 함
(4) output.tf
2. 보안 역할 및 정책 생성
(1) iam.tf
(2) aws에 생성된 리소스 확인
3. cloudwatch에 생성할 lambda 함수들의 log group 생성
(1) cloudwatch.tf
(2) aws에 생성된 리소스 확인
4. lambda 함수 생성
(1) lambda.tf
- lambda 함수의 경우 로컬이나 s3를 이용해 디렉토리, 앱에서 소스 코드를 가져올 수 있음
- 해당 경로의 소스 파일(핸들러 등 사용하는 .js 파일들)과 package.json 파일, package-lock.json 파일, node_modules 디렉터리를 zip파일로 만들어 람다 함수 배포
(2) aws에 생성된 리소스 확인
5. lambda 함수의 endpoint 호출을 위해 api gateway 생성
(1) api-gw.tf
(2) aws에 생성된 리소스 확인
6. sns 생성
(1) sns.tf
(2) aws에 생성된 리소스 확인
7. sqs 생성
(1) sqs.tf
(2) aws에 생성된 리소스 확인
Terraform으로 구성된 인프라가 정상적으로 동작하는지 확인
# api gateway로 생성된 sales-lambda의 endpoint로 요청
$ curl -X POST https://xxxxxxxxxx.execute-api.ap-northeast-2.amazonaws.com/checkout
1. sales-lambda cloudwatch 로그 확인
2. stock-lambda cloudwatch 로그 확인
3. stock-increase-lambda cloudwatch 로그 확인
4. 재고 없는 상황에서 요청 > 구매 실패 > 일정시간 경과 재고 증가 > 구매 완료 과정 확인
# REFERENCES
https://registry.terraform.io/providers/hashicorp/archive/latest/docs/data-sources/file
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_subscription
https://serverlessland.com/patterns/terraform-lambda-layer
https://github.com/terraform-aws-modules/terraform-aws-lambda/blob/master/examples/complete/main.tf
https://serverlessland.com/patterns/apigw-http-lambda-terraform
https://github.com/aws-samples/serverless-patterns/tree/main/apigw-http-api-lambda-terraform
https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/api-gateway-basic-concept.html
https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/images/Product-Page-Diagram_Amazon-API-Gateway-How-Works.png
https://github.com/hashicorp/terraform-provider-aws/tree/main/internal/service/apigatewayv2
https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on
https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sns-topic-attributes.html
https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/gettingstarted-limits.html
https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/with-sqs.htmlhttps://github.com/hashicorp/terraform-provider-aws/tree/main/internal/service/apigatewayv2
'devops bootcamp 4 > project log' 카테고리의 다른 글
[SECTION 5] <Final Project> 요구사항 및 시나리오 (0) | 2023.06.12 |
---|---|
[SECTION 5] <Final Project> 프로젝트 개요 (0) | 2023.06.12 |
[SECTION3] <마이크로서비스> 회고 및 야크쉐이빙 (0) | 2023.05.30 |
[SECTION3] <마이크로서비스> DAY 3 LOG (0) | 2023.05.26 |
[SECTION3] <마이크로서비스> DAY 2 LOG (0) | 2023.05.25 |