์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ(EDA)์ AWS Lambda ํจ์๋ฅผ ์ฌ์ฉํ ๊ตฌํ์ ์ดํด๋ณด์ธ์. ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ ์ด์ , ์ฌ์ฉ ์ฌ๋ก, ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ๊ณ ๊ธ ํจํด์ ๋ํด ์์๋ณด์ธ์.
์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ: ๋๋ค ํจ์ ์ฒ๋ฆฌ์ ๋ํ ์ฌ์ธต ๋ถ์
์ค๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ๋์งํธ ํ๊ฒฝ์์ ๊ธฐ์ ์ ํ์ฅ์ฑ, ๋ฐ์์ฑ ๋ฐ ์์ ์ฑ์ด ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌํฉ๋๋ค. ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ(EDA)๋ ์ด๋ฌํ ์์คํ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ํจ๋ฌ๋ค์์ ์ ๊ณตํฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์๋ EDA๋ฅผ ์์ธํ ์ดํด๋ณด๊ณ ํนํ AWS Lambda ํจ์๋ฅผ ์ฌ์ฉํ ๊ตฌํ์ ์ค์ ์ ๋๊ณ ์ ์ธ๊ณ์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ์ด์ , ์ฌ์ฉ ์ฌ๋ก, ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ๊ณ ๊ธ ํจํด์ ์ดํด๋ด ๋๋ค.
์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ(EDA)๋ ๋ฌด์์ ๋๊น?
์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ ์๋น์ค๊ฐ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ณ ๋ฐ์ํ์ฌ ํต์ ํ๋ ๋ถ์ฐ ๋น๋๊ธฐ ์ํคํ ์ฒ ํจํด์ ๋๋ค. ์ด๋ฒคํธ๋ ์ํ์ ์ค์ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋๋ค. ์ํ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด ์๋น์ค๋ ์ด๋ฒคํธ๋ฅผ ๊ฒ์ํ๊ณ , ํด๋น ์ด๋ฒคํธ์ ๊ด์ฌ ์๋ ๋ค๋ฅธ ์๋น์ค์์ ํด๋น ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ๋์ปคํ๋ง์ ํตํด ์๋น์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํ๊ณ ์์คํ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ๋์ํ ์ ์์ต๋๋ค.
EDA์ ์ฃผ์ ํน์ง:
- ๋น๋๊ธฐ ํต์ : ์๋น์ค๋ ๋ค๋ฅธ ์๋น์ค์ ์๋ต์ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค.
- ๋์จํ ๊ฒฐํฉ: ์๋น์ค๋ ๋ ๋ฆฝ์ ์ด๋ฉฐ ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ๋ฐ, ๋ฐฐํฌ ๋ฐ ํ์ฅํ ์ ์์ต๋๋ค.
- ํ์ฅ์ฑ: ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๊ฐ๋ณ ์๋น์ค๋ฅผ ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค.
- ์๋ต์ฑ: ์๋น์ค๋ ์ด๋ฒคํธ์ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ์ฌ ๋์ฑ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
- ์ ์ฐ์ฑ: ์ ์ฒด ์์คํ ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์๋น์ค๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
AWS Lambda: ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์๋น์ค
AWS Lambda๋ ์๋ฒ๋ฅผ ํ๋ก๋น์ ๋ํ๊ฑฐ๋ ๊ด๋ฆฌํ์ง ์๊ณ ๋ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์๋น์ค์ ๋๋ค. ์ฝ๋๋ฅผ "Lambda ํจ์"๋ก ์ ๋ก๋ํ๊ธฐ๋ง ํ๋ฉด AWS์์ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํฉ๋๋ค. Lambda ํจ์๋ Amazon S3, Amazon DynamoDB, Amazon API Gateway ๋ฐ Amazon SNS์ ๊ฐ์ ๋ค์ํ AWS ์๋น์ค์ ์ด๋ฒคํธ์ ์ํด ํธ๋ฆฌ๊ฑฐ๋๋ฏ๋ก EDA๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ด์์ ์ธ ์ ํ์ ๋๋ค.
EDA์ Lambda๋ฅผ ์ฌ์ฉํ๋ ์ฃผ์ ์ด์ :
- ์๋ฒ ๊ด๋ฆฌ ๋ถํ์: ์๋ฒ ๊ด๋ฆฌ ์ค๋ฒํค๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
- ์๋ ํ์ฅ: Lambda๋ ๋ค์ด์ค๋ ์ด๋ฒคํธ ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋์ผ๋ก ํ์ฅ๋ฉ๋๋ค.
- ์ข ๋์ ๊ฐ๊ฒฉ ์ฑ ์ : ํจ์๊ฐ ์๋นํ๋ ์ปดํจํ ์๊ฐ์ ๋ํด์๋ง ๋น์ฉ์ ์ง๋ถํฉ๋๋ค.
- AWS ์๋น์ค์์ ํตํฉ: ๋ค๋ฅธ AWS ์๋น์ค์ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค.
- ๊ณ ๊ฐ์ฉ์ฑ: Lambda ํจ์๋ ๊ฐ์ฉ์ฑ์ด ๋๊ณ ๋ด๊ฒฐํจ์ฑ์ด ์์ต๋๋ค.
Lambda ํจ์๊ฐ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ
Lambda ํจ์๊ฐ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ํ๋ก์ธ์ค๋ ๋ค์ ๋จ๊ณ๋ก ๋๋ ์ ์์ต๋๋ค.
- ์ด๋ฒคํธ ์์ค: AWS ์๋น์ค์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค(์: ํ์ผ์ด S3์ ์ ๋ก๋๋จ).
- ์ด๋ฒคํธ ํธ๋ฆฌ๊ฑฐ: ์ด๋ฒคํธ๊ฐ Lambda ํจ์๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
- Lambda ํธ์ถ: Lambda ์๋น์ค๋ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ง์ ๋ ํจ์๋ฅผ ์คํํฉ๋๋ค.
- ํจ์ ์คํ: Lambda๋ ์ฝ๋๋ฅผ ์คํํ์ฌ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
- ์๋ต/์ถ๋ ฅ: ํจ์๋ ์๋ต์ ๋ฐํํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฑฐ๋ ๋ค๋ฅธ ์ด๋ฒคํธ๋ฅผ ๊ฒ์ํ๋ ๋ฑ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
์: Lambda ๋ฐ S3๋ฅผ ์ฌ์ฉํ ์ด๋ฏธ์ง ์ฒ๋ฆฌ: Amazon S3 ๋ฒํท์ ์ ๋ก๋๋ ์ด๋ฏธ์ง์ ์ธ๋ค์ผ์ ์๋์ผ๋ก ์์ฑํ๋ ค๋ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด ๋ณด์ญ์์ค. ๋ค์ ๋จ๊ณ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
- ์ด๋ฏธ์ง๊ฐ S3 ๋ฒํท์ ์ ๋ก๋๋๋ฉด S3 ์ด๋ฒคํธ๊ฐ ์์ฑ๋ฉ๋๋ค.
- S3 ์ด๋ฒคํธ๊ฐ Lambda ํจ์๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
- Lambda ํจ์๊ฐ S3์์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- Lambda ํจ์๊ฐ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ฌ ์ธ๋ค์ผ์ ๋ง๋ญ๋๋ค.
- Lambda ํจ์๊ฐ ์ธ๋ค์ผ์ S3์ ๋ค์ ์ ๋ก๋ํฉ๋๋ค.
EDA์์ Lambda ํจ์ ์ฒ๋ฆฌ์ ์ฌ์ฉ ์ฌ๋ก
Lambda ํจ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ด๋ฒ์ํ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํฉ๋๋ค.
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ: ์ค์๊ฐ์ผ๋ก ๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ(์: ๋ก๊ทธ ๋ถ์, ๋ฐ์ดํฐ ๋ณํ).
- ์ค์๊ฐ ๋ถ์: ์ค์๊ฐ ๋์๋ณด๋ ๋ฐ ๋ณด๊ณ ์์คํ ๊ตฌ์ถ.
- ์นํํฌ: ํ์ฌ ์๋น์ค(์: GitHub, Slack)์์ ์นํํฌ ์ฒ๋ฆฌ.
- IoT ์ ํ๋ฆฌ์ผ์ด์ : IoT ์ฅ์น์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ(์: ์ผ์ ๋ฐ์ดํฐ, ์๊ฒฉ ์ธก์ ).
- ๋ชจ๋ฐ์ผ ๋ฐฑ์๋: ์๋ฒ๋ฆฌ์ค ๋ชจ๋ฐ์ผ ๋ฐฑ์๋ ๊ตฌ์ถ.
- ์ ์ ์๊ฑฐ๋: ์ฃผ๋ฌธ ์ฒ๋ฆฌ, ์ฌ๊ณ ๊ด๋ฆฌ ๋ฐ ๊ณ ๊ฐ ๊ฒฝํ ๊ฐ์ธํ.
๊ธ๋ก๋ฒ ์ ์ ์๊ฑฐ๋ ํ๋ซํผ
์ ์ ์๊ฑฐ๋ ํ๋ซํผ์ EDA๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฃผ๋ฌธ ๋ฐฐ์น: ์ฃผ๋ฌธ์ด ๋ฐฐ์น๋๋ฉด ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค. Lambda ํจ์๋ ์ฃผ๋ฌธ์ ์ฒ๋ฆฌํ๊ณ , ์ฌ๊ณ ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ , ๊ฒฐ์ ์ฒ๋ฆฌ๋ฅผ ์์ํฉ๋๋ค.
- ๊ฒฐ์ ํ์ธ: ๊ฒฐ์ ๊ฐ ์ฑ๊ณตํ๋ฉด ์ด๋ฒคํธ๊ฐ Lambda ํจ์๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ฌ ๊ณ ๊ฐ์๊ฒ ์ฃผ๋ฌธ ํ์ธ ์ด๋ฉ์ผ์ ๋ณด๋ด๊ณ ๋ฐฐ์ก์ ์ํด ์ฐฝ๊ณ ์ ์๋ฆฝ๋๋ค.
- ์ฌ๊ณ ์ ๋ฐ์ดํธ: ์ฌ๊ณ ์์ค์ด ๋ณ๊ฒฝ๋๋ฉด ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค. Lambda ํจ์๋ ๋ค์ํ ์ง์ญ์์ ์ ํ ๋ชฉ๋ก์ ์ ๋ฐ์ดํธํ๊ณ ์ฌ๊ณ ์์ค์ด ๋ฎ์ผ๋ฉด ์๋ฆผ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
๊ธ์ต ๊ฑฐ๋ ์ฒ๋ฆฌ
๊ธ์ต ๊ธฐ๊ด์ EDA๋ฅผ ํ์ฉํ์ฌ ์ค์๊ฐ์ผ๋ก ๊ฑฐ๋๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ค์ ์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
- ์ฌ๊ธฐ ํ์ง: ๊ฐ ๊ฑฐ๋์ ๋ํด ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค. Lambda ํจ์๋ ๊ฑฐ๋ ํจํด์ ๋ถ์ํ๊ณ ๊ฒํ ๋ฅผ ์ํด ์์ฌ์ค๋ฌ์ด ํ๋์ ํ์ํฉ๋๋ค.
- ์ค์๊ฐ ๋ณด๊ณ : ๊ฑฐ๋ ์ด๋ฒคํธ๋ Lambda ํจ์๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ฌ ์ฃผ์ ์ฑ๊ณผ ์งํ(KPI) ๋ชจ๋ํฐ๋ง์ ์ํ ์ค์๊ฐ ๋์๋ณด๋๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ๊ท์ ์ค์: ๊ฑฐ๋ ์ด๋ฒคํธ๋ Lambda ํจ์๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ฌ ๋ค์ํ ๊ดํ ๊ตฌ์ญ์ ๊ท์ ์ค์๋ฅผ ํ์ธํ๊ณ ํ์ํ ๋ณด๊ณ ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
Lambda๋ฅผ ์ฌ์ฉํ EDA์ ์ด์
- ํฅ์๋ ํ์ฅ์ฑ: ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๊ฐ๋ณ ์๋น์ค๋ฅผ ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค. Lambda๋ ์ด๋ฒคํธ ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋์ผ๋ก ํ์ฅ๋ฉ๋๋ค.
- ํฅ์๋ ์๋ต์ฑ: ์๋น์ค๋ ์ด๋ฒคํธ์ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ์ฌ ๋์ฑ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
- ๋น์ฉ ์ ๊ฐ: ์ข ๋์ ๊ฐ๊ฒฉ ์ฑ ์ ๋ชจ๋ธ์ ํนํ ๋ณ๋์ฑ์ด ํฐ ์ํฌ๋ก๋๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ๋น์ฉ์ ์ ๊ฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๊ฐ์ํ๋ ๊ฐ๋ฐ: ์ธํ๋ผ ๊ด๋ฆฌ์ ๋ํด ๊ฑฑ์ ํ์ง ์๊ณ ๋น์ฆ๋์ค ๋ก์ง ์์ฑ์ ์ง์คํฉ๋๋ค.
- ํฅ์๋ ๋ด๊ฒฐํจ์ฑ: ์๋น์ค๊ฐ ๋ถ๋ฆฌ๋์ด ์์ผ๋ฏ๋ก ํ ์๋น์ค์ ์ค๋ฅ๊ฐ ๋ค๋ฅธ ์๋น์ค์ ๋ฐ๋์ ์ํฅ์ ๋ฏธ์น์ง๋ ์์ต๋๋ค.
Lambda๋ฅผ ์ฌ์ฉํ EDA ๊ตฌ์ถ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
Lambda๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ EDA ์์คํ ์ ๊ตฌ์ถํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
- ์ฌ๋ฐ๋ฅธ ์ด๋ฒคํธ ์์ค ์ ํ: ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํ ์ด๋ฒคํธ ์์ค๋ฅผ ์ ํํฉ๋๋ค. (์: ํ์ผ ์ ๋ก๋์ฉ S3, pub/sub ๋ฉ์์ง์ฉ SNS, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณ๊ฒฝ ์ฌํญ์ฉ DynamoDB Streams).
- ์ด๋ฒคํธ ์ ์คํ๊ฒ ์ค๊ณ: ์ด๋ฒคํธ์ ์๋น์๊ฐ ์์ ์ ์ํํ๋ ๋ฐ ํ์ํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ ์ ์๋ ์ด๋ฒคํธ ์คํค๋ง๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ฉฑ๋ฑ์ฑ ๊ตฌํ: Lambda ํจ์๊ฐ ๋ฉฑ๋ฑ์ฑ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ฆ, ์๋ํ์ง ์์ ๋ถ์์ฉ์ ์ผ์ผํค์ง ์๊ณ ์ฌ๋ฌ ๋ฒ ์คํํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์๋๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ์ค๋ฅ๋ฅผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ: ์ผ์์ ์ธ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ์ฌ์๋ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํฉ๋๋ค. ์ฒ๋ฆฌํ ์ ์๋ ์ด๋ฒคํธ๋ฅผ ์ ์ฅํ๋ ค๋ฉด ๋ฐ๋ ๋ ํฐ ํ(DLQ)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น : Lambda ํจ์๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๋ฌธ์ ํด๊ฒฐ ๋ฐ ๋ถ์์ ์ํด ์ค์ํ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น ์๋ AWS CloudWatch๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ํจ์ ๋ณด์ ์ ์ง: IAM ์ญํ ์ ์ฌ์ฉํ์ฌ Lambda ํจ์์ ๋ค๋ฅธ AWS ์๋น์ค์ ์ก์ธ์คํ๋ ๋ฐ ํ์ํ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- ํจ์ ์ฑ๋ฅ ์ต์ ํ: ์ฑ๋ฅ์ ์ํด Lambda ํจ์ ์ฝ๋๋ฅผ ์ต์ ํํฉ๋๋ค. ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ข ์์ฑ ๋ฐ ์ฝ๋ ์คํํธ๋ฅผ ์ต์ํํฉ๋๋ค.
- ๋์์ฑ ์ ํ ๊ณ ๋ ค: Lambda์ ๋์์ฑ ์ ํ์ ์ธ์ํ๊ณ ํ์์ ๋ฐ๋ผ ์กฐ์ ํฉ๋๋ค. ์์ฝ๋ ๋์์ฑ์ ์ฌ์ฉํ์ฌ ํจ์๊ฐ ์ด๋ฒคํธ ๋ก๋๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ์ถฉ๋ถํ ์ฉ๋์ ํ๋ณดํฉ๋๋ค.
Lambda๋ฅผ ์ฌ์ฉํ EDA๋ฅผ ์ํ ๊ณ ๊ธ ํจํด
Lambda๋ฅผ ์ฌ์ฉํ EDA์ ๊ธฐ๋ณธ ๊ตฌํ ์ธ์๋ ๋์ฑ ์ ๊ตํ ์์คํ ์ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ๊ณ ๊ธ ํจํด์ด ์์ต๋๋ค.
์ด๋ฒคํธ ์์ฑ
์ด๋ฒคํธ ์์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์ํ์ ๋ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ด๋ฒคํธ ์ํ์ค๋ก ์ ์ฅ๋๋ ํจํด์ ๋๋ค. ๊ฐ์ฒด์ ํ์ฌ ์ํ๋ฅผ ์ ์ฅํ๋ ๋์ ํด๋น ์ํ๋ก ์ด์ด์ง ์ด๋ฒคํธ ๊ธฐ๋ก์ ์ ์ฅํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ธ์ ๋ ์ง ๊ฐ์ฒด์ ์ํ๋ฅผ ์ฌ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ด๋ฒคํธ ์์ฑ์ ์ด์ :
- ๊ฐ์ฌ ๊ฐ๋ฅ์ฑ: ์์คํ ์ ๋ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์์ ํ ๊ฐ์ฌ ์ถ์ ์ ์ํํฉ๋๋ค.
- ์ฌ์ ๊ฐ๋ฅ์ฑ: ์ด๋ฒคํธ๋ฅผ ์ฌ์ํ์ฌ ์์คํ ์ํ๋ฅผ ์ฌ๊ตฌ์ฑํ๊ฑฐ๋ ๊ธฐ๋ก ๋ถ์์ ์ํํ ์ ์์ต๋๋ค.
- ์๊ฐ์ ์ฟผ๋ฆฌ: ์ธ์ ๋ ์ง ์์คํ ์ํ๋ฅผ ์ฟผ๋ฆฌํ ์ ์์ต๋๋ค.
์:
๊ณ ๊ฐ ์ฃผ๋ฌธ์ ์ถ์ ํ๊ธฐ ์ํด ์ด๋ฒคํธ ์์ฑ์ ์ฌ์ฉํ๋ ์ ์ ์๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ ๋ คํด ๋ณด์ญ์์ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฃผ๋ฌธ์ ํ์ฌ ์ํ๋ฅผ ์ ์ฅํ๋ ๋์ "OrderCreated", "ItemAdded", "PaymentReceived", "OrderShipped" ๋ฐ "OrderDelivered"์ ๊ฐ์ ์ด๋ฒคํธ ์ํ์ค๋ฅผ ์ ์ฅํฉ๋๋ค. ์ฃผ๋ฌธ์ ํ์ฌ ์ํ๋ฅผ ๊ฒ์ํ๋ ค๋ฉด ํด๋น ์ฃผ๋ฌธ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ์ฌ์ํฉ๋๋ค.
CQRS(๋ช ๋ น ์ฟผ๋ฆฌ ์ฑ ์ ๋ถ๋ฆฌ)
CQRS๋ ๋ฐ์ดํฐ ์ ์ฅ์์ ๋ํ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ๋ถ๋ฆฌํ๋ ํจํด์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ๋ชจ๋ธ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ต์ ํํ ์ ์์ต๋๋ค. CQRS ์์คํ ์์๋ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํฉ๋๋ค. ๋ช ๋ น์ ์ผ๋ฐ์ ์ผ๋ก ์ฟผ๋ฆฌ์ ๋ค๋ฅธ ์๋น์ค์์ ์ฒ๋ฆฌํฉ๋๋ค.
CQRS์ ์ด์ :
- ํฅ์๋ ์ฑ๋ฅ: ์ฑ๋ฅ์ ์ํด ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ๋ชจ๋ธ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ต์ ํํ ์ ์์ต๋๋ค.
- ํฅ์๋ ํ์ฅ์ฑ: ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์๋น์ค๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค.
- ๊ฐ์ํ๋ ๊ฐ๋ฐ: ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๊ฐ์ํํ ์ ์์ต๋๋ค.
์:
CQRS๋ฅผ ์ฌ์ฉํ๋ ์จ๋ผ์ธ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ ๋ คํด ๋ณด์ญ์์ค. "MovePlayer" ๋ฐ "AttackEnemy"์ ๊ฐ์ ๋ช ๋ น์ ๊ฒ์ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๋ ์ฐ๊ธฐ ์๋น์ค์์ ์ฒ๋ฆฌํฉ๋๋ค. "GetPlayerLocation" ๋ฐ "GetEnemyHealth"์ ๊ฐ์ ์ฟผ๋ฆฌ๋ ๊ฒ์ ์ํ๋ฅผ ๊ฒ์ํ๋ ์ฝ๊ธฐ ์๋น์ค์์ ์ฒ๋ฆฌํฉ๋๋ค. ์ฝ๊ธฐ ์๋น์ค๋ ๋น ๋ฅธ ์ฝ๊ธฐ์ ์ต์ ํํ ์ ์๋ ๋ฐ๋ฉด, ์ฐ๊ธฐ ์๋น์ค๋ ์์ ์ ์ธ ์ฐ๊ธฐ์ ์ต์ ํํ ์ ์์ต๋๋ค.
ํฌ์์ ํจํด
ํฌ์์ ํจํด์ ๋จ์ผ ์ด๋ฒคํธ๋ฅผ ์ฌ๋ฌ ์๋น์์๊ฒ ๋ฐฐํฌํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ฉ๋๋ค. ์ด๋ Amazon SNS(Simple Notification Service)์ ๊ฐ์ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ฒคํธ๋ SNS ํ ํฝ์ ๊ฒ์๋ ๋ค์ ์ด๋ฒคํธ๋ฅผ ์ฌ๋ฌ ๊ตฌ๋ ์(์: Lambda ํจ์, SQS ํ)๋ก ์ ๋ฌํฉ๋๋ค.
ํฌ์์ ํจํด์ ์ด์ :
- ๋ณ๋ ฌ ์ฒ๋ฆฌ: ์ฌ๋ฌ ์๋น์๊ฐ ๋์ผํ ์ด๋ฒคํธ๋ฅผ ๋์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋์ปคํ๋ง: ์๋น์๋ ์๋ก ๋ ๋ฆฝ์ ์ด๋ฉฐ ๊ฒ์์์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
- ํ์ฅ์ฑ: ์ฒ๋ฆฌ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ์๋น์ ์๋ฅผ ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค.
์:
์์ ๋ฏธ๋์ด ํ๋ซํผ์ ํฌ์์ ํจํด์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ๊ฒ์๋ฌผ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ๋ง๋ค๋ฉด ์ด๋ฒคํธ๊ฐ SNS ํ ํฝ์ ๊ฒ์๋ฉ๋๋ค. ์ฌ๋ฌ Lambda ํจ์๊ฐ ์ด ํ ํฝ์ ๊ตฌ๋ ํฉ๋๋ค.
- ํ ํจ์๋ ๋ถ์ ์ ํ ์ฝํ ์ธ ์ ๋ํด ๊ฒ์๋ฌผ์ ๋ถ์ํฉ๋๋ค.
- ๋ค๋ฅธ ํจ์๋ ์ฌ์ฉ์ ํ์๋ผ์ธ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ธ ๋ฒ์งธ ํจ์๋ ๊ฒ์์ ์ํด ๊ฒ์๋ฌผ์ ์ธ๋ฑ์ฑํฉ๋๋ค.
์ค์บํฐ-๊ฐ๋ ํจํด
์ค์บํฐ-๊ฐ๋ ํจํด์ ๋จ์ผ ์์ฒญ์ ์ฌ๋ฌ ์๋น์ค๋ก ๋ณด๋ด๊ณ ("์ค์บํฐ" ๋จ๊ณ) ํด๋น ์๋น์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ง๊ณํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ฉ๋๋ค("๊ฐ๋" ๋จ๊ณ). ์ด ํจํด์ ์ฌ๋ฌ ์์ค์ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํ๊ฑฐ๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
์ค์บํฐ-๊ฐ๋ ํจํด์ ์ด์ :
- ๋ณ๋ ฌ ์ฒ๋ฆฌ: ์์ ์ ๋ณ๋ ฌ๋ก ์ํํ์ฌ ์ ์ฒด ์ฒ๋ฆฌ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์ง๊ณ: ์ฌ๋ฌ ์์ค์ ๋ฐ์ดํฐ๋ฅผ ๋จ์ผ ์๋ต์ผ๋ก ์ง๊ณํ ์ ์์ต๋๋ค.
- ๋ด๊ฒฐํจ์ฑ: ํ๋์ ์๋น์ค๊ฐ ์คํจํ๋๋ผ๋ ๋ค๋ฅธ ์๋น์ค์ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ๋ ๋ถ๋ถ ์๋ต์ ๋ฐํํ ์ ์์ต๋๋ค.
์:
ํญ๊ณตํธ ์์ฝ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์บํฐ-๊ฐ๋ ํจํด์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํญ๊ณต์ฌ์ ํญ๊ณตํธ์ ๊ฒ์ํ ์ ์์ต๋๋ค. ์์ฒญ์ ์ฌ๋ฌ ํญ๊ณต์ฌ API๋ก ์ ์ก๋ฉ๋๋ค("์ค์บํฐ" ๋จ๊ณ). ๊ฐ ํญ๊ณต์ฌ API์ ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์์๊ฒ ํ์๋๋ ๋จ์ผ ์๋ต์ผ๋ก ์ง๊ณ๋ฉ๋๋ค("๊ฐ๋" ๋จ๊ณ).
Lambda๋ฅผ ์ฌ์ฉํ EDA์ ๋ํ ๊ธ๋ก๋ฒ ๊ณ ๋ ค ์ฌํญ
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํด Lambda๋ฅผ ์ฌ์ฉํ์ฌ EDA ์์คํ ์ ๊ตฌ์ถํ ๋ ๋ค์ ์์๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ณด์กด: ๋ฐ์ดํฐ๊ฐ ํ์ง ๊ท์ ์ ์ค์ํ์ฌ ์ ์ฅ๋๊ณ ์ฒ๋ฆฌ๋๋์ง ํ์ธํฉ๋๋ค. ๋ฐ์ดํฐ ๋ณด์กด ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด ๋ค๋ฅธ ์ง๋ฆฌ์ ์์น์ AWS ๋ฆฌ์ ์ ์ฌ์ฉํฉ๋๋ค.
- ์ง์ฐ ์๊ฐ: ์ฌ์ฉ์์๊ฒ ๊ฐ๊น์ด AWS ๋ฆฌ์ ์ Lambda ํจ์๋ฅผ ๋ฐฐํฌํ์ฌ ์ง์ฐ ์๊ฐ์ ์ต์ํํฉ๋๋ค. Amazon CloudFront๋ฅผ ์ฌ์ฉํ์ฌ ์ฝํ ์ธ ๋ฅผ ์บ์ฑํ๊ณ ์ ์ ์์ฐ์ ์ง์ฐ ์๊ฐ์ ์ค์ ๋๋ค.
- ํ์งํ: ๋ค์ํ ์ธ์ด ๋ฐ ๋ฌธํ์ ๋ง๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์งํํฉ๋๋ค. AWS Lambda๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ค์ํ ์ธ์ด๋ก ์๋ต์ ์์ฑํฉ๋๋ค.
- ์๊ฐ๋: ์๊ฐ๋๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ์ผ๊ด๋ ์๊ฐ๋๋ฅผ ์ฌ์ฉํ๊ณ ํ์์ ๋ฐ๋ผ ์๊ฐ๋๋ฅผ ๋ณํํฉ๋๋ค.
- ํตํ: ์ฌ๋ฌ ํตํ๋ฅผ ์ง์ํฉ๋๋ค. AWS Lambda๋ฅผ ์ฌ์ฉํ์ฌ ํตํ ๊ฐ์ ๋ณํํ๊ณ ํ์ง ํตํ๋ก ๊ฐ๊ฒฉ์ ๊ณ์ฐํฉ๋๋ค.
- ๊ท์ ์ค์: ์ ํ๋ฆฌ์ผ์ด์ ์ด GDPR, HIPAA ๋ฐ PCI DSS์ ๊ฐ์ ๋ชจ๋ ๊ด๋ จ ๊ท์ ์ ์ค์ํ๋์ง ํ์ธํฉ๋๋ค.
๊ฒฐ๋ก
์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ AWS Lambda์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๊ณผ ๊ฒฐํฉ๋์ด ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ฐ๋ ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. EDA์ ํต์ฌ ๊ฐ๋ ์ ์ดํดํ๊ณ Lambda์ ์๋ฒ๋ฆฌ์ค ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ๊ฐ๋ฐ์๋ ๋ฐ์์ฑ์ด ๋ฐ์ด๋๊ณ ์์ ์ ์ด๋ฉฐ ๋น์ฉ ํจ์จ์ ์ธ ์์คํ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฒคํธ ์์ฑ, CQRS ๋ฐ ํฌ์์ ํจํด๊ณผ ๊ฐ์ ๊ณ ๊ธ ํจํด์ ์์ฉํ๋ฉด EDA ๊ตฌํ ๊ธฐ๋ฅ์ด ๋์ฑ ํฅ์๋ฉ๋๋ค. ๋น์ฆ๋์ค๊ฐ ์ ์ธ๊ณ์ ์ผ๋ก ๊ณ์ ํ์ฅ๋จ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ๋ณด์กด, ์ง์ฐ ์๊ฐ, ํ์งํ ๋ฐ ๊ท์ ์ค์๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ํํ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ด๋ฌํ ์ ๋ต์ ์ ์คํ๊ฒ ๊ณํํ๊ณ ๊ตฌํํจ์ผ๋ก์จ ์กฐ์ง์ Lambda๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ๊ณ ๋ฏธ๋์ ๋๋นํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.