์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์„ ์œ„ํ•œ ํŒ ๋ฐ ๋ฆฌ์†Œ์Šค

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

์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์˜คํ•ด

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์„œ๋ฒ„๋ฆฌ์Šค ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค ์ฒ˜๋ฆฌ(์„œ๋น„์Šค๋กœ์„œ์˜ ๊ธฐ๋Šฅ, FaaS)๋Š” ๊ฑฐ์˜ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ทธ ์ฐจ์ด๊ฐ€ ๋„ˆ๋ฌด ํฌ์ง€ ์•Š๊ณ  ์ฐธ์‹ ํ•จ์„ ๋„์ž…ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. AWS Lambda๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ์ „์„ฑ๊ธฐ์˜ ์Šคํƒ€ ์ค‘ ํ•˜๋‚˜์ด์ž ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜์˜ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์š”์†Œ ์ค‘ ํ•˜๋‚˜์˜€์ง€๋งŒ ์ด ์•„ํ‚คํ…์ฒ˜๋Š” FaaS ๊ทธ ์ด์ƒ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ์ˆ ์˜ ๊ธฐ๋ณธ ์›์น™์€ ์ธํ”„๋ผ ๊ด€๋ฆฌ ๋ฐ ํ™•์žฅ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์‚ฌ์šฉํ•œ ๋งŒํผ๋งŒ ์ง€๋ถˆํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. AWS DynamoDB, S3, SNS ๋˜๋Š” SQS, Graphcool, Auth0, Now, Netlify, Firebase ๋“ฑ ๋งŽ์€ ์„œ๋น„์Šค๊ฐ€ ์ด๋Ÿฌํ•œ ๊ธฐ์ค€์— ๋ถ€ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ฒ„๋ฆฌ์Šค๋Š” ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ™•์žฅ์„ ์œ„ํ•ด ์ตœ์ ํ™”ํ•  ํ•„์š” ์—†์ด ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋˜ํ•œ ์ธํ”„๋ผ ์ˆ˜์ค€์˜ ๋ณด์•ˆ์ด ๋” ์ด์ƒ ์‚ฌ์šฉ์ž์˜ ๊ด€์‹ฌ์‚ฌ๊ฐ€ ์•„๋‹˜์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด๋Š” ๋ณด์•ˆ ํ‘œ์ค€ ์ถฉ์กฑ์˜ ์–ด๋ ค์›€๊ณผ ๋ณต์žก์„ฑ์„ ๊ณ ๋ คํ•  ๋•Œ ํฐ ์ด์ ์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ œ๊ณต๋œ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ž…ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„๋ฆฌ์Šค๋Š” "๋งˆ์Œ์˜ ์ƒํƒœ", ์ฆ‰ ์†”๋ฃจ์…˜์„ ์„ค๊ณ„ํ•  ๋•Œ์˜ ํŠน์ •ํ•œ ์‚ฌ๊ณ  ๋ฐฉ์‹์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ”„๋ผ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ”ผํ•˜์‹ญ์‹œ์˜ค. ์„œ๋ฒ„๋ฆฌ์Šค ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด์ ์„ ์ œ๊ณตํ•˜๋Š” ์ž‘์—…์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•ฉ๋‹ˆ๋‹ค. ์ง€์† ๊ฐ€๋Šฅํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ , ์ ์‘์ ์ด๊ณ  ์•ˆ์ •์ ์ธ API๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ž์œ  ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ํ”Œ๋žซํผ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์— ๋Œ€ํ•œ ์ด๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋” ์ด์ƒ ๋ณต์žกํ•œ ์ธํ”„๋ผ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์žฅ ์ถœ์‹œ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ”„๋ผ ๊ด€๋ฆฌ์˜ ์ฑ…์ž„๊ณผ ๋น„์šฉ์„ ์—†์• ๊ณ  ๊ณ ๊ฐ์ด ํ•„์š”๋กœ ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์„œ๋น„์Šค ๊ตฌ์ถ•์— ์ง‘์ค‘ํ•˜์‹ญ์‹œ์˜ค. Patrick Debois๋Š” ์ด ์ ‘๊ทผ๋ฒ•์„ '์„œ๋น„์Šค ํ’€', ์ด ์šฉ์–ด๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ฑ„ํƒ๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋Š” (์ „์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๋Œ€์‹ ) ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ๋กœ์„œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋งํฌ๋กœ ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋ฐฐํฌ ๋ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋†€๋ผ์šด ์„ธ๋ถ„์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ํ•จ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ฆฌํŒฉํ„ฐ๋งํ•ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€๋Š” ํด๋ผ์šฐ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๊ณต๊ธ‰์—…์ฒด์— ๋Œ€ํ•œ ์˜์กด๋„ ๋•Œ๋ฌธ์— ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ์ˆ ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋ฉฐ ์ด๋Š” ์˜คํ•ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ๋‹ค๋ฅธ AWS ์„œ๋น„์Šค๋ฅผ ํ•จ๊ป˜ ๋ฌถ๋Š” AWS Lambda์˜ ๊ธฐ๋Šฅ๊ณผ ๊ฒฐํ•ฉ๋œ AWS์—์„œ ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์€ ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜์˜ ๊ฐ•์  ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์กฐํ•ฉ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์šฉ์–ด์˜ ํ•ฉ ์ด์ƒ์ผ ๋•Œ ์‹œ๋„ˆ์ง€ ํšจ๊ณผ์˜ ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๊ณต๊ธ‰์—…์ฒด ์ข…์†์„ฑ์„ ํ”ผํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋กœ ์ž‘์—…ํ•  ๋•Œ ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž ๊ฐ„์— ๊ณ ์œ ํ•œ ์ถ”์ƒํ™” ๊ณ„์ธต์„ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋ฒ„๋ฆฌ์Šค ์†”๋ฃจ์…˜์˜ ๊ฒฝ์šฐ, ํŠนํžˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋น„์šฉ ํšจ์œจ์„ฑ์„ ๊ณ ๋ คํ•œ๋‹ค๋ฉด ๊ทธ ๋…ธ๋ ฅ์€ ๊ฒฐ์‹ค์„ ๋งบ์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒค๋”๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ผ๋ถ€ ํŠน์ˆ˜ ์„œ๋น„์Šค๋Š” ๋‹ค๋ฅธ ๊ณต๊ธ‰์—…์ฒด์™€์˜ ํ†ตํ•ฉ ์ง€์ ์— ์˜์กดํ•˜๋ฉฐ ์ฆ‰์‹œ ํ”Œ๋Ÿฌ๊ทธ ์•ค ํ”Œ๋ ˆ์ด ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์„ ์ผ๋ถ€ ์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” EC2 ์ธ์Šคํ„ด์Šค์— ํ”„๋ก์‹œํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฒŒ์ดํŠธ์›จ์ด API ์—”๋“œํฌ์ธํŠธ์—์„œ Lambda ํ˜ธ์ถœ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. Graphcool์€ ํƒ€์‚ฌ ์ธ์ฆ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์‰ฌ์šด Auth0์œผ๋กœ ์†์‰ฌ์šด ๊ตฌ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

