Serverless framework๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ์‰ฝ๊ฒŒ ์„œ๋ฒ„ ๋ฐฐํฌํ•˜๊ธฐ

๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ ์ง€๋‚œ Serverless์— ์ด์–ด์„œ Serverless๋ฅผ ์ข€ ๋” ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์จ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.


๋ฐฐํฌ์˜ ์–ด๋ ค์›€

์ง€๋‚œ Serverless ํฌ์ŠคํŠธ์—์„œ AWS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ FaaS๋ฅผ ์ง์ ‘ ๋ฐฐํฌํ•˜๊ณ  ์„œ๋น„์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋‘˜์งธ์น˜๊ณ  ํ•œ ๋ฒˆ ์ฝ”๋“œ๋ฅผ ์—…๋กœ๋“œํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ๋งŽ์€ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 


๊ฒŒ๋‹ค๊ฐ€ ์ฝ”๋“œ ํ•˜๋‚˜๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ”๋กœ ๋ฐฐํฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์ข‹์€ ๊ฒฝ์šฐ์ง€๋งŒ, ์ง์ ‘ AWS Console์—์„œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ๋งŒ ํ•˜๊ณ , ์‹ฌ์ง€์–ด ์ฝ”๋“œ์˜ ํฌ๊ธฐ๊ฐ€ ์ผ์ • ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ AWS Console์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์„ ์ดˆ๋ž˜ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.


๋ญ”๊ฐ€ ๋” ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?


์ €๋Š” ์‹ค์ œ๋กœ AWS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์€ ํ˜•ํƒœ์˜ ์นด์นด์˜คํ†ก ํ”Œ๋Ÿฌ์Šค์นœ๊ตฌ API ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. REST API ๊ฐœ๋ฐœ ์ดํ›„ ์ด๋ฅผ ์šด์˜ํ•ด๋ณด๊ณ ์ž ์ ์€ ๋น„์šฉ์œผ๋กœ ์šด์˜ํ•˜๊ธฐ ์ข‹์€ ๊ณณ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ AWS์˜€์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋‹น์—ฐํžˆ IaaS๋กœ ์šด์˜ํ•˜๊ณ ์ž ํ•˜์˜€๊ณ , ๊ทธ๋Ÿฌ๊ธฐ์—๋Š” ๋„ˆ๋ฌด๋‚˜ ๋งŽ์€ ๋น„์šฉ์„ ๊ฐ์ˆ˜ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.


๊ทธ ๋น„์šฉ์„ ์กฐ๊ธˆ ๊ฐ์ˆ˜ํ•จ๊ณผ ๋™์‹œ์— ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๊ณต๋ถ€ํ•˜๊ณ ์ž FaaS๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ๋ฅผ ํ†ตํ•ด ๋Š๊ผˆ๋˜ ์ตœ๋Œ€์˜ ๋‹จ์  ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ”๋กœ ์ด๋Ÿฐ ๋ฐฐํฌ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ํ•œ ์ค„์„ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ๋‹ค์‹œ ์ฒจ๋ถ€ํ•ด์„œ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์—ˆ๊ณ , ๊ทธ๋“ค์€ ํ•จ์ˆ˜ ๋‹จ์œ„๋กœ ์›€์ง์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ ์ด๋“ค ํ•จ์ˆ˜๊ฐ€ ์ข…์†์ ์ด๋ผ๋ฉด ์ฝ”๋“œ ๋‘ ๊ฐœ๋ฅผ ๋™์‹œ์— ์ˆ˜์ •ํ•˜์—ฌ ์˜ฌ๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋Œ๋ณ€ํ•˜๋Š” ๊ฐ€์ •๋„ ์ƒ๊ฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.



Serverless Platform

