AWS Lambda์ API Gateway๋ฅผ ์ด์ฉํ ์๋ฒ๋ฆฌ์ค ๊ตฌ์ฑ
Lambda
-
์๋ฒ ์์ด ์ฝ๋๋ฅผ ์คํํด์ฃผ๋ ์๋น์ค
-
์ฌ์ฉํ ์๊ฐ๋งํผ ์๊ธ ์ง๋ถ
Lambda์ ํน์ง
-
๋ค์ํ ์ธ์ด ์ง์
-
ms ๋จ์๋ก ์๊ธ ๋ถ๊ณผ
์ฃผ์ ์ฌํญ
-
CPU๋ฅผ ์ฅ๊ธฐ๊ฐ ์ฌ์ฉํ๋ ์์ฉ์๋ ์ ํฉํ์ง ์์
-
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ ๋ณ๋์ DB ํ์ (Dynamo, RDS, โฆ)
Lambda Function์ ์คํํ๋ ์ฃผ์ฒด
-
Event source (Push) : S3, API GW, Cloud Watch Events
-
Lambda Invocation (Pull) : DynamoDB, Kinesis, โฆ
-
Direct Execution
๋๋ค ์ฌ์ฉ์
-
S3 ๋ฒํท์ ์ฌ๋ผ์จ ์ด๋ฏธ์ง์ ์ธ๋ค์ผ ์๋ ์์ฑ
-
API GW๋ฅผ ํตํ REST API ์ ๊ณต
-
ํด๋ผ์ฐ๋ ์์น ์ด๋ฒคํธ๋ฅผ ํตํด ์ฃผ๊ธฐ์ ์ผ๋ก ์ธ์คํด์ค ๋ฑ์ ๋ฆฌ์์ค ์ ๋ฆฌ
Lambda์์ ํ์ํ ๋ฆฌ์์ค์ ๊ถํ
-
IAM Role์ ์ด์ฉํด์ ๋ถ์ฌ
-
Execution Permission: ๋๋ค๊ฐ ์ฌ์ฉํ ์ ์๋ ๋ฆฌ์์ค์ ๋ํ ๊ถํ
-
Invocation Permission: ํด๋น ๋ฆฌ์์ค๊ฐ ๋๋ค๋ฅผ ์คํํ ์ ์๋ ๊ถํ
๋ฐฐํฌ์ ๋ฒ์ ๊ด๋ฆฌ
-
์ฝ์, IDE, CLI๋ฅผ ํตํด ๋ฐฐํฌ ๊ฐ๋ฅ
-
ALIAS๋ฅผ ์ด์ฉํ ๋ฒ์ ๊ด๋ฆฌ ๊ฐ๋ฅ
-
https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/aliases-intro.html
Lambda blue print ์ฌ์ฉํด ๋ณด๊ธฐ
- ์ฝ๊ฒ ๋๋ค ์ฒดํ ๊ฐ๋ฅ
case study
API Gateway + Lambda
- ๋๋ค์์ ์กฐํฉ์ผ๋ก ๊ฐ๋จํ REST ์๋ฒ ๊ตฌ์ถ ๊ฐ๋ฅ
๊ธฐํ ํน์ง
-
Layer ๊ธฐ๋ฅ์ ํตํด์ ์ถ๊ฐ ์ฝํ ์ธ ์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์์
-
์ฌ์ฉ์ ์ ์ AMI ์ง์์ ํตํด ํ์ํ๋ค๋ฉด ๋ค์ํ ์ธ์ด ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ์ ์์ (ex: Swift Lambda, Rust Lambda, โฆ)
-
Application ๊ธฐ๋ฅ์ ํตํด ์๋ฒ๋ฆฌ์ค ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์์
๋๋ค๋ฅผ ์ด์ฉํ ์คํ๋ง ๋ถํธ ๋ฐฐํฌ
-
https://github.com/awslabs/aws-serverless-java-container/wiki/Quick-start---Spring-Boot
-
https://epsagon.com/blog/aws-lambda-and-java-spring-boot-getting-started/