-
์ด๋ฒคํธ ๋๋ฆฌ๋ธ ์ํคํ ์ฒ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋ฅผ ์ด๋ฒคํธ์ ์์ฑ๊ณผ ์ฒ๋ฆฌ๋ฅผ ์ค์ฌ์ผ๋ก ์ค๊ณํ๋ ํจํด.
-
ํ๋์ ์๋น์ค๊ฐ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ฉด ๋ค๋ฅธ ์๋น์ค๊ฐ ์ด๋ฅผ ๊ฐ์งํ๊ณ ๋ฐ์ํ๋ ๋ฐฉ์์ผ๋ก ๋์.
-
์๋น์ค ๊ฐ์ ๋์จํ ๊ฒฐํฉ์ ํตํด ํ์ฅ์ฑ, ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ฉฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํตํ ๋์ ์ฑ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- ๋จ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ,
- ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ํด ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ณ ๋ฆฝ์ฑ, ์ง์์ฑ) ์์น์ ์งํค๋ ๊ฒ์ด ์ค์.
- MSA๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์์, ๋
๋ฆฝ์ ์ด๋ฉฐ, ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์๋น์ค๋ก ๋ถ๋ฆฌํ๋ ์ค๊ณ ํจํด
- ๊ฐ ์๋น์ค๋ ์์ฒด DB๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ์ด๋ฅผ
ํด๋ฆฌ๊ธ๋(polgylot)
ํผ์์คํด์ค๋ผ๊ณ ํ์ฌ, - ์ ์ ํ ๋ฐ์ดํฐ ์ ์ฅ ๊ธฐ์ ์ ์๋น์ค๋ณ๋ก ์ ํํ ์ ์๋๋ก ํ๋ค.
- ์๋น์ค๋ค์ API๋ฅผ ํตํด ์๋ก ํต์ ํ๋ฉฐ, ๊ฐ ์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ, ๋ฐฐํฌ, ํ์ฅ๋ ์ ์๊ฒ ํ๋ค.
- ๊ฐ ์๋น์ค๋ ์์ฒด DB๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ์ด๋ฅผ
Commit Transaction
์ ํด๋น ํธ๋์ญ์ ์ ๋ชจ๋ ์์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ฆฌ๋ ๊ฒ.- ์ด ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํธ๋์ญ์ ์ ํฌํจ๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ ํ๊ณ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ.
Rollback Transaction
์ ํธ๋์ญ์ ์ค ํ๋๋ผ๋ ์คํจํ๋ฉด ํธ๋์ญ์ ์ ํฌํจ๋ ๋ชจ๋ ์์ ์ ์๋ ์ํ๋ก ๋๋๋ฆฌ๋ ๊ฒ.- ์ด๋ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ , ์คํจํ ์์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ชป๋ ์ํ๋ฅผ ๋จ๊ธฐ๋ ๊ฒ์ ๋ฐฉ์ง.
-
์ด๋ฒคํธ ์์ฑ์ ๋ฐ์ดํฐ์ ๋ง์ง๋ง ์ํ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ, ๋ฐ์ดํฐ์ ๋ฐ์ํ ๋ชจ๋ ๋ณํ๋ฅผ ์์ฐจ์ ์ธ ์ด๋ฒคํธ๋ก ๊ธฐ๋กํ๋ ๋ฐฉ๋ฒ.
-
๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๋จ์ํด์ง๊ณ , ์์คํ ์ ์ํ๋ฅผ ์ด๋ค ์์ ์ผ๋ก๋ ๋๋๋ฆด ์ ์์ด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ๋ณด์ฅํ ์ ์๋ค.
-
๋ํ, ์ด๋ฒคํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ์ง์ ๋ณ๊ฒฝํ์ง ์๊ณ ์ด๋ฒคํธ ์คํธ๋ฆผ์ ์ถ๊ฐ๋๋ฏ๋ก, ๋์์ ์ฌ๋ฌ ์์ฒญ์ด ๋ฐ์ํด๋ ๋ฐ์ดํฐ ์ถฉ๋์ด ๋ฐ์ํ์ง ์๋๋ค.
-
๊ทธ๋ฌ๋ ์ ์ฒด ์ด๋ฒคํธ ํ์คํ ๋ฆฌ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก, ํฐ ๊ท๋ชจ์ ์์คํ ์์๋ ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์.
-
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ์์ ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ ํจํด.
-
๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ Command์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ Query์ ๋ ๊ฐ์ง ์ฑ ์์ ๋ถ๋ฆฌ.
-
Command๋ ์์คํ ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ์์ ์ ๋ด๋นํ๋ฉฐ, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๊ณ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํฌํจ.
-
Query๋ ์์คํ ์ ์ํ๋ฅผ ์ฝ์ด์ค๋ ์์ ์ ๋ด๋นํ๋ฉฐ, ๋ฐ์ดํฐ์ ํ์ฌ ์ํ๋ฅผ ํ์ํ๋ ๋ฐ ์ฌ์ฉ.
-
๋ถ์ฐ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก, ๋ชจ๋ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ๊ฐ๊ฐ์ ๋ก์ปฌ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์
-
ํฌ๊ฒ ๋ ๊ฐ์ง ์คํ์ผ, Choreography์ Orchestration์ผ๋ก ๊ตฌ๋ถ.
-
Choreography ์คํ์ผ
์์๋ ๊ฐ ์๋น์ค๊ฐ ๋ค๋ฅธ ์๋น์ค์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ณ ๋ฐ์ํ๋ ๋ฐฉ์์ผ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ๋์. -
โจ
Orchestration ์คํ์ผ
์์๋ ํน์ ์๋น์ค(orchestrator)๊ฐ ํธ๋์ญ์ ์ ์ ์ฒด ํ๋ฆ์ ๊ด๋ฆฌํ๋ฉฐ ๋ค๋ฅธ ์๋น์ค๋ค์ ์กฐ์ . -
Saga ํจํด์ ์ค์ํ ํน์ง ์ค ํ๋๋ ์ฐ์์ ์ธ ํธ๋์ญ์ ์ค ํ๋๊ฐ ์คํจํ ๊ฒฝ์ฐ, ์ด๋ฏธ ์๋ฃ๋ ํธ๋์ญ์ ์ ์ทจ์(rollback) ํ๊ธฐ ์ํ ๋ณด์ ํธ๋์ญ์ ์ ๊ตฌํํ๋ ๊ฒ.
- ๋ฐ์ดํฐ์ ์์์ฑ์ ๋ณด์ฅํ์ง๋ ์์ง๋ง, ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋์.
- ์ฃผ๋ฌธ ์๋น์ค์์ ์ฃผ๋ฌธ ์์ฒญ(Post)์ ์์ ํ๊ณ PENDING ์ํ์ ์ฃผ๋ฌธ ์์ฑ
- ์ฃผ๋ฌธ ์์ฑ ์ด๋ฒคํธ ์ ๋ฌ
- ๊ณ ๊ฐ ์๋น์ค์ Event handler๊ฐ Credit ์์ฝ ์๋
- ๊ฒฐ๊ณผ ์ด๋ฒคํธ ์ ๋ฌ
- ์ฃผ๋ฌธ ์๋น์ค์ Event handler๋ฅผ ํตํด ์ฃผ๋ฌธ ์น์ธ or ๊ฑฐ๋ถ