๊ณ ๋ คํ•˜๋‹ค:

  • ์–ด๋–ค ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค ๋ฐ ์ด๋ฅผ ์„ ํƒํ•œ FaaS ์†”๋ฃจ์…˜๊ณผ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • ์ง€์›๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด(๋™์  ๋˜๋Š” ์ •์  ํƒ€์ดํ•‘, ์ปดํŒŒ์ผ ๋˜๋Š” ํ•ด์„, ๋ฒค์น˜๋งˆํฌ, ์ฝœ๋“œ ์Šคํƒ€ํŠธ โ€‹โ€‹์„ฑ๋Šฅ, ์˜คํ”ˆ ์†Œ์Šค ์ƒํƒœ๊ณ„ ๋“ฑ).
  • ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ(SLA, 2FA, OAuth, HTTPS, SSL ๋“ฑ).
  • CI/CD ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • ์–ด๋–ค ์ฝ”๋“œํ˜• ์ธํ”„๋ผ ์†”๋ฃจ์…˜์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ™•์žฅํ•˜๊ณ  ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ๋Šฅ์„ ์ ์ง„์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์ด ๋‹ค์†Œ ์ œํ•œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฑฐ์˜ ๋ชจ๋“  ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ์ˆ ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”์–ด์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ API(REST ๋˜๋Š” ๋ฉ”์‹œ์ง€ ๋Œ€๊ธฐ์—ด์„ ํ†ตํ•ด)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ช…ํ™•ํ•œ API, ์ข‹์€ ๋ฌธ์„œ ๋ฐ ๊ฐ•๋ ฅํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ์ฐพ์œผ๋ฉด ์ž˜๋ชป๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ†ตํ•ฉ์˜ ์šฉ์ด์„ฑ์€ ์ข…์ข… ํ•ต์‹ฌ ๋ฉ”ํŠธ๋ฆญ์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•„๋งˆ๋„ 2015๋…„์— Lambda๊ฐ€ ์ถœ์‹œ๋œ ์ดํ›„ AWS๊ฐ€ ๊ทธํ† ๋ก ์„ฑ๊ณตํ•œ ์ฃผ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„๋ฆฌ์Šค๊ฐ€ ์ข‹์€ ๊ฒฝ์šฐ

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