Serverless Platform์€ ์ด๋Ÿฌํ•œ ๋ฐฐํฌ ๋ฌธ์ œ๋ฅผ ์™„ํ™”์‹œ์ผœ ์ค„ ์•„์ฃผ ์ตœ์ ์˜ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์€ CLI ํ™˜๊ฒฝ์—์„œ ๊ฐ„๋‹จํ•œ ์„ค์ • ์ดํ›„ ๋ช…๋ น์–ด ํ•˜๋‚˜๋กœ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ๊ฒŒ ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ๋ฐ”๋กœ AWS์—์„œ ์ œ๊ณตํ•˜๋Š” IAM ๋•๋ถ„์ธ๋ฐ, ์ด๋Š” ์™ธ๋ถ€์—์„œ๋„ ๊ฐ„๋‹จํ•œ API ํ˜ธ์ถœ๋กœ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์ด ๋ถ„๋ช…ํžˆ ์ข‹์€ ๊ฒƒ์€ ์‚ฌ์‹ค์ด์ง€๋งŒ ์น˜๋ช…์ ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผํ…Œ๋ฉด ์ด๋Ÿฌํ•œ ์šด์˜์„ ์œ„ํ•ด ์ผ๋ถ€ ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์•…์šฉํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์š”๊ธˆ ํญํƒ„ ๋งž๊ธฐ ์‰ฝ๊ฒ ์ง€์š”. ๋ฐ˜๋“œ์‹œ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ ˆ๋Œ€์ ์œผ๋กœ ์ˆ™์ง€ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.



Serverless Framework ์„ค์น˜

 $ npm -g install serverless 

Serverless Platform์€ npm / yarn ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ์ด์šฉํ•ด์„œ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค/์œ ๋‹‰์Šค์˜ ๊ฒฝ์šฐ ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ global ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

(ํ˜น์‹œ Permission ๋“ฑ์˜ ๊ถŒํ•œ ๊ด€๋ จ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ๊ด€๋ฆฌ์ž ๊ณ„์ •์—์„œ ์ง„ํ–‰ํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.)


 $ serverless login 

Serverless ํ”Œ๋žซํผ์— ๋กœ๊ทธ์ธ ํ•ฉ๋‹ˆ๋‹ค. ์™œ ๋กœ๊ทธ์ธํ•ด์•ผ ํ•˜๊ณ , ์ด๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€์š”? ์šฐ๋ฆฌ๊ฐ€ Serverless๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ์ด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋กœ๊ทธ์ธ ํ•ด์•ผ ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค .ํ•˜์ง€๋งŒ ์ด ๋กœ๊ทธ์ธ์„ ํฌ์ŠคํŠธ์— ์ ์œผ๋ฉด์„œ ๊ถŒ์žฅํ•˜๋Š” ์ด์œ ๋Š” ์•ž์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ๋ฐฐํฌํ•  ์ฝ”๋“œ๋“ค์— ๋Œ€ํ•œ ๋ฌธ์„œ ์ž‘์—…์ด๋‚˜ ๊ทธ ๋™์•ˆ์— ๋ฐฐํฌํ•œ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๊ธฐ๋ก์ด ๋‚จ๊ฒจ์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


์–ด์ฐจํ”ผ AWS์—์„œ๋„ ๋น„์Šทํ•œ ์œ ํ˜•์œผ๋กœ ๋‚จ๊ธด ํ•˜์ง€๋งŒ ์ฐจ์ด์ ์ด ์žˆ๋‹ค๋ฉด Serverless ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๋งˆํฌ๋‹ค์šด ํ˜•ํƒœ๋กœ ๋ฌธ์„œ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๋ฉ”๋ฆฌํŠธ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ฃ .


Serverless Framework๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Github ๊ณ„์ •์ด ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ Github ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•˜๋ฉด Serverless framework ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.



IAM ์ƒ์„ฑ

AWS Console ์™ธ๋ถ€์—์„œ ์ž์œ ๋กญ๊ฒŒ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์ƒ์„ฑํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž์‹ ์˜ AWS ๊ณต๊ฐ„์„ ์™ธ๋ถ€์—์„œ๋„ ์ž์œ ๋กœ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ์„ ์ฃผ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 


AWS Console์—์„œ IAM ํ•ญ๋ชฉ์— ์ ‘์†ํ•˜๊ฒŒ ๋˜๋ฉด ์™ผ์ชฝ ์‚ฌ์ด๋“œ์ชฝ์— ์‚ฌ์šฉ์ž๋ผ๋Š” ๊ฒƒ์ด ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์œ„ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


