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: ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ๋žŒ๋‹ค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ


๋ฐฐํฌ์™€ ๋ฒ„์ „๊ด€๋ฆฌ


Lambda blue print ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ


  • ์‰ฝ๊ฒŒ ๋žŒ๋‹ค ์ฒดํ—˜ ๊ฐ€๋Šฅ

case study


API Gateway + Lambda

  • ๋žŒ๋‹ค์™€์˜ ์กฐํ•ฉ์œผ๋กœ ๊ฐ„๋‹จํžˆ REST ์„œ๋ฒ„ ๊ตฌ์ถ• ๊ฐ€๋Šฅ

๊ธฐํƒ€ ํŠน์ง•

  • Layer ๊ธฐ๋Šฅ์„ ํ†ตํ•ด์„œ ์ถ”๊ฐ€ ์ฝ˜ํ…์ธ ์™€ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Œ

  • ์‚ฌ์šฉ์ž ์ •์˜ AMI ์ง€์›์„ ํ†ตํ•ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๋‹ค์–‘ํ•œ ์–ธ์–ด ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ (ex: Swift Lambda, Rust Lambda, โ€ฆ)

  • Application ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์„œ๋ฒ„๋ฆฌ์Šค ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ

๋žŒ๋‹ค๋ฅผ ์ด์šฉํ•œ ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฐฐํฌ


API Gateway ์ž์Šต์„œ ๋ณด๊ธฐ


ํ€ต๋žฉ ์‹ค์Šต


์ฐธ๊ณ ์ž๋ฃŒ