๋น„์šฉ ์ ˆ๊ฐ๊ณผ ์†์‰ฌ์šด ํ™•์žฅ์œผ๋กœ ์ธํ•ด ์„œ๋ฒ„๋ฆฌ์Šค ์†”๋ฃจ์…˜์€ ๋‚ด๋ถ€ ์‹œ์Šคํ…œ๊ณผ ์™ธ๋ถ€ ์‹œ์Šคํ…œ ๋ชจ๋‘์— ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊นŒ์ง€ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์ •์€ ์œ ๋กœ๊ฐ€ ์•„๋‹ˆ๋ผ ์„ผํŠธ๋กœ ์ธก์ •๋ฉ๋‹ˆ๋‹ค. AWS EC2(t1.micro)์˜ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ํ•œ ๋‹ฌ ๋™์•ˆ ์ž„๋Œ€ํ•˜๋Š” ๋ฐ ์•„๋ฌด ์ž‘์—…๋„ ํ•˜์ง€ ์•Š๋”๋ผ๋„ โ‚ฌ15์˜ ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค(๋ˆ„๊ฐ€ ๋„๋Š” ๊ฒƒ์„ ์žŠ์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?!). ์ด์— ๋น„ํ•ด ๋™์ผํ•œ ๊ธฐ๊ฐ„ ๋™์•ˆ ์ด ์ˆ˜์ค€์˜ ์ง€์ถœ์— ๋„๋‹ฌํ•˜๋ ค๋ฉด 512MB Lambda๋ฅผ 1์ดˆ ๋™์•ˆ ์•ฝ 3๋งŒ ๋ฒˆ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์•„๋ฌด ๊ฒƒ๋„ ์ง€๋ถˆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„๋ฆฌ์Šค๋Š” ์ฃผ๋กœ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ์‹œ์Šคํ…œ์— ์„œ๋ฒ„๋ฆฌ์Šค ์ธํ”„๋ผ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๊ฐ€ ์ƒ๋‹นํžˆ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด AWS S3, Lambda ๋ฐ Kinesis๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ API๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ž˜๋œ ์†Œ๋งค ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋ถ„์„ ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์€ ์—ฌ๋Ÿฌ ์–ธ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ Python, JavaScript, C#, Java ๋ฐ Go์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ์–ธ์–ด์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์— ์ œํ•œ์ด ์—†์œผ๋ฏ€๋กœ ์›ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•จ์ˆ˜๊ฐ€ ์ตœ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๊ณ  ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—„์ฒญ๋‚œ ํ™•์žฅ์„ฑ ์ด์ ์„ ๋ฌดํšจํ™”ํ•˜์ง€ ์•Š๋„๋ก ์ข…์†์„ฑ์„ ๋‚จ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์— ๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ํŒจํ‚ค์ง€๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์ฝœ๋“œ ์Šคํƒ€ํŠธ โ€‹โ€‹์‹œ๊ฐ„์ด ๊ธธ์–ด์ง‘๋‹ˆ๋‹ค.

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

