์๋น์คํ ํจ์(FaaS)๋ฅผ ํ์ฉํ ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ๋ก ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋น์ฉ ํจ์จ์ ์ธ ๊ณ ์ฑ๋ฅ ์น ์ฑ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์. ํต์ฌ ๊ฐ๋ , ์ด์ , ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃน๋๋ค.
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค: ์๋น์คํ ํจ์(FaaS) ์ํคํ ์ฒ
์น ๊ฐ๋ฐ์ ์ธ๊ณ๋ ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ์๋น์คํ ํจ์(FaaS)๋ฅผ ํ์ฉํ๋ ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ๋ ์ฐ๋ฆฌ๊ฐ ํ๋์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ์์ ์์ด ์ค๋ํ ๋ณํ๋ฅผ ๋ํ๋ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ํตํด ๊ฐ๋ฐ์๋ ์๋ฒ, ์ด์ ์ฒด์ ๋๋ ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ์ง ์๊ณ ๋ ํ๋ก ํธ์๋ ์ฝ๋์ ์๊ณ ๋ ๋ฆฝ์ ์ธ ๋ฐฑ์๋ ํจ์๋ฅผ ์์ฑํ๋ ๋ฐ ์ง์คํ ์ ์์ต๋๋ค. ์ด ๊ธ์์๋ ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ๋ฐ FaaS์ ๊ด๋ จ๋ ๊ฐ๋ , ์ด์ , ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ๊ตฌํ ์ ๋ต์ ํ์ํ ๊ฒ์ ๋๋ค.
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค๋ ๋ฌด์์ธ๊ฐ?
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค์ ํต์ฌ์ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํต์ ์ธ ๋ฐฑ์๋ ์๋ฒ ์ธํ๋ผ์์ ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ชจ๋๋ฆฌ์ ์๋ฒ ๋์ , ํ๋ก ํธ์๋๋ ๋ฐฑ์๋ ์์ ์ ์ํํ๊ธฐ ์ํด ๊ด๋ฆฌํ ์๋น์ค, ํนํ FaaS์ ์์กดํฉ๋๋ค. ์ด๋ API ํธ์ถ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ธ์ฆ ๋ฐ ์ด๋ฏธ์ง ์กฐ์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ด ์๋ฒ๋ฆฌ์ค ํ๋ซํผ์์ ๊ฐ๋ณ์ ์ด๊ณ ์ํ ๋น์ ์ฅ(stateless) ํจ์๋ก ์คํ๋จ์ ์๋ฏธํฉ๋๋ค.
์๋น์คํ ํจ์(FaaS) ์ดํดํ๊ธฐ
FaaS๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ณ ํจ์๋ฅผ ์์ฑํ๊ณ ๋ฐฐํฌํ๋ฉด ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด๊ฐ ์ด๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ์ธํ๋ผ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ํด๋ผ์ฐ๋ ์ปดํจํ ์คํ ๋ชจ๋ธ์ ๋๋ค. FaaS์ ์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ํ ๋น์ ์ฅ(Statelessness): ๊ฐ ํจ์ ์คํ์ ๋ ๋ฆฝ์ ์ด๋ฉฐ ์ด์ ์คํ์ ์์กดํ์ง ์์ต๋๋ค.
- ์ด๋ฒคํธ ๊ธฐ๋ฐ(Event-Driven): ํจ์๋ HTTP ์์ฒญ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฐ์ดํธ ๋๋ ์์ฝ๋ ์์ ๊ณผ ๊ฐ์ ์ด๋ฒคํธ์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
- ์๋ ํ์ฅ(Automatic Scaling): ํ๋ซํผ์ ์์์ ๋ฐ๋ผ ํจ์ ์ธ์คํด์ค ์๋ฅผ ์๋์ผ๋ก ํ์ฅํฉ๋๋ค.
- ์ฌ์ฉ๋ ๊ธฐ๋ฐ ๊ณผ๊ธ(Pay-per-Use): ํจ์๊ฐ ์คํ๋๋ ๋์ ์ฌ์ฉ๋ ์ปดํจํ ์๊ฐ์ ๋ํด์๋ง ๋น์ฉ์ ์ง๋ถํฉ๋๋ค.
์ธ๊ธฐ ์๋ FaaS ํ๋ซํผ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- AWS Lambda: ์๋ง์กด์ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์๋น์ค์ ๋๋ค.
- Google Cloud Functions: ๊ตฌ๊ธ์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ํ๋ซํผ์ ๋๋ค.
- Azure Functions: ๋ง์ดํฌ๋ก์ํํธ์ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์๋น์ค์ ๋๋ค.
- Netlify Functions: JAMstack ์น์ฌ์ดํธ๋ฅผ ์ํ ์๋ฒ๋ฆฌ์ค ํจ์์ ํนํ๋ ํ๋ซํผ์ ๋๋ค.
- Vercel Serverless Functions: ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํ๋ ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์ ๊ณตํ๋ ๋ ๋ค๋ฅธ ํ๋ซํผ์ ๋๋ค.
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ์ ์ด์
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ๋ฅผ ์ฑํํ๋ฉด ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ป์ ์ ์์ต๋๋ค:
- ์ธํ๋ผ ๊ด๋ฆฌ ๊ฐ์: ๊ฐ๋ฐ์๋ ์๋ฒ ์ ์ง๋ณด์๊ฐ ์๋ ์ฝ๋์ ์ง์คํ ์ ์์ต๋๋ค. ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด๊ฐ ํ์ฅ, ํจ์น ๋ฐ ๋ณด์์ ์ฒ๋ฆฌํฉ๋๋ค.
- ํ์ฅ์ฑ ํฅ์: FaaS ํ๋ซํผ์ ๋ค์ํ ์ํฌ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋์ผ๋ก ํ์ฅ๋์ด ํธ๋ํฝ์ด ๋ง์ ์๊ฐ์๋ ์๋ต์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์ด๋ ์์ธกํ ์ ์๋ ์์๋ฅผ ๊ฒฝํํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋์ ์ธ์ผ ๊ธฐ๊ฐ ๋์ ํธ๋ํฝ์ด ๊ธ์ฆํ๋ ์ด์ปค๋จธ์ค ์ฌ์ดํธ๋ฅผ ์์ํด๋ณด์ธ์. ์๋ฒ๋ฆฌ์ค ํจ์๋ ์๋ ๊ฐ์ ์์ด ์ฆ๊ฐ๋ ๋ถํ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋์ผ๋ก ํ์ฅ๋ ์ ์์ต๋๋ค.
- ๋น์ฉ ์ต์ ํ: ์ฌ์ฉ๋ ๊ธฐ๋ฐ ๊ณผ๊ธ์ ์๋นํ๋ ๋ฆฌ์์ค์ ๋ํด์๋ง ๋น์ฉ์ ์ง๋ถํจ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๊ฐํ์ ์ด๊ฑฐ๋ ์์ธก ๋ถ๊ฐ๋ฅํ ์ฌ์ฉ ํจํด์ ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์๋นํ ๋น์ฉ ์ ๊ฐ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ ๋ฌ์ ํ ๋ฒ๋ง ๋ณด๊ณ ์๋ฅผ ์์ฑํ๋ ํจ์๋ ํด๋น ์๋ณ ๋จ์ผ ์คํ ์๊ฐ์ ๋ํด์๋ง ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
- ๊ฐ๋ฐ ์๋ ์ฆ๊ฐ: ๋ ์๊ณ ๋ ๋ฆฝ์ ์ธ ํจ์๋ ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ๋ฐฐํฌ๊ฐ ๋ ์ฝ์ต๋๋ค. ์ด๋ ๋ ๋น ๋ฅธ ๋ฐ๋ณต ์ฃผ๊ธฐ์ ์์ฅ ์ถ์ ์๊ฐ ๋จ์ถ์ ์ด์งํฉ๋๋ค.
- ๋ณด์ ๊ฐํ: ์๋ฒ๋ฆฌ์ค ํ๋ซํผ์ ์ผ๋ฐ์ ์ผ๋ก ์๋ ํจ์น ๋ฐ ์ผ๋ฐ์ ์ธ ์น ์ทจ์ฝ์ ์ผ๋ก๋ถํฐ์ ๋ณดํธ๋ฅผ ํฌํจํ ๊ฐ๋ ฅํ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ณธ ์ธํ๋ผ๋ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด์์ ๊ด๋ฆฌํ๋ฏ๋ก ๊ฐ๋ฐ์๋ ์ด์ ์ฒด์ ๋ ์๋ฒ ์ํํธ์จ์ด ๋ณด์์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
- ๊ฐ์ํ๋ ๋ฐฐํฌ: ๊ฐ๋ณ ํจ์๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๊ฒ๋ณด๋ค ์ข ์ข ๋ ๊ฐ๋จํ๊ณ ๋น ๋ฆ ๋๋ค. ๋ง์ ํ๋ซํผ์ด ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๊ธฐ ์ํด ๋ช ๋ น์ค ๋๊ตฌ์ CI/CD ํตํฉ์ ์ ๊ณตํฉ๋๋ค.
- ๊ธ๋ก๋ฒ ๊ฐ์ฉ์ฑ: ๋๋ถ๋ถ์ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด๋ ์๋ฒ๋ฆฌ์ค ํจ์์ ๊ธ๋ก๋ฒ ๋ฐฐํฌ๋ฅผ ์ ๊ณตํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ฎ์ ์ง์ฐ ์๊ฐ์ ์ก์ธ์ค๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ํจ์๋ฅผ ์ฌ๋ฌ ๋ฆฌ์ ์ ๋ฐฐํฌํ์ฌ ๊ณ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ๊ณ ๋ค๋ฅธ ์ง๋ฆฌ์ ์์น์ ์๋ ์ฌ์ฉ์์ ์ง์ฐ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค๋ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํฉ๋๋ค:
- API ๊ฒ์ดํธ์จ์ด: ์์ฒญ์ ๋ค๋ฅธ ํจ์๋ก ๋ผ์ฐํ ํ์ฌ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋ง์ถคํ API๋ฅผ ์์ฑํฉ๋๋ค. ์๋ฅผ ๋ค์ด, API ๊ฒ์ดํธ์จ์ด๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ํจ์, ๊ฒฐ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ค๋ฅธ ํจ์, ์ด๋ฉ์ผ ์๋ฆผ์ ๋ณด๋ด๋ ๋ ๋ค๋ฅธ ํจ์๋ก ์์ฒญ์ ๋ผ์ฐํ ํ ์ ์์ต๋๋ค.
- ํผ ์ ์ถ: ์ ์ฉ ๋ฐฑ์๋ ์๋ฒ ์์ด ํผ ๋ฐ์ดํฐ ์ ์ถ์ ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฒ๋ฆฌ์ค ํจ์๋ ํผ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ฑฐ๋ ํ์ฌ ์๋น์ค๋ก ๋ณด๋ผ ์ ์์ต๋๋ค. ์ด๋ ์ฐ๋ฝ์ฒ ํผ, ๋ฑ๋ก ํผ ๋ฐ ์ค๋ฌธ์กฐ์ฌ ํผ์ ์ผ๋ฐ์ ์ ๋๋ค.
- ์ด๋ฏธ์ง ๋ฐ ๋น๋์ค ์ฒ๋ฆฌ: ํ์์ ๋ฐ๋ผ ์ด๋ฏธ์ง์ ๋น๋์ค์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ณ ์ต์ ํํ๋ฉฐ ๋ณํํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ ๋ ํจ์๊ฐ ํธ๋ฆฌ๊ฑฐ๋์ด ๋ค์ํ ์ฅ์น์ ๋ง๊ฒ ์๋์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
- ์ธ์ฆ ๋ฐ ์ธ๊ฐ: ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ์ธ๊ฐ ๋ก์ง์ ๊ตฌํํฉ๋๋ค. ์๋ฒ๋ฆฌ์ค ํจ์๋ ID ์ ๊ณต์์ ํตํฉํ์ฌ ์ฌ์ฉ์ ์๊ฒฉ ์ฆ๋ช ์ ํ์ธํ๊ณ ๋ณดํธ๋ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ Google ๋๋ Facebook ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ ์ ์๋๋ก OAuth 2.0์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ทธ ์์ ๋๋ค.
- ๋ฐ์ดํฐ ๋ณํ ๋ฐ ๋ณด๊ฐ: ํ๋ก ํธ์๋์ ํ์๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๊ณ ๋ณด๊ฐํฉ๋๋ค. ์ด๋ ์ฌ๋ฌ ์์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๊ฒฐํฉํ๊ณ ํ์์ฉ์ผ๋ก ํ์์ ์ง์ ํ๋ ์์ ์ ํฌํจํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํจ์๋ ํ API์์ ๋ ์จ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ค๋ฅธ API์ ์์น ๋ฐ์ดํฐ์ ๊ฒฐํฉํ์ฌ ํ์งํ๋ ๋ ์จ ์๋ณด๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
- ์์ฝ๋ ์์ : ์ด๋ฉ์ผ ๋ด์ค๋ ํฐ ๋ฐ์ก์ด๋ ๋ณด๊ณ ์ ์์ฑ๊ณผ ๊ฐ์ ์์ฝ๋ ์์ ์ ์คํํฉ๋๋ค. ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด๋ ํน์ ๊ฐ๊ฒฉ์ผ๋ก ํจ์๋ฅผ ์คํํ๋๋ก ์์ฝํ๋ ๊ธฐ๋ณธ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ์ฌ์ฉ์์๊ฒ ๋งค์ผ ๋๋ ๋งค์ฃผ ์ด๋ฉ์ผ ์์ฝ์ ๋ณด๋ด๋ ๊ฒ์ ๋๋ค.
- ์นํ : ์นํ ์ ํตํด ํ์ฌ ์๋น์ค์ ์ด๋ฒคํธ์ ์๋ตํฉ๋๋ค. ์ด์ปค๋จธ์ค ํ๋ซํผ์์ ์ ์ฃผ๋ฌธ์ด ๋ฐ์ํ๋ฉด ํจ์๊ฐ ํธ๋ฆฌ๊ฑฐ๋์ด ๊ณ ๊ฐ์๊ฒ ์๋ฆผ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
- ๋์ ์ฝํ ์ธ ์์ฑ: ๊ฐ์ธํ๋ ์ถ์ฒ์ด๋ A/B ํ ์คํธ ๋ณํ๊ณผ ๊ฐ์ ๋์ ์ฝํ ์ธ ๋ฅผ ์ฆ์์์ ์์ฑํฉ๋๋ค. ์๋ฒ๋ฆฌ์ค ํจ์๋ ๊ฐ ์ฌ์ฉ์์ ์ ํธ๋์ ํ๋์ ๋ฐ๋ผ ํ์๋๋ ์ฝํ ์ธ ๋ฅผ ๋ง์ถคํํ ์ ์์ต๋๋ค.
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ๊ตฌํ: ์ค์ฉ ๊ฐ์ด๋
FaaS๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค๋ฅผ ๊ตฌํํ๋ ๋จ๊ณ๋ณ ๊ฐ์ด๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. FaaS ํ๋ซํผ ์ ํ
ํ๋ก์ ํธ ์๊ตฌ์ฌํญ๊ณผ ๊ธฐ์ ์ ๋ฌธ์ฑ์ ๋ง๋ FaaS ํ๋ซํผ์ ์ ํํ์ธ์. ๊ฐ๊ฒฉ, ์ง์ ์ธ์ด, ์ฌ์ฉ ์ฉ์ด์ฑ, ๋ค๋ฅธ ์๋น์ค์์ ํตํฉ๊ณผ ๊ฐ์ ์์๋ฅผ ๊ณ ๋ คํ์ธ์.
์์: ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, React ๋ฐ Vue.js์ ๊ฐ์ ์ธ๊ธฐ ์๋ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์์ ๊ธด๋ฐํ ํตํฉ ๋๋ฌธ์ Netlify Functions๋ Vercel Serverless Functions๊ฐ ์ข์ ์ ํ์ด ๋ ์ ์์ต๋๋ค.
2. ํจ์ ์ ์
์๋ฒ๋ฆฌ์ค ํจ์๋ก ์คํ๋ก๋ํ ์ ์๋ ํน์ ๋ฐฑ์๋ ์์ ์ ์๋ณํ์ธ์. ๋ณต์กํ ์์ ์ ๋ ์๊ณ ๋ ๋ฆฝ์ ์ธ ํจ์๋ก ๋ถํดํ์ธ์.
์์: ์ ์ฒด ์ฌ์ฉ์ ๋ฑ๋ก ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๋จ์ผ ํจ์ ๋์ , ์ด๋ฉ์ผ ์ฃผ์ ์ ํจ์ฑ ๊ฒ์ฌ, ๋น๋ฐ๋ฒํธ ํด์ฑ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ ์ฅ์ ์ํ ๋ณ๋์ ํจ์๋ฅผ ๋ง๋์ธ์.
3. ํจ์ ์์ฑ
์ ํํ FaaS ํ๋ซํผ์์ ์ง์ํ๋ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์. ํจ์๊ฐ ์ํ ๋น์ ์ฅ(stateless)์ด๋ฉฐ ๋ฉฑ๋ฑ์ฑ(idempotent)์ ๊ฐ๋๋ก ํ์ธ์.
์์ (AWS Lambda๋ฅผ ์ฌ์ฉํ Node.js):
exports.handler = async (event) => {
const name = event.queryStringParameters.name || 'World';
const response = {
statusCode: 200,
body: `Hello, ${name}!`,
};
return response;
};
4. ์ด๋ฒคํธ ํธ๋ฆฌ๊ฑฐ ๊ตฌ์ฑ
ํจ์๋ฅผ ํธ์ถํ ์ด๋ฒคํธ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ตฌ์ฑํ์ธ์. ์ด๋ HTTP ์์ฒญ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฐ์ดํธ ๋๋ ์์ฝ๋ ์์ ์ด ๋ ์ ์์ต๋๋ค.
์์: ์ฌ์ฉ์๊ฐ ํ๋ก ํธ์๋์์ ํผ์ ์ ์ถํ ๋ HTTP ์์ฒญ์ ํจ์๋ก ๋ผ์ฐํ ํ๋๋ก API ๊ฒ์ดํธ์จ์ด๋ฅผ ๊ตฌ์ฑํ์ธ์.
5. ํจ์ ๋ฐฐํฌ
ํ๋ซํผ์ ๋ช ๋ น์ค ๋๊ตฌ๋ ์น ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ FaaS ํ๋ซํผ์ ํจ์๋ฅผ ๋ฐฐํฌํ์ธ์.
์์: netlify deploy ๋ช
๋ น์ ์ฌ์ฉํ์ฌ Netlify์ ํจ์๋ฅผ ๋ฐฐํฌํ์ธ์.
6. ํจ์ ํ ์คํธ
ํจ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ์ฒ ์ ํ ํ ์คํธํ์ธ์. ๋จ์ ํ ์คํธ, ํตํฉ ํ ์คํธ, ์๋ํฌ์๋ ํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๊ฐ๋ฅํ ์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฃจ์ธ์.
7. ๋ชจ๋ํฐ๋ง ๋ฐ ์ต์ ํ
ํจ์์ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ต์ ํํ ์์ญ์ ์๋ณํ์ธ์. ์คํ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ฐ ์ค๋ฅ์จ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ธ์.
์์: FaaS ํ๋ซํผ์ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฆฌ๊ฒ ์คํ๋๋ ํจ์๋ฅผ ์๋ณํ๊ณ ์ฑ๋ฅ ํฅ์์ ์ํด ์ฝ๋๋ฅผ ์ต์ ํํ์ธ์.
ํ๋ก ํธ์๋ ํ๋ ์์ํฌ ํตํฉ
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค๋ React, Vue.js, Angular์ ๊ฐ์ ์ธ๊ธฐ ์๋ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์ ์ํํ๊ฒ ํตํฉ๋ ์ ์์ต๋๋ค.
- React:
react-query๋swr๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ React ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ฒ๋ฆฌ์ค ํจ์๋ก๋ถํฐ์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. - Vue.js: Vue์ ๋ฐ์์ฑ ์์คํ
์ ์๋ฒ๋ฆฌ์ค ํจ์์์ ํตํฉ์ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
axios๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Vue ์ปดํฌ๋ํธ์์ ์๋ฒ๋ฆฌ์ค ํจ์๋ก API ํธ์ถ์ ํ๋ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. - Angular: Angular์ HttpClient ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์๋ฒ๋ฆฌ์ค ํจ์์ ํต์ ํ ์ ์์ต๋๋ค. Observables๋ ์๋ฒ๋ฆฌ์ค ํจ์๋ก๋ถํฐ์ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฒ๋ฆฌํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๋ณด์ ๊ณ ๋ ค ์ฌํญ
FaaS ํ๋ซํผ์ด ์์ ํ ํ๊ฒฝ์ ์ ๊ณตํ์ง๋ง, ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ๊ฐ๋ฐํ ๋ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ: ์ฃผ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํญ์ ์ฌ์ฉ์ ์ ๋ ฅ์ ๊ฒ์ฆํ์ธ์.
- ์์ ํ ์์กด์ฑ ๊ด๋ฆฌ: ๋ณด์ ์ทจ์ฝ์ ์ ํจ์นํ๊ธฐ ์ํด ํจ์ ์์กด์ฑ์ ์ต์ ์ํ๋ก ์ ์งํ์ธ์.
npm audit์ด๋yarn audit๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์กด์ฑ์ ์ทจ์ฝ์ ์ ์๋ณํ๊ณ ์์ ํ์ธ์. - ์ต์ ๊ถํ ์์น: ํจ์์ ๋ค๋ฅธ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋ฐ ํ์ํ ์ต์ํ์ ๊ถํ๋ง ๋ถ์ฌํ์ธ์. ํจ์์ ์ง๋์น๊ฒ ๊ด๋ฒ์ํ ๊ถํ์ ๋ถ์ฌํ๋ ๊ฒ์ ํผํ์ธ์.
- ํ๊ฒฝ ๋ณ์: API ํค ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๊ฒฉ ์ฆ๋ช ๊ณผ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ ์ฝ๋์ ํ๋์ฝ๋ฉํ๋ ๋์ ํ๊ฒฝ ๋ณ์์ ์ ์ฅํ์ธ์.
- ์๋ ์ ํ(Rate Limiting): ๋จ์ฉ ๋ฐ ์๋น์ค ๊ฑฐ๋ถ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์๋ ์ ํ์ ๊ตฌํํ์ธ์.
- ์ ๊ธฐ์ ์ธ ๋ณด์ ๊ฐ์ฌ: ์ ์ฌ์ ์ธ ์ทจ์ฝ์ ์ ์๋ณํ๊ณ ํด๊ฒฐํ๊ธฐ ์ํด ์ ๊ธฐ์ ์ธ ๋ณด์ ๊ฐ์ฌ๋ฅผ ์ํํ์ธ์.
๋น์ฉ ๊ด๋ฆฌ ์ ๋ต
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค๋ ๋น์ฉ ํจ์จ์ ์ผ ์ ์์ง๋ง, ๋น์ฉ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ์ ๋ต์ ๊ตฌํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ํจ์ ์คํ ์๊ฐ ์ต์ ํ: ์ฝ๋๋ฅผ ์ต์ ํํ๊ณ ๋ถํ์ํ ์์ ์ ์ต์ํํ์ฌ ํจ์์ ์คํ ์๊ฐ์ ์ค์ด์ธ์.
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ต์ํ: ํจ์์ ์ ์ ํ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ์ธ์. ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ฉด ๋น์ฉ์ด ์ฆ๊ฐํ ์ ์์ผ๋ฏ๋ก ํผํ์ธ์.
- ์บ์ฑ ์ฌ์ฉ: ์์ฃผ ์ก์ธ์คํ๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ์ฌ ํจ์ ํธ์ถ ํ์๋ฅผ ์ค์ด์ธ์.
- ์ฌ์ฉ๋ ๋ชจ๋ํฐ๋ง: ํจ์ ์ฌ์ฉ๋์ ์ ๊ธฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ๋น์ฉ์ ์ค์ผ ์ ์๋ ์์ญ์ ์๋ณํ์ธ์.
- ์ฌ๋ฐ๋ฅธ ๋ฆฌ์ ์ ํ: ์ฌ์ฉ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฆฌ์ ์ ํจ์๋ฅผ ๋ฐฐํฌํ์ฌ ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํค์ธ์. ๊ทธ๋ฌ๋ ๋ฆฌ์ ๋ณ๋ก ๊ฐ๊ฒฉ์ด ๋ค๋ฅผ ์ ์์์ ์ ์ํ์ธ์.
- ์์ฝ๋ ๋์์ฑ ๊ณ ๋ ค: ์ผ๊ด๋ ์ฑ๋ฅ์ด ํ์ํ ์ค์ํ ํจ์์ ๊ฒฝ์ฐ, ์์ฝ๋ ๋์์ฑ์ ์ฌ์ฉํ์ฌ ํน์ ์์ ํจ์ ์ธ์คํด์ค๊ฐ ํญ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค์ ๋ฏธ๋
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ๋ถ์ผ์ ๋๋ค. ์์ผ๋ก ๋ช ๋ ๋์ FaaS ํ๋ซํผ์ ์ถ๊ฐ์ ์ธ ๋ฐ์ , ๊ฐ์ ๋ ๋๊ตฌ, ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ์ ์ฑํ ์ฆ๊ฐ๋ฅผ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
๋ช ๊ฐ์ง ์ ์ฌ์ ์ธ ๋ฏธ๋ ๋ํฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ฃ์ง ์ปดํจํ : ์ง์ฐ ์๊ฐ์ ๋์ฑ ์ค์ด๊ธฐ ์ํด ๋คํธ์ํฌ ์ฃ์ง์ ๋ ๊ฐ๊น์ด ๊ณณ์ ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
- ์น์ด์ ๋ธ๋ฆฌ(Wasm): ์น์ด์ ๋ธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ๋ ๊ธฐํ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ํ๊ฒฝ์์ ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์คํํฉ๋๋ค.
- AI ๊ธฐ๋ฐ ํจ์: ์ธ๊ณต ์ง๋ฅ ๋ฐ ๋จธ์ ๋ฌ๋ ๊ธฐ๋ฅ์ ์๋ฒ๋ฆฌ์ค ํจ์์ ํตํฉํฉ๋๋ค.
- ๊ฐ์ ๋ ๊ฐ๋ฐ์ ๊ฒฝํ: ์๋ฒ๋ฆฌ์ค ํจ์ ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํ ๋ณด๋ค ๊ฐ์ํ๋ ๋๊ตฌ ๋ฐ ์ํฌํ๋ก์ฐ.
- ์๋ฒ๋ฆฌ์ค ์ปจํ ์ด๋: ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์ ์ด์ ๊ณผ ์ปจํ ์ด๋ํ์ ์ ์ฐ์ฑ์ ๊ฒฐํฉํฉ๋๋ค.
๊ฒฐ๋ก
์๋น์คํ ํจ์(FaaS)์ ์ํด ์ฃผ๋๋๋ ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ๋ ํ๋์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ํ๋ก ํธ์๋๋ฅผ ์ ํต์ ์ธ ๋ฐฑ์๋ ์๋ฒ์์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋๋ ๋ฐ ์ง์คํ๋ฉด์ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์ ํ์ฅ์ฑ, ๋น์ฉ ํจ์จ์ฑ ๋ฐ ๋ณด์ ์ด์ ์ ํ์ฉํ ์ ์์ต๋๋ค. ์๋ฒ๋ฆฌ์ค ์ํ๊ณ๊ฐ ๊ณ์ ์ฑ์ํด์ง์ ๋ฐ๋ผ ์์ผ๋ก ๋ช ๋ ์์ ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค์ ํจ์ฌ ๋ ํ์ ์ ์ธ ์ ์ฉ์ ๋ณด๊ฒ ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค. ์ด๋ฌํ ํจ๋ฌ๋ค์ ๋ณํ๋ฅผ ์์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ ์ธ๊ณ ๊ณ ๊ฐ์ ์ํด ๋ ๋น ๋ฅด๊ณ , ๋ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ, ๋ ํจ์จ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋ ํ์ ์ป๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ง๋ฆฌ์ ์์น๋ ์ธํ๋ผ ์ ๊ทผ์ฑ์ ๊ด๊ณ์์ด ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์๊ฒ ํ์ ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ์ฌํ๊ณ ๊ตฌ์ถํ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋น์ฉ ํจ์จ์ ์ธ ์ธํ๋ผ์ ๋ํ ์ ๊ทผ์ ์ ๊ณตํจ์ผ๋ก์จ ์๊ท๋ชจ ํ๊ณผ ๊ฐ์ธ ๊ฐ๋ฐ์๊ฐ ๋๊ท๋ชจ ์กฐ์ง๊ณผ ๊ฒฝ์ํ ์ ์๋๋ก ํ์ ์ค์ด์ค๋๋ค. ์น ๊ฐ๋ฐ์ ๋ฏธ๋๋ ์์ฌํ ์ฌ์ง ์์ด ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ๋ก ๋์๊ฐ๊ณ ์์ผ๋ฉฐ, ์ด ํจ๋ฌ๋ค์์ ์ดํดํ๊ณ ์ฑํํ๋ ๊ฒ์ ๋์์์ด ์งํํ๋ ์ด ์ฐ์ ์์ ์์ ๋๊ฐ๊ธฐ ์ํด ๋งค์ฐ ์ค์ํฉ๋๋ค.