๊ด€๋ฆฌ ๋ฉ”๋‰ด

Hey Tech

AWS Lambda ์›น ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ: Lambda, API Gateway ์ƒ์„ฑ ๋ณธ๋ฌธ

SW ๊ฐœ๋ฐœ/Amazon Web Service

AWS Lambda ์›น ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ: Lambda, API Gateway ์ƒ์„ฑ

Tony Park (ํ† ๋‹ˆ) 2022. 6. 1. 19:49
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ‘จ‍๐Ÿ’ป ๋“ค์–ด๊ฐ€๋ฉฐ 

AWS Lambda์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…์€ ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

 

AWS Lambda ๊ฐœ๋…, ์žฅ๋‹จ์ , ์‚ฌ์šฉ๋ชฉ์ 

๐Ÿ“š ๋ชฉ์ฐจ 1. ๊ฐœ๋… 2. ์žฅ๋‹จ์  3. ์‚ฌ์šฉ๋ชฉ์  ์ฐธ๊ณ ์ž๋ฃŒ 1. ๊ฐœ๋… Amazon Web Service(AWS) Lambda๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฝ”๋“œ(=ํ•จ์ˆ˜)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ปดํ“จํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Serverless ์ปดํ“จํŒ… ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค(๊ทธ๋ฆผ 1

heytech.tistory.com

๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” AWS Lambda, AWS API Gateway๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ์›น ์„œ๋ฒ„๋ฅผ ๋„์–ด๋ณด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃน๋‹ˆ๋‹ค.

1.  AWS ๊ธฐ๋ณธ ์„ธํŒ…

1.1.  ์„œ๋น„์Šค ๊ฐ€์ž…

Lambda๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋จผ์ € AWS ํ™ˆํŽ˜์ด์ง€์— ๋ฐฉ๋ฌธํ•˜์…”์„œ ํšŒ์›๊ฐ€์ž…์„ ํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ 1๊ณผ ๊ฐ™์ด ์ตœ์ดˆ ๊ฐ€์ž…ํ•œ ์ด๋ฉ”์ผ ๊ณ„์ •์œผ๋กœ 1๋…„๊ฐ„ ๋ฌด๋ฃŒ ์ฒดํ—˜ํŒ(a.k.a., ํ”„๋ฆฌ ํ‹ฐ์–ด)์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ฌด๋ฃŒ์ธ ๋งŒํผ ์ €์‚ฌ์–‘ ์„œ๋น„์Šค ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํšŒ์›๊ฐ€์ž… ์‹œ ํ•ด์™ธ ๊ฒฐ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์‹ ์šฉ์นด๋“œ ๋“ฑ๋ก์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์‹ ์šฉ์นด๋“œ์ธ์ง€ 100์›์„ ๊ฒฐ์ œํ–ˆ๋‹ค๊ฐ€ ๊ณง๋ฐ”๋กœ ์Šน์ธ ์ทจ์†Œ๋˜๋‹ˆ ์œ ํšจํ•œ ์‹ ์šฉ์นด๋“œ๋ฅผ ์ค€๋น„ํ•ด ์ฃผ์„ธ์š”.

๊ทธ๋ฆผ 1. AWS ํ™ˆํŽ˜์ด์ง€

1.2.  ์„œ๋น„์Šค ์ง€์—ญ ๋ณ€๊ฒฝ

ํšŒ์›๊ฐ€์ž…๊นŒ์ง€ ์™„๋ฃŒํ•˜์…จ๋‹ค๋ฉด ํ˜„์žฌ PC๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์ง€์—ญ๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฑฐ๋ฆฌ์— ์žˆ๋Š” ์„œ๋น„์Šค ์ง€์—ญ(Region)์„ ์„ ํƒํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถ”ํ›„์— ์„œ๋น„์Šค ์š”๊ธˆ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์ง€๋งŒ, ์„œ๋น„์Šค ์ง€์—ญ๋งˆ๋‹ค ๊ณผ๊ธˆ์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ 2์ฒ˜๋Ÿผ, AWS ํ™ˆํŽ˜์ด์ง€ ์šฐ์ธก ์ƒ๋‹จ์— ์ง€์—ญ ์ด๋ฆ„์„ ํด๋ฆญํ•˜๋ฉด ์„œ๋น„์Šค ์ง€์—ญ์„ ๋ณ€๊ฒฝํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ•œ๋ฏผ๊ตญ์— ๊ฑฐ์ฃผํ•˜๊ณ  ๊ณ„์‹œ๋‹ค๋ฉด Seoul์„ ์„ ํƒํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 2. ์„œ๋น„์Šค ์ง€์—ญ ๋ณ€๊ฒฝ

2.  Lambda ์ƒ์„ฑ

Lambda ์ƒ์„ฑ ์ ˆ์ฐจ๋ฅผ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

2.1. Lambda ์„œ๋น„์Šค ์ฐพ๊ธฐ

AWS ์›น ์‚ฌ์ดํŠธ์—์„œ Lambda๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ Lambda ์ฝ˜์†”์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 3).

๊ทธ๋ฆผ 3. Lambda ์„œ๋น„์Šค ์ฐพ๊ธฐ

2.2. Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ

์•„๋ž˜์˜ ๊ทธ๋ฆผ 4์™€ ๊ฐ™์ด ํ•จ์ˆ˜ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 4. ํ•จ์ˆ˜ ์ƒ์„ฑ

2.3. Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ ์˜ต์…˜

์•„๋ž˜์˜ ๊ทธ๋ฆผ 5์™€ ๊ฐ™์ด, "์ƒˆ๋กœ ์ž‘์„ฑ"์„ ์„ ํƒํ•ด ์ฃผ์‹œ๊ณ , ์•„๋ž˜์— ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ํŒŒ์ด์ฌ 3.8์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ž‘์„ฑ ํ›„ ํ•จ์ˆ˜ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 5. ํ•จ์ˆ˜ ์ƒ์„ฑ ์˜ต์…˜ ์„ ํƒ

2.4. ํŠธ๋ฆฌ๊ฑฐ ์ถ”๊ฐ€

์•„๋ž˜ ๊ทธ๋ฆผ 6๊ณผ ๊ฐ™์ด ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๋ฉด, "ํŠธ๋ฆฌ๊ฑฐ ์ถ”๊ฐ€" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ์ฃผ์„ธ์š”.

๊ทธ๋ฆผ 6. Lambda ํŠธ๋ฆฌ๊ฑฐ ์ถ”๊ฐ€

3.  API Gateway ์ƒ์„ฑ

์ด์ œ API ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

3.1.  API ๊ฒŒ์ดํŠธ์›จ์ด ์„ ํƒ

"ํŠธ๋ฆฌ๊ฑฐ ์„ ํƒ์„" ๋ˆŒ๋Ÿฌ API ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 7).

๊ทธ๋ฆผ 7. API ๊ฒŒ์ดํŠธ์›จ์ด ์„ ํƒ

3.2.  API ๊ฒŒ์ดํŠธ์›จ์ด ์ƒ์„ฑ ์˜ต์…˜

์•„๋ž˜์˜ ๊ทธ๋ฆผ 8์ฒ˜๋Ÿผ, ๋งํฌ๋ฅผ ํƒ€๊ณ  ์›น ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ์ˆ˜์ค€์œผ๋กœ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— HTTP API๋ฅผ ์„ ํƒํ•ด ์ค๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ์›น ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•   ์ˆ˜ ์žˆ๋„๋ก ๋ณด์•ˆ์€ "์—ด๊ธฐ(Open)"์œผ๋กœ ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค. API ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด ์ฃผ์‹œ๊ณ , ์šฐ์ธก ํ•˜๋‹จ์— [์ถ”๊ฐ€] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ์ฃผ์„ธ์š”.

๊ทธ๋ฆผ 8. API ๊ฒŒ์ดํŠธ์›จ์ด ์ƒ์„ฑ ์˜ต์…˜

3.3.  API ๊ฒŒ์ดํŠธ์›จ์ด ์ƒ์„ฑ ํ™•์ธ

์ด์ œ Lambda ์ฝ˜์†”๋กœ ๋Œ์•„์˜ค๋ฉด ๊ทธ๋ฆผ 9์™€ ๊ฐ™์ด API ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋กœ์จ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ API ์—”๋“œํฌ์ธํŠธ๊ฐ€ Lambda์˜ ์ฃผ์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 9. API ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋กœ ์ถ”๊ฐ€๋œ ๋ชจ์Šต

4.  ์›น ๋™์ž‘ ํ…Œ์ŠคํŠธ

์ด์ œ ์›น์ด ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ €, ๋žŒ๋‹ค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋ฐฐํฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. body์— ํ…์ŠคํŠธ๋ฅผ ๋ฐ”๊พผ ํ›„ ์ƒ๋‹จ์— Deploy ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ์ฃผ์„ธ์š”.

๊ทธ๋ฆผ 10. Lambda ์ฝ”๋“œ ์ˆ˜์ •

์•ž์„œ ํŠธ๋ฆฌ๊ฑฐ๋กœ ์ถ”๊ฐ€ํ–ˆ๋˜ API์˜ ์—”๋“œํฌ์ธํŠธ ์ฃผ์†Œ๋กœ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ ‘์†ํ•˜๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ 11๊ณผ ๊ฐ™์ด Lambda ์ฝ”๋“œ์—์„œ ์ˆ˜์ •ํ•œ ํ…์ŠคํŠธ๊ฐ€ ์ž˜ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์—”๋“œํฌ์ธํŠธ ์ฃผ์†Œ๋Š” API ์ƒ์„ฑ ๋‹น์‹œ ๋ณด์•ˆ์„ "์—ด๊ธฐ(open)"์œผ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ธ์ œ, ์–ด๋””์„œ๋“ , ๋ˆ„๊ตฌ๋‚˜ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 11. ์›น ์„œ๋ฒ„ ํ…Œ์ŠคํŠธ

์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ฒŒ AWS Lambda์™€ API Gateway๋กœ ์›น ์„œ๋ฒ„๋ฅผ ๋„์šฐ๋Š” ๋ฐ ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค.


ํฌ์ŠคํŒ… ๋‚ด์šฉ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ๋ณด์™„ํ•  ์ ์ด ์žˆ๋‹ค๋ฉด ์•„๋ž˜์— ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!

๊ทธ๋Ÿผ ์˜ค๋Š˜๋„ ๋ฉ‹์ง„ ํ•˜๋ฃจ ๋งŒ๋“œ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค :)

๊ณ ๋ง™์Šต๋‹ˆ๋‹ค๐Ÿ˜Š

728x90
๋ฐ˜์‘ํ˜•