์‚ฌ์šฉ์ž ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ์ด์šฉํ•˜์—ฌ ์œ„์™€ ๊ฐ™์ด ์ ์ ˆํ•œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ์•ก์„ธ์Šค ์œ ํ˜•์„ ์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


์ด ๊ณผ์ •์€ ๊ถŒํ•œ์„ ์ฃผ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ Serverless framework์—์„œ๋Š” Lambda, API Gateway, CloudFoundation ์ด๋ ‡๊ฒŒ 3๊ฐœ์˜ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ๋ฐ, ์ฒ˜์Œ ์‚ฌ์šฉํ•ด๋ณด์‹œ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด์„œ ํŽธ์˜์ƒ AdministratorAccess๋ผ๋Š” ์ „์ฒด ๊ถŒํ•œ์„ ์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


์‚ฌ์šฉ์ž ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ์œ„์™€ ๊ฐ™์ด ์•ก์„ธ์Šค ํ‚ค ID์™€ ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. Serverless framework๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ•  ํ‚ค์ด๋ฏ€๋กœ ์ž˜ ๋ฉ”๋ชจํ•ด๋‘๋„๋ก ํ•ฉ์‹œ๋‹ค.


๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค๋Š” ๊ฐœ์ธ ์ •๋ณด์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜์‹œ๊ณ  ์ ˆ๋Œ€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด ํ‚ค๋ฅผ ๋ณด์—ฌ์ฃผ์ง€ ๋งˆ์„ธ์š”. ์‹ฌ์ง€์–ด ์ด ๊ธ€์—์„œ๋Š” ์ „์ฒด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ค€ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ๊ธˆ์— ๋Œ€ํ•œ ๋ถ€๋ถ„๋„ ๊ฑด๋“œ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค๋Š” ๋ณธ์ธ๋งŒ ์•„์‹œ๊ณ , Github, ๋ธ”๋กœ๊ทธ ๋“ฑ์— ๋ฐฐํฌํ•˜๋Š” ์‹ค์ˆ˜๋Š” ์—†๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.



Serverless framework ์„ค์ •

์ด์ œ ๊ถŒํ•œ์— ๋Œ€ํ•œ ๋ถ€๋ถ„๋„ ์™„๋ฃŒํ•˜์˜€์œผ๋‹ˆ ๋กœ์ปฌ์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


 $ serverless config credentials --provider aws --key ์•ก์„ธ์Šคํ‚คID --secret ๋น„๋ฐ€์•ก์„ธ์Šคํ‚ค

์œ„ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Serverless framework ์„ค์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋˜๋Š” ์„ค์ • ํŒŒ์ผ์€ ~/.aws/credentials ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.



Serverless ๋ฐฐํฌ 

์ด์ œ ๋ฐฐํฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ์ง์ ‘ ์‹คํ–‰ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ Serverless framework์—์„œ ์ œ๊ณตํ•˜๋Š” ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


 $ serverless create -t aws-python3 -p nk-serverless

AWS Lambda๋Š” Node.js, Python, C#, Java ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์„œ๋ฒ„๋ฆฌ์Šค ํ”„๋ ˆ์ž„์›์—์„œ๋„ python3 ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ์–ธ์–ด์˜ ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. t ์˜ต์…˜์„ ์ด์šฉํ•ด์„œ ์›ํ•˜๋Š” ์–ธ์–ด์˜ ํ…œํ”Œ๋ฆฟ์„ ๋ฐ›์•„๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์—ฌ๊ธฐ์„œ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์›ํ•˜๋Š” ์˜ต์…˜์„ ๊ณจ๋ผ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ˜„์žฌ๋Š” Serverless framework์—์„œ AWS ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Azure ๋“ฑ์˜ ํƒ€์‚ฌ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์—์„œ๋„ ํ•จ์ˆ˜ ๋ฐฐํฌ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ž‡์œผ๋‹ˆ ๋‹ค๋ฅธ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ฐฐํฌ๋„ ๊ณ ๋ คํ•ด๋ณด์‹œ๊ธฐ๋ฅผ ์ถ”์ฒœํ•ด๋ด…๋‹ˆ๋‹ค.