AWS๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์ง€๋งŒ ์„œ๋ฒ„๋ฆฌ์Šค SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๋ฆฌ์Šค Aurora๊ทธ๋Ÿฌ๋‚˜ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐ์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” AWS Lambda์—์„œ ๊ณผ๋„ํ•œ ํŠธ๋ž˜ํ”ฝ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๊ฐœ๋ฐœ์ž๋Š” ์ง€์†์ ์œผ๋กœ Serverless Aurora๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์‹คํ—˜ํ•ด ๋ณด์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ NoSQL ์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. DynamoDB. ๊ทธ๋Ÿฌ๋‚˜์ด ์ƒํ™ฉ์ด ๊ณง ๋ฐ”๋€” ๊ฒƒ์ด๋ผ๋Š” ๋ฐ๋Š” ์˜์‹ฌ์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด ํˆดํ‚ท์€ ํŠนํžˆ ๋กœ์ปฌ ํ…Œ์ŠคํŠธ ๋ถ„์•ผ์—์„œ ๋งŽ์€ ์ œํ•œ์„ ๋ถ€๊ณผํ•ฉ๋‹ˆ๋‹ค. Docker-Lambda, DynamoDB Local ๋ฐ LocalStack๊ณผ ๊ฐ™์€ ์†”๋ฃจ์…˜์ด ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์—๋Š” ๋งŽ์€ ๋…ธ๋ ฅ๊ณผ ์ƒ๋‹นํ•œ ์–‘์˜ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋Š” ํ™œ๋ฐœํžˆ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํˆดํ‚ท์ด ํ•„์š”ํ•œ ์ˆ˜์ค€์— ๋„๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ์ˆ ์ด ๊ฐœ๋ฐœ ์ฃผ๊ธฐ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ

์ธํ”„๋ผ๋Š” ๊ตฌ์„ฑ์ผ ๋ฟ์ด๋ฏ€๋กœ ์…ธ ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ ํด๋ž˜์Šค ์†”๋ฃจ์…˜์— ์˜์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AWS ํด๋ผ์šฐ๋“œ ํฌ๋ฉ”์ด์…˜. ์ด ์„œ๋น„์Šค๊ฐ€ ๋ชจ๋“  ์˜์—ญ์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์„ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์ง€๋งŒ Lambda ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ํŠน์ • ๋ฆฌ์†Œ์Šค๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, CloudFormation์ด ์‹คํŒจํ•œ ๊ฒฝ์šฐ ์ด ๊ฒฉ์ฐจ๋ฅผ ํ•ด์†Œํ•  ์ž์ฒด ๋ฆฌ์†Œ์Šค(Lambda ํ•จ์ˆ˜)๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฌด์—‡์ด๋“  ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ AWS ํ™˜๊ฒฝ ์™ธ๋ถ€์—์„œ ์ข…์†์„ฑ์„ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

