์ต๊ทผ ๋ช ๋
๋์ ์๋ฒ๋ฆฌ์ค ๊ธฐ์ ์ด ๋น ๋ฅด๊ฒ ์ธ๊ธฐ๋ฅผ ์ป์์ง๋ง ์ฌ์ ํ ์ด์ ๊ด๋ จ๋ ๋ง์ ์คํด์ ๋๋ ค์์ด ์์ต๋๋ค. ๋ฒค๋ ์ข
์์ฑ, ๋๊ตฌ, ๋น์ฉ ๊ด๋ฆฌ, ์ฝ๋ ์คํํธ, ๋ชจ๋ํฐ๋ง ๋ฐ ๊ฐ๋ฐ ์๋ช
์ฃผ๊ธฐ๋ ์๋ฒ๋ฆฌ์ค ๊ธฐ์ ๊ณผ ๊ด๋ จํ์ฌ ๋ชจ๋ ๋จ๊ฑฐ์ด ์ฃผ์ ์
๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ์ธ๊ธ๋ ์ฃผ์ ์ค ์ผ๋ถ๋ฅผ ์ดํด๋ณด๊ณ ์ด๋ณด์๊ฐ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ๋ฉฐ ๋น์ฉ ํจ์จ์ ์ธ ์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋๋ ๋ฐ ๋์์ด ๋๋ ์ ์ฉํ ์ ๋ณด ์์ค์ ๋ํ ํ๊ณผ ๋งํฌ๋ฅผ ๊ณต์ ํฉ๋๋ค.
์๋ฒ๋ฆฌ์ค ๊ธฐ์ ์ ๋ํ ์คํด
๋ง์ ์ฌ๋๋ค์ด ์๋ฒ๋ฆฌ์ค ๋ฐ ์๋ฒ๋ฆฌ์ค ์ฒ๋ฆฌ(
์๋ฒ๋ฆฌ์ค ๊ธฐ์ ์ ๊ธฐ๋ณธ ์์น์ ์ธํ๋ผ ๊ด๋ฆฌ ๋ฐ ํ์ฅ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ผ๋ฉฐ ์ฌ์ฉํ ๋งํผ๋ง ์ง๋ถํ๋ฉด ๋๋ค๋ ๊ฒ์ ๋๋ค. 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๊ฐ ์ถ์๋์์ง๋ง
์ด ํดํท์ ํนํ ๋ก์ปฌ ํ ์คํธ ๋ถ์ผ์์ ๋ง์ ์ ํ์ ๋ถ๊ณผํฉ๋๋ค. Docker-Lambda, DynamoDB Local ๋ฐ LocalStack๊ณผ ๊ฐ์ ์๋ฃจ์ ์ด ์์ง๋ง ์ด๋ฌํ ์๋ฃจ์ ์๋ ๋ง์ ๋ ธ๋ ฅ๊ณผ ์๋นํ ์์ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ชจ๋ ํ๋ก์ ํธ๋ ํ๋ฐํ ๊ฐ๋ฐ๋๊ณ ์์ผ๋ฏ๋ก ํดํท์ด ํ์ํ ์์ค์ ๋๋ฌํ๋ ๊ฒ์ ์๊ฐ ๋ฌธ์ ์ ๋๋ค.
์๋ฒ๋ฆฌ์ค ๊ธฐ์ ์ด ๊ฐ๋ฐ ์ฃผ๊ธฐ์ ๋ฏธ์น๋ ์ํฅ
์ธํ๋ผ๋ ๊ตฌ์ฑ์ผ ๋ฟ์ด๋ฏ๋ก ์
ธ ์คํฌ๋ฆฝํธ์ ๊ฐ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์ ์ํ๊ณ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ก ๊ตฌ์ฑ ํด๋์ค ์๋ฃจ์
์ ์์งํ ์ ์์ต๋๋ค.
๋ชจ๋ ๊ตฌ์ฑ์ผ ๋ฟ์ด๋ฏ๋ก ํนํ CloudFormation๊ณผ ๊ฐ์ ์ฝ๋ํ ์ธํ๋ผ ์๋ฃจ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํน์ ํ๊ฒฝ, ์ง์ญ ๋ฐ ์ฌ์ฉ์์ ๋ง๊ฒ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ฐ ๋ถ๊ธฐ์ ๋ํ ์ธํ๋ผ ๋ณต์ฌ๋ณธ์ ๋ฐฐํฌํ์ฌ ๊ฐ๋ฐ ์ค์ ์์ ํ ๊ฒฉ๋ฆฌ๋ ์ํ์์ ํ ์คํธํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ฝ๋๊ฐ ์ค์ ํ๊ฒฝ์์ ์ ์ ํ๊ฒ ์๋ํ๋์ง ์ดํดํ๊ณ ์ ํ ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ํผ๋๋ฐฑ ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํต๋๋ค. ๊ด๋ฆฌ์๋ ์ค์ ์ฌ์ฉ๋์ ๋ํด์๋ง ๋น์ฉ์ ์ง๋ถํ๋ฏ๋ก ์ฌ๋ฌ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ ๋น์ฉ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
DevOps๋ ๊ฐ๋ฐ์๊ฐ ์ฌ๋ฐ๋ฅธ ๊ตฌ์ฑ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ๊ธฐ๋ง ํ๋ฉด ๋๋ฏ๋ก ๊ฑฑ์ ์ด ๋ํฉ๋๋ค. ๋ ์ด์ ์ธ์คํด์ค, ๋ฐธ๋ฐ์ ๋๋ ๋ณด์ ๊ทธ๋ฃน์ ๊ด๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ํนํ IAM ๊ตฌ์ฑ ๋ฐ ํด๋ผ์ฐ๋ ๋ฆฌ์์ค ์ต์ ํ์ ๊ด๋ จํ์ฌ ์ธํ๋ผ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ ๊ฒ์ด ์ฌ์ ํ ์ค์ํ์ง๋ง NoOps๋ผ๋ ์ฉ์ด๊ฐ ์ ์ ๋ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
Epsagon, Thundra, Dashbird ๋ฐ IOPipe์ ๊ฐ์ ๋งค์ฐ ๊ฐ๋ ฅํ ๋ชจ๋ํฐ๋ง ๋ฐ ์๊ฐํ ๋๊ตฌ๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฌ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ๋ก๊น ๋ฐ ์ถ์ ์ ์ ๊ณตํ๊ณ , ์ฑ๋ฅ ๋ฉํธ๋ฆญ ๋ฐ ์ํคํ ์ฒ ๋ณ๋ชฉ ํ์์ ์บก์ฒํ๊ณ , ๋น์ฉ ๋ถ์ ๋ฐ ์์ธก์ ์ํํ ์ ์์ต๋๋ค. DevOps ์์ง๋์ด, ๊ฐ๋ฐ์ ๋ฐ ์ค๊ณ์์๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ๋ํ ํฌ๊ด์ ์ธ ๋ณด๊ธฐ๋ฅผ ์ ๊ณตํ ๋ฟ๋ง ์๋๋ผ ๊ด๋ฆฌ์๊ฐ ์ด๋น ๋ฆฌ์์ค ๋น์ฉ ๋ฐ ๋น์ฉ ์์ธก์ ํตํด ์ํฉ์ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค. ๊ด๋ฆฌํ ์ธํ๋ผ๋ก ์ด๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ ํจ์ฌ ๋ ์ด๋ ต์ต๋๋ค.
์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ค๊ณ๋ ์น ์๋ฒ ๋ฐฐํฌ, ๊ฐ์ ๋จธ์ ๋๋ ์ปจํ ์ด๋, ํจ์น ์๋ฒ, ์ด์ ์ฒด์ , ์ธํฐ๋ท ๊ฒ์ดํธ์จ์ด ๋ฑ์ ๊ด๋ฆฌํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ํจ์ฌ ์ฝ์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋ ์ฑ ์์ ์ถ์ํํจ์ผ๋ก์จ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ๋ ํต์ฌ์ ์ง์คํ ์ ์์ต๋๋ค. ์๋ฃจ์ ๋น์ฆ๋์ค ๋ฐ ๊ณ ๊ฐ ์๊ตฌ ์ฌํญ.
ํดํท์ด ๋ ๋์ ์ ์์ง๋ง(๋งค์ผ ๋ ์ข์์ง) ๊ฐ๋ฐ์๋ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ๋ฅผ ๊ตฌํํ๊ณ ์ํคํ ์ฒ ๋ด์ ๋ค์ํ ์๋น์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ก์ฑ์ ๊ฐ์ฅ ์ ๋ถ์ฐ์ํค๋ ๋ฐ ์ง์คํ ์ ์์ต๋๋ค. ์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ๊ด๋ฆฌ๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ด๋ฉฐ ํด๋ผ์ฐ๋ ๊ณต๊ธ์์ ์ํด ์ถ์ํ๋ฉ๋๋ค(์: SQS, S3 ์ด๋ฒคํธ ๋๋ DynamoDB ์คํธ๋ฆผ). ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ํน์ ์ด๋ฒคํธ์ ์๋ตํ๋ ๋น์ฆ๋์ค ๋ก์ง๋ง ์์ฑํ๋ฉด ๋๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ๋ฉ์์ง ๋๊ธฐ์ด์ ๊ตฌํํ๋ ์ต์ ์ ๋ฐฉ๋ฒ์ด๋ ํน์ ํ๋์จ์ด ์ ์ฅ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ์ ์์ ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
๋ชจ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฝ๋๋ฅผ ๋ก์ปฌ์์ ์คํํ๊ณ ๋๋ฒ๊น ํ ์ ์์ต๋๋ค. ๋จ์ ํ ์คํธ๋ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค. ๋ง์ถคํ ์คํ ๊ตฌ์ฑ์ผ๋ก ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ธํ๋ผ๋ฅผ ๋ฐฐํฌํ ์ ์๋ ๊ธฐ๋ฅ์ ํตํด ๊ฐ๋ฐ์๋ ํ ์คํธ ๋น์ฉ์ด๋ ๊ฐ๋น์ผ ๊ด๋ฆฌ ํ๊ฒฝ์ ๋ฏธ์น๋ ์ํฅ์ ๋ํด ์๊ฐํ์ง ์๊ณ ์ค์ํ ํผ๋๋ฐฑ์ ์ ์ํ๊ฒ ์ป์ ์ ์์ต๋๋ค.
์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ ๋๊ตฌ ๋ฐ ๊ธฐ์
์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๋ ํน์ ํ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ์ด ์์
์ ์ํ ์ผ๋ จ์ ์๋น์ค๋ ์์ต๋๋ค. AWS๋ ์ค๋๋ ๊ฐ๋ ฅํ ์๋ฒ๋ฆฌ์ค ์๋ฃจ์
์ ์ ๋์ฃผ์์ด์ง๋ง
๋ค๋ฅธ ์ธ์ด๋ก ์์ฑํ๋ ๊ฒฝ์ฐ ์๋ฒ๋ฆฌ์ค ํ๋ ์์ํฌ๋ ๋งค์ฐ ๊ฐ๋ ฅํ 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