๋ฐ์ดํฐ ํต์ ๊ตฌ์กฐ - EDA์ ์ด์
์ฌ๋ฌ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋ถ๋ฆฌ๋ ์๋ฒ๋ค์ ํต์ ์ ๋ถ๊ฐํผํ๋ค.
์๋น์ค ๋ด์ ํต์ ๊ตฌ์กฐ, ์๋น์ค ๊ฐ์ ํต์ ๊ตฌ์กฐ๋ ์ ์ฐ์ฑ, ํ์ฅ์ฑ, ํจ์จ์ฑ์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ค.
์๋๋ฆฌ์ค #1
ํ ํ์์ ์๋ก์ด ๋น์ฆ๋์ค ์๊ฑด์ ๊ตฌํํ๋ฉด์ ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ๋ค.
- ๊ธฐ์กด ํ๋ก์ ํธ์ ์ถ๊ฐํ๋ค
์ด ์ํฉ์์ ๋น ๋ฅด๊ณ ์ฌ์ด ๋ฐฉ๋ฒ์ผ ๊ฒ์ด๋ค.
์ด๋ฏธ ํ์ํ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ฐ๊ฒฐ๋์ด ์๊ณ , ๋ก๊น , ๋ชจ๋ํฐ๋ง, ๋ฐฐํฌ, ๋กค๋ฐฑ ํ๋ก์ธ์ค ๋ฑ ์ฌ๋ฌ ํ๊ฒฝ์ด ๊ตฌ์ถ๋์ด ์๋ค.
ํ์ง๋ง ์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉด์ ๊ธฐ์กด ์ฝ๋์ ์ฎ์ด๋ฉฐ ๊ตฌํ์ฒด ๋ด๋ถ ๊ฒฝ๊ณ๊ฐ ๋ชจํธํด์ง ์ ์๋ค.
๊ฒฐํฉ๋๋ ์ฌ๋ผ๊ฐ๊ณ ์์ง๋๋ ๋จ์ด์ง๋ ๊ฒ์ด๋ค.
- ์๋ก์ด ์๋น์ค๋ก ๊ตฌํํ๋ค
ํ์ฅ์ฑ์ ์๊ฐํ๋ค๋ฉด ๋ชจ๋ํํ ๋ ๋ฆฝ์ ์ธ ์์คํ ์ด ๋ ์ข์๋ณด์ด๊ธฐ๋ ํ๋ค.
์๋ก์ด ๊ธฐ๋ฅ์ ์ ๋ฐ์ดํฐ๋ ์ฐธ์กฐํด์ผ ํ๋๋ฐ, ๊ธฐ์กด ์๋น์ค์ ๋ฐ์ดํฐ๊ฐ ๋ฌถ์ฌ์๋ค.
์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ์๋ก ๋ณต์ฌํ ๋ฐฉ๋ฒ์ด ํ์ํ๊ณ , ๊ทธ ๊ณผ์ ์์ ๋ด๋ถ ๋ก์ง์ด ๋ ธ์ถ๋์ง ์๋๋ก ์ ๊ฒฝ์จ์ผ ํ๋ค.
๋ํ ๋ณต์ฌ ๊ณผ์ ์์ ๊ณผ๋ํ ๋ถํ, ๋๊ธฐํ ์คํจ, ์์กด๊ด๊ณ ๋ฐ์, ์๋ชป๋ ๋ฐ์ดํฐ ์ฌ์ฉ ๋ฑ ์ฌ๋ฌ ๋ฌธ์ ์ ์ด ์๊ธธ ์ ์๋ค.
๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ณต์ฌํ๋๋ผ๋, ๊น๋น ์ง(stale) ๋ฐ์ดํฐ๊ฐ ๋์ง ์๋๋ก ๋๊ธฐํ ์์ ์ด ํ์ํ๋ค.
์ด๋ฒคํธ ๊ธฐ๋ฐ ํต์ ๊ตฌ์กฐ
์ ์๋๋ฆฌ์ค์์ ๊ฒฐํฉ๋์ ํ์ฅ์ฑ์ ๊ณ ๋ คํ์ฌ ์๋ก์ด ์๋น์ค๋ฅผ ๊ตฌ์ถํ๋ ค๊ณ ํ์ง๋ง, ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ์ฌ๋ฌ ๋ฌธ์ ๋ค์ด ์๋ค.
์ค์ ๋ก ๋๋ MSA ํ๋ก์ ํธ๋ฅผ ์ค๊ณํ๋ฉฐ ์ ๋ง ๋ง์ด ๊ณ ๋ฏผํ๋, ๋ง์ดํฌ๋ก์๋น์ค์ ๋ฐ์ดํฐ๋ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค.
- ์ด๋ค ์๋น์ค๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์์ ํด์ผ ํ๋์ง?
- ๋ฐ์ดํฐ๋ ์ด๋์ ๋์ด์ผ ํ๋์ง?
- ๋ ์๋น์ค๊ฐ ๋ชจ๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง?
์ด๋ฒคํธ ๊ธฐ๋ฐ ํต์ ์ ๊ธฐ์กด์ ๊ตฌํ/๋ฐ์ดํฐ ํต์ ๊ตฌ์กฐ์ ๋์์ด๋ค.
๋น์ MSA๋ฅผ ์ ๋ชฐ๋๋ ์์ ์ ์ด์ฌํ ๊ตฌ๊ธ๋งํด์ ๊ตฌํํ ์ํคํ ์ฒ์ธ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ก ํด๊ฒฐํ๋ค.
์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ ๋ฐฉ์์ ๋ฐ์ดํฐ ์์ฐ/์์ ์ ๋ฐ์ดํฐ ์ ๊ทผ์ด ์ฒ ์ ํ๊ฒ ๋ถ๋ฆฌ๋๊ธฐ ๋๋ฌธ์
์๋น์ค๋ ๋์ด์ ์ง์ ์์ฒญ-์๋ต API์ ์ฝ๋งค์ด์ง ์๊ณ , ์ด๋ฒคํธ๋ฅผ ํตํด ์ํตํ๋ค.
Producer๋ ๊ทธ์ ์ด๋ฒคํธ ์คํธ๋ฆผ์ ์ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ฐํ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๋ค๋ฅธ ์๋น์ค์์ ๊ด์ฌ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ฉ ์ด๋ฒคํธ ์คํธ๋ฆผ ์ธํธ์ ๋ฐํํจ์ผ๋ก์จ ๋ฐ์ดํฐ์ ์์ฐ๊ณผ ์์ ๊ถ์ ์์ ํ ๋ถ๋ฆฌํ ๊ฒ์ด๋ค.
๋์จํ ๊ฒฐํฉ๊ณผ ๋์ ์์ง๋๋ฅผ ์ค์ํ ์ ์๊ฒ ๋๋ค.
๋ํ, Producer์ Consumer๋ Pub/Sub ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฐ์ดํฐ๊ฐ ํ์ํ ์๋ก์ด ์๋น์ค/๊ธฐ๋ฅ์ ์ธ์ ๋ ์ง ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋ ํด์ ์ฌ์ฉํ๊ณ , ์ํ๋ ๋ฐ์ดํฐ๋ง ์ถ์ถํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๋น๋๊ธฐ์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค
๋น๋๊ธฐ์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ์ ์ค์ํ ์ด์ ๋ค์ ์ ๋ฆฌํด ๋ณด๊ฒ ๋ค.
- ์ธ๋ถ์ฑ(granularity) :์๋น์ค๊ฐ ๊ฒฝ๊ณ ์ปจํ ์คํธ์ ์๋ง๊ฒ ๋งคํ, ์๊ฑด์ด ๋ฐ๋์ด๋ ์ฝ๊ฒ ์ฌ์์ฑ ํ ์ ์์
- ํ์ฅ์ฑ(scalability) : ํ์ ์ ๊ท๋ชจ๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์ค์ผ ์ ์์
- ๊ธฐ์ ์ ์ฐ์ฑ(technological flexibility) : ์๋น์ค๋ง๋ค ํ์ํ ์ธ์ด, ๊ธฐ์ ๋ก ๊ตฌํํ ์ ์์
- ๋น์ฆ๋์ค ์๊ฑด ์ ์ฐ์ฑ(business requirement flexibility) : ๋จ์๊ฐ ์์ ์๋น์ค๋ ์๊ฑด ๋ณํ์ ์ ์ํ๊ฒ ๋์ํ ์ ์์
- ๋์จํ ๊ฒฐํฉ(loosely coupling) : ์ด๋ค ํน์ ํ ๊ตฌํ API์ ๊ตฌ์ ๋ฐ์ง ์์.
- ์ง์์ ์ ๋ฌ ์ง์(continuous delivery support) : ์ฎ๊ธฐ๊ธฐ ์ฝ๊ณ ๊ฐํธํ๊ฒ ๋กค๋ฐฑํ ์ ์์.
- ์ฐ์ํ ์ํ์ฑ(high testability) : ๊ท๋ชจ๊ฐ ํฐ ๋ชจ๋๋ฆฌ์ค๋ณด๋ค ์์กด์ฑ์ด ์ ์ด ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ์ ์ง๊ฐ ์ฌ์.
๊ฒฝ๊ณ ์ปจํ ์คํธ๊ฐ ๋์จํ ๊ฒฐํฉ - EDA์ ์ค๊ณ
DDD์์ ๋ฑ์ฅํ๋ ๊ฐ๋ ์ธ ๊ฒฝ๊ณ ์ปจํ ์คํธ(Bounded Context)๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ํ ๊ฐ์ ๋ชจ๋ธ์ ๊ฐ์ง๋ฉฐ, ๊ฐ ๋ชจ๋ธ์ ๊ฒฝ๊ณ๋ฅผ ๊ฒฐ์ ํ๋ค.
๊ฒฝ๊ณ ์ปจํ ์คํธ๋ ์์ง๋ ฅ์ด ๊ฐํด์ผํ๊ณ , ๊ฒฝ๊ณ ์ปจํ ์คํธ๋ผ๋ฆฌ๋ ๋์จํ๊ฒ ๊ฒฐํฉ๋์ด์ผ ํ๋ค.
์์ง๋๋ ๋๊ฒ, ๊ฒฐํฉ๋๋ ๋ฎ๊ฒ
ํ์ ์ํคํ ์ฒ, ๊ฐ๋ ๊ณต๋ถ๋ฅผ ํ ๋ ์์ฃผ ๋ฃ๋ ๋ง์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด ๊ฒฝ๊ณ ์ปจํ ์คํธ๋ ์ด๋ค ๊ธฐ์ค์ ์ค์ฌ์ผ๋ก ์ ํด์ผ ํ ๊น?
๊ฒฝ๊ณ ์ปจํ ์คํธ : ๊ธฐ์ ์๊ฑด vs ๋น์ฆ๋์ค ์๊ฑด
๋ง์ฝ ์ผํ๋ชฐ ์๋ฒ๋ฅผ ๊ฐ๋ฐํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๊ธฐ์ ์๊ฑด ๋๋ ๋น์ฆ๋์ค ์๊ฑด ์ค์ฌ์ผ๋ก ๊ฒฝ๊ณ ์ปจํ ์คํธ๋ฅผ ๊ฒฐ์ ํ๋ ค๊ณ ํ๋ค.
์ด๋ค ํ๋ก๋ํธ์ ๋ํ ๋น์ฆ๋์ค ์๊ฑด์ ์์๋ก ๋ณ๊ฒฝ๋๋ค.
๋ฐ๋๋ก, ๋น์ฆ๋์ค ์๊ฑด ๋ณ๊ฒฝ ์์ด ์ ํ์ ๊ทผ๋ณธ์ ์ธ ๊ตฌํ์ฒด๋ฅผ ๋ฏ์ด๊ณ ์น๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๋ค.
๊ฒฝ๊ณ ์ปจํ ์คํธ๋ฅผ ๊ธฐ์ ์๊ฑด์ด ์๋ ๋น์ฆ๋์ค ์๊ฑด ์ค์ฌ์ผ๋ก ์ ํด์ผ ํ๋ ์ด์ ์ด๋ค.
ํ๋ณ๋ก ๋น์ฆ๋์ค ์๊ฑด์ ๋ฐ๋ผ ๋๋๊ณ , ๋์จํ๊ฒ ๊ฒฐํฉํ์ฌ
์์ง๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ตฌ์ถํ์ฌ ๊ฐ ํ๋ณ ์๊ฑด์๋ง ์ ๋ ํ ์ ์๋ ํ๊ฒฝ์ด์ด์ผ ํ๋ค.
๋ง์ฝ ๊ฒฝ๊ณ๋ฅผ ๊ธฐ์ ์๊ฑด์ ๋ง์ถ๊ฒ ๋๋ค๋ฉด, ์ฌ๋ฌ ๊ฒฝ๊ณ์ ๊ฑธ์ณ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ์ํํ ์ฑ ์์ด ์ฌ๋ฌ ํ์ผ๋ก ๋ถ์ฐ๋๋ค.
ํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ค๋ฉด ํ๋ณ๋ก ๋ค๋ฅธ ์ค์ผ์ค๋ก ์งํํด์ผ ํ๋ ๋นํจ์จ์ ์ธ ์ํฉ์ด ์ผ์ด๋๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋น์ฆ๋์ค ์๊ฑด์ ๋ฐ๋ฅธ ๊ฒฝ๊ณ ๋ด์์
๊ฐ ์๋น์ค๊ฐ ์ฝ๋, DB๋ฑ ์์ ์ ๋ ์ด์ด๋ฅผ ์์์ ์ฑ ์์ง๋ ๊ฐ์ ์์ (sole ownership) ๊ตฌ์กฐ๊ฐ ๋ฐ๋์งํ๋ค.
์ฌ๊ธฐ์ ์ฝ๋๊ฐ ์ค๋ณต๋๊ฑฐ๋ ๋น์ทํ ํจํด์ด ๋์ฌ ์๋ ์๋๋ฐ, (์ค์ ๋ก๋ ๊ทธ๋ฌ๋ค)
์ฅ๊ธฐ์ ์ธ ๊ด์ ์์๋ ๋ฐ์ดํฐ ์์ค๋ฅผ ๊ณต์ ํ๊ฑฐ๋ ๊ฒฝ๊ณ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ ๋ณด๋ค ๋ก์ง์ ๋ฐ๋ณตํ๊ฑฐ๋ ๋น์ทํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๊ฒ ํจ์ฌ ๋ซ๋ค.
์ฐธ๊ณ
Building Event-Driven Microservices: Leveraging Organizational Data at Scale, ์ ๋ค ๋ฒจ๋ฉ์ด
'BackEnd' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์์ ํ ์ด๋ฒคํธ ๋ฐํ ๋ฐฉ๋ฒ (0) | 2024.11.05 |
---|