Epsagon, Thundra, Dashbird ๋ฐ IOPipe์™€ ๊ฐ™์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์‹œ๊ฐํ™” ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ๋กœ๊น… ๋ฐ ์ถ”์ ์„ ์ œ๊ณตํ•˜๊ณ , ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์บก์ฒ˜ํ•˜๊ณ , ๋น„์šฉ ๋ถ„์„ ๋ฐ ์˜ˆ์ธก์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DevOps ์—”์ง€๋‹ˆ์–ด, ๊ฐœ๋ฐœ์ž ๋ฐ ์„ค๊ณ„์ž์—๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ๋ณด๊ธฐ๋ฅผ ์ œ๊ณตํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ด€๋ฆฌ์ž๊ฐ€ ์ดˆ๋‹น ๋ฆฌ์†Œ์Šค ๋น„์šฉ ๋ฐ ๋น„์šฉ ์˜ˆ์ธก์„ ํ†ตํ•ด ์ƒํ™ฉ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ˜• ์ธํ”„๋ผ๋กœ ์ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ํ›จ์”ฌ ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

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

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

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

์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์„ ์œ„ํ•œ ๋„๊ตฌ ๋ฐ ๊ธฐ์ˆ 

์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ํŠน์ •ํ•œ ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์œ„ํ•œ ์ผ๋ จ์˜ ์„œ๋น„์Šค๋„ ์žˆ์Šต๋‹ˆ๋‹ค. AWS๋Š” ์˜ค๋Š˜๋‚  ๊ฐ•๋ ฅํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ์†”๋ฃจ์…˜์˜ ์„ ๋‘์ฃผ์ž์ด์ง€๋งŒ Google ํด๋ผ์šฐ๋“œ, ์‹œ๊ฐ„ ะธ ์ค‘ํฌ ๊ธฐ์ง€. AWS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ง‘์— ๊ถŒ์žฅ๋˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋ธ (SAM), ํŠนํžˆ C#์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Visual Studio์—๋Š” ํ›Œ๋ฅญํ•œ ๋„๊ตฌ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. SAM CLI๋Š” Visual Studio์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ IDE ๋˜๋Š” ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋กœ ์ „ํ™˜ํ•ด๋„ ์•„๋ฌด ๊ฒƒ๋„ ์žƒ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  SAM์€ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„๋ฆฌ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋งค์šฐ ๊ฐ•๋ ฅํ•œ YAML ๊ตฌ์„ฑ ํŒŒ์ผ๋กœ ๋ฌด์—‡์ด๋“  ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํƒ์›”ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Serverless Framework๋„ ๋‹ค์–‘ํ•œ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๋ฉ€ํ‹ฐํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜์„ ์ฐพ๋Š” ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๋งŽ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“  ๊ฑฐ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ํ…Œ์ŠคํŠธ์—๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ์ธ Docker-Lambda, Serverless Local, DynamoDB Local ๋ฐ LocalStack์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ์ˆ ์€ ์ด๋ฅผ ์œ„ํ•œ ๋„๊ตฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์•„์ง ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„์— ์žˆ์œผ๋ฏ€๋กœ ๋ณต์žกํ•œ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์„ค์ •ํ•  ๋•Œ ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹จ์ˆœํžˆ ํ™˜๊ฒฝ์— ์Šคํƒ์„ ๋ฐฐํฌํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ์ •ํ™•ํ•œ ๋กœ์ปฌ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

AWS Lambda ๊ณ„์ธต์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋œ ํŒจํ‚ค์ง€์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ  ๋‹ค์šด๋กœ๋“œ ์†๋„๋ฅผ ๋†’์ด์‹ญ์‹œ์˜ค.