ํ…œํ”Œ๋ฆฟ์„ ์ƒ์„ฑํ•˜๋ฉด handler.py ๋ผ๋Š” ํŒŒ์ผ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ์—๋Š” statusCode 200๊ณผ ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญํ•˜๋Š” JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋‹ด๊ฒจ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. 


serverless.yml ํŒŒ์ผ์ด ์ค‘์š”ํ•œ๋ฐ, ์ด ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ๋ฐฐํฌ์™€ ๊ด€๋ จ๋œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„, ๋ฐฐํฌ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ํ”„๋ ˆ์ž„์›์—์„œ๋Š” ์ด ์„ค์ • ํŒŒ์ผ์„ ๋ณด๊ณ  AWS์˜ ๋ฐฐํฌ ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


๋ฐฐํฌ ๋ฐฉ์‹์€ ๋ฆฌ์ „๊ณผ S3, IoT ๋“ฑ ์—ฌ๋Ÿฌ AWS์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜๋“ค์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์ด ๊ธ€์—์„œ๋Š” ๊ฐ„๋‹จํžˆ stage์™€ ๋ฆฌ์ „, ๊ทธ๋ฆฌ๊ณ  ๊ฐ API์˜ entry point์— ๋Œ€ํ•ด์„œ๋งŒ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


service๋Š” Lambda์—์„œ ํ‘œ์‹œํ•  Prefix(์ ‘๋‘์‚ฌ)์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์„œ๋ฒ„๋ฆฌ์Šค๊ฐ€ ๋ฐฐํฌ๋˜๋ฉด nk-serverless-nkTistory-hello ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ํ•จ์ˆ˜๊ฐ€ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. 

stage๋Š” API Gateway์˜ ์ง€์ ์ž…๋‹ˆ๋‹ค.

region์€ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ๋ฐฐํฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ง€์—ญ์ž…๋‹ˆ๋‹ค.


function์˜ ๊ฒฝ์šฐ ์ฒซ ๋ถ€๋ถ„์— ํ•จ์ˆ˜ ์ด๋ฆ„์„ handler ๋ถ€๋ถ„์— API์˜ ์‹œ์ž‘ ํ•จ์ˆ˜๋ฅผ ์ ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


 $ serverless deploy

์ด์ œ ์ด๋Ÿฐ ์„ค์ • ํŒŒ์ผ์„ ๋ฐ”ํƒ•์œผ๋กœ ์•ž์œผ๋กœ๋Š” ์œ„ ๋ช…๋ น์–ด๋งŒ ์ž…๋ ฅํ•ด์ฃผ์‹œ๋ฉด...


์ด๋ ‡๊ฒŒ ์„œ๋ฒ„๋ฆฌ์Šค ํ”„๋ ˆ์ž„์›์— ํ…œํ”Œ๋ฆฟ ์„œ๋น„์Šค๊ฐ€ ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋˜๊ณ  ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋งˆํฌ๋‹ค์šด ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋ฌธ์„œ๋ฅผ ์—ด๋žŒํ•˜์‹ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.


๊ฐ ํ•จ์ˆ˜๋ณ„๋กœ ๋งˆํฌ๋‹ค์šด ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋งค๋‰ด์–ผ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


AWS์—๋„ ์ž˜ ๋ฐฐํฌ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



๋งˆ์น˜๋ฉฐ...

์—ฌ๊ธฐ๊นŒ์ง€ Serverless๋ฅผ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. 


์•„๋งˆ ์„œ๋ฒ„๋ฆฌ์Šค๋ฅผ ์–ผ๋งˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋‹ค๊ฐ€ ์ ์šฉํ•˜์‹ค ๊ฒฝ์šฐ์—๋Š” ํ—ท๊ฐˆ๋ฆฌ์‹ค ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค๋งŒ ๊ณ„์† ์‚ฌ์šฉํ–ˆ๋˜ ๋ถ„๋“ค์€ ์ด ๊ณผ์ •์„ ์ถ•์•ฝํ•˜๋ฉด์„œ ํฐ ์ด์ ์ด ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๋ผ์‹ค ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments