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

Hey Tech

ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (3) AWS Lambda ์ƒ์„ฑ ๋ณธ๋ฌธ

SW ๊ฐœ๋ฐœ/Amazon Web Service

ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (3) AWS Lambda ์ƒ์„ฑ

Tony Park (ํ† ๋‹ˆ) 2022. 6. 10. 00:28
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ์‹œ๋ฆฌ์ฆˆ ํฌ์ŠคํŒ…

1.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (1) React ๊ธฐ๋ฐ˜ Frontend ๊ฐœ๋ฐœ
2.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (2) AWS IAM ์—ญํ•  ์ƒ์„ฑ
3.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (3) AWS Lambda ์ƒ์„ฑ
4.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (4) AWS S3 ์ƒ์„ฑ
5.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (5) AWS API Gateway ์ƒ์„ฑ
6.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (6) AWS Lambda ํ•จ์ˆ˜ ์ž‘์„ฑ
7.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (7) Axios ๊ธฐ๋ฐ˜ API Call
8.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (8) ํŒŒ์ผ ์—…๋กœ๋“œ ํ…Œ์ŠคํŠธ
9.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (9) AWS S3 ๊ธฐ๋ฐ˜ ์›น ํ˜ธ์ŠคํŒ…

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

์ด์ „ 2๊ฐœ์˜ ํฌ์ŠคํŒ…์—์„œ๋Š” React ๊ธฐ๋ฐ˜์˜ ํŒŒ์ผ ์—…๋กœ๋“œ์šฉ ์›น ํŽ˜์ด์ง€ Frontend ๊ตฌ์ถ•๊ณผ AWS IAM ์—ญํ• ์„ ์ƒ์„ฑํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์†Œ๊ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ์„œ๋ฒ„ ์—ญํ• (Backend)์„ ์œ„ํ•œ AWS Lambda ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“š ๋ชฉ์ฐจ

1.  AWS ๊ธฐ๋ณธ ์„ธํŒ…
2.  Lambda ๊ฐœ๋…
3.  Lambda ์ƒ์„ฑ
4.  Lambda ์„ธํŒ…

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

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

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

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

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

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

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

2.  Lambda ๊ฐœ๋…

Amazon Web Service(AWS) Lambda๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฝ”๋“œ(=ํ•จ์ˆ˜)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ปดํ“จํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Serverless ์ปดํ“จํŒ… ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค(๊ทธ๋ฆผ 3 ์ฐธ๊ณ ). ์—ฌ๊ธฐ์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋ฅผ ๋‹ค๋ฅธ ๋ง๋กœ "trigger ๋˜์—ˆ์„ ๋•Œ" ๋˜๋Š” "ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ"๋ผ๊ณ ๋„ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, 24์‹œ๊ฐ„ ์„œ๋ฒ„๊ฐ€ ๋Œ์•„๊ฐ€๋Š” AWS EC2์™€ ๋‹ฌ๋ฆฌ, AWS Lambda๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ๋งŒ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 3. AWS Lambda ์•„์ด์ฝ˜

Serverlss == No Server?

Serveless ์ปดํ“จํŒ…์ด๋ฉด ์„œ๋ฒ„๊ฐ€ ์—†๋‹ค๋Š” ์˜๋ฏธ์ผ๊นŒ์š”? ์ ˆ๋Œ€ ์•„๋‹™๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์—†์œผ๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์—†์ฃ . Serverless๋Š” Backend๋ฅผ ์„œ๋ฒ„ ๊ด€๋ฆฌ ์—†์ด ์šด์˜ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, Serverless ์ปดํ“จํŒ…์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ์„œ๋ฒ„๋ฅผ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์ฃ . ์„œ๋ฒ„์— ํŠธ๋ž˜ํ”ฝ์ด ์–ผ๋งˆ๋‚˜ ์žกํžˆ๋Š”์ง€ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„์˜ ๊ฐœ์ˆ˜๋‚˜ ์‚ฌ์–‘ ๋“ฑ์„ ์ผ์ผ์ด ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์—๋งŒ ์ง‘์ค‘ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฝ”๋”ฉ๋งŒ ์ž˜ํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

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

https://heytech.tistory.com/397?category=559266 

 

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

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

heytech.tistory.com

3.  Lambda ์ƒ์„ฑ

1) Lambda ์ฝ˜์†” ์ ‘๊ทผ

AWS ํ™ˆํŽ˜์ด์ง€ ๊ฒ€์ƒ‰์ฐฝ์—์„œ Lambda๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ Lambda ์ฝ˜์†”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 4).

๊ทธ๋ฆผ 4. Lambda ์ฝ˜์†” ์ ‘๊ทผ

2) Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ

"ํ•จ์ˆ˜ ์ƒ์„ฑ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 5).

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

3) Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ ์˜ต์…˜

์•„๋ž˜์˜ ๊ทธ๋ฆผ 6์ฒ˜๋Ÿผ ์•„๋ž˜์˜ ์˜ต์…˜์„ ์„ ํƒํ•˜์‹  ํ›„ ๋งจ ํ•˜๋‹จ์— "ํ•จ์ˆ˜ ์ƒ์„ฑ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 6. ๋žŒ๋‹ค ํ•จ์ˆ˜ ์ƒ์„ฑ ์˜ต์…˜

4.  Lambda ์„ธํŒ…

Lambda ํ•จ์ˆ˜๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋‹ค๋ฉด ์ด์ œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์™€ ์ œํ•œ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

1) "๊ตฌ์„ฑ" ํด๋ฆญ

์•„๋ž˜์˜ ๊ทธ๋ฆผ 7์ฒ˜๋Ÿผ "๊ตฌ์„ฑ"์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 7.  ๋žŒ๋‹ค ๊ตฌ์„ฑ ํŽธ์ง‘์ฐฝ ์ ‘๊ทผ

2) "ํŽธ์ง‘" ํด๋ฆญ

์•„๋ž˜์˜ ๊ทธ๋ฆผ 8์ฒ˜๋Ÿผ, "ํŽธ์ง‘"์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 8. ํŽธ์ง‘ ํด๋ฆญ

3) ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ๋ฐ ์ œํ•œ ์‹œ๊ฐ„ ๋ณ€๊ฒฝ

ํŒŒ์ผ ์ž…๋ ฅ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์™€ ์ œํ•œ ์‹œ๊ฐ„์„ ๋Š˜๋ ค์ค๋‹ˆ๋‹ค. ์ €์˜ ๊ฒฝ์šฐ, ๋ฉ”๋ชจ๋ฆฌ๋Š” 512MB, ์ œํ•œ์‹œ๊ฐ„์€ 1๋ถ„์œผ๋กœ ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆผ 9).

๊ทธ๋ฆผ 9. ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์ œํ•œ์‹œ๊ฐ„ ๋ณ€๊ฒฝ

์ด์ œ ๊ธฐ๋ณธ์ ์ธ ๋žŒ๋‹ค ํ•จ์ˆ˜ ์ƒ์„ฑ ๋ฐ ์„ธํŒ…์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” AWS S3 ์ƒ์„ฑ ๋ฐ ์„ธํŒ… ์ ˆ์ฐจ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ์‹œ๋ฆฌ์ฆˆ ํฌ์ŠคํŒ…

1.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (1) React ๊ธฐ๋ฐ˜ Frontend ๊ฐœ๋ฐœ
2.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (2) AWS IAM ์—ญํ•  ์ƒ์„ฑ
3.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (3) AWS Lambda ์ƒ์„ฑ
4.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (4) AWS S3 ์ƒ์„ฑ
5.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (5) AWS API Gateway ์ƒ์„ฑ
6.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (6) AWS Lambda ํ•จ์ˆ˜ ์ž‘์„ฑ
7.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (7) Axios ๊ธฐ๋ฐ˜ API Call
8.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (8) ํŒŒ์ผ ์—…๋กœ๋“œ ํ…Œ์ŠคํŠธ
9.  ํŒŒ์ผ ์—…๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์ถ•: (9) AWS S3 ๊ธฐ๋ฐ˜ ์›น ํ˜ธ์ŠคํŒ…

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

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

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

728x90
๋ฐ˜์‘ํ˜•