ํŠน์ • ์ž‘์—…์— ์ ํ•ฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋‹ค๋ฅธ ์–ธ์–ด์—๋Š” ๊ณ ์œ ํ•œ ์žฅ์ ๊ณผ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์žˆ์ง€๋งŒ JavaScript, Python ๋ฐ C#(.NET Core 2.1+)์€ AWS Lambda ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ์„ ๋‘๋ฅผ ๋‹ฌ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. AWS Lambda๋Š” ์ตœ๊ทผ Runtime API๋ฅผ ๋„์ž…ํ•˜์—ฌ ์›ํ•˜๋Š” ์–ธ์–ด์™€ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹คํ—˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ํŒจํ‚ค์ง€ ํฌ๊ธฐ๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค. ํฌ๊ธฐ๊ฐ€ ์ž‘์„์ˆ˜๋ก ๋กœ๋“œ ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค. ํŠนํžˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. JavaScript๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ฒฝ์šฐ Webpack๊ณผ ๊ฐ™์€ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ณ  ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ํ•ญ๋ชฉ๋งŒ ํฌํ•จํ•˜์‹ญ์‹œ์˜ค. .NET Core 3.0์—๋Š” ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ณ  ์ฝœ๋“œ ์Šคํƒ€ํŠธ์— ๋งŽ์€ ๋„์›€์ด ๋˜๋Š” QuickJit ๋ฐ Tiered Compilation์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ๋Šฅ์˜ ์˜์กด๋„๋Š” ์ฒ˜์Œ์—๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์กฐ์ •ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ํ์™€ ์ƒํƒœ ์‹œ์Šคํ…œ์€ ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Lambda ํ•จ์ˆ˜๋Š” ์„œ๋กœ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‘๋‹ต์„ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ("์‹คํ–‰ ํ›„ ์žŠ์–ด๋ฒ„๋ฆผ")์—๋งŒ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•จ์ˆ˜๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ ๊ฒƒ์— ๋Œ€ํ•ด ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€ ํ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ์ผ๋ถ€๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ๊ด€๋ฆฌํ•˜๊ณ , ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌ(FIFO ํ ์‚ฌ์šฉ)ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํŒจํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ถ”์ ํ•˜๋Š” ์ค‘๋‹จ๋œ ๋ฉ”์‹œ์ง€ ๋Œ€๊ธฐ์—ด๋กœ AWS Lambda ํ•จ์ˆ˜๋ฅผ SQS ๋Œ€๊ธฐ์—ด์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AWS Step Functions(์ƒํƒœ ์‹œ์Šคํ…œ)๋Š” ๊ธฐ๋Šฅ ์ฒด์ธ์ด ํ•„์š”ํ•œ ๋ณต์žกํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” Lambda ํ•จ์ˆ˜ ๋Œ€์‹  ๋‹จ๊ณ„ ํ•จ์ˆ˜๋Š” ์ƒํƒœ ์ „ํ™˜์„ ์กฐ์ •ํ•˜๊ณ , ํ•จ์ˆ˜ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ํ•จ์ˆ˜์˜ ์ „์—ญ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์žฌ์‹œ๋„ ์กฐ๊ฑด ๋˜๋Š” ํŠน์ • ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠน์ • ์กฐ๊ฑด์—์„œ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์ตœ๊ทผ ๋ช‡ ๋…„ ๋™์•ˆ ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ์ˆ ์€ ์ „๋ก€ ์—†๋Š” ์†๋„๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒจ๋Ÿฌ๋‹ค์ž„ ์ „ํ™˜๊ณผ ๊ด€๋ จ๋œ ๋ช‡ ๊ฐ€์ง€ ์˜คํ•ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ”„๋ผ๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ณ  ๊ด€๋ฆฌ๋ฅผ ํ™•์žฅํ•จ์œผ๋กœ์จ ์„œ๋ฒ„๋ฆฌ์Šค ์†”๋ฃจ์…˜์€ ๋‹จ์ˆœํ™”๋œ ๊ฐœ๋ฐœ ๋ฐ DevOps ํ”„๋กœ์„ธ์Šค์—์„œ ์šด์˜ ๋น„์šฉ์˜ ๋ง‰๋Œ€ํ•œ ์ ˆ๊ฐ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์ƒ๋‹นํ•œ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์„œ๋ฒ„๋ฆฌ์Šค ์ ‘๊ทผ ๋ฐฉ์‹์— ๋‹จ์ ์ด ์—†๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๊ฐ•๋ ฅํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„๋ฆฌ์Šค ์š”์†Œ๋ฅผ ๊ธฐ์กด ์•„ํ‚คํ…์ฒ˜์— ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋””์ž์ธ ํŒจํ„ด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€