๐งฉ ๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ ํจํด
๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ ํจํด์ ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅํ ์๋น์ค๋ก ๊ตฌ์ฑ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ํ ์ผ๋ จ์ ์์น์ ๋๋ค. MSA ๊ฐ ์ ํ์ด ๋๊ณ ์ฌ๋ฌ๊ณณ์์ ์ฌ์ฉํ๋ฉด์ ๋ช๊ฐ์ง ์ ์ฉํ ์ค๊ณ ํจํด๋ค์ด ์๊ธฐ๊ธฐ ์์ํ๋๋ฐ์, ์ค๋ ์๊ฐํด๋๋ฆด ์ํฐํด์ ์ด๋ฐ ๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ ํจํด ์ค ๋ํ์ ์ธ ํจํด 5๊ฐ์ง๋ฅผ ์๊ฐํ๊ณ ์์ต๋๋ค. ๐ API Gateway API Gateway ๋ ๋ง์ดํฌ๋ก์๋น์ค์ ํ๋ฐํธ์๋ ์ญํ ์ ํ๋ ์๋น์ค๋ก ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ ์ ์ ํ ์๋น์ค๋ก ๋ผ์ฐํ ํฉ๋๋ค. ๐ Circuit Breaker Circuit Breaker ๋ ๋ถ์ฐ ์์คํ ์์ ์คํจ๋ฅผ ๊ฐ์งํ๊ณ ๊ณ๋จ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ณผ๋ถํ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ก๋ฅผ ์ฐจ๋จํ์ฌ ์ ๊ธฐ ์ฅ๋น์ ์์์ ๋ฐฉ์งํ๋ ์ ๊ธฐ ํ๋ก ์ฐจ๋จ๊ธฐ์ฒ๋ผ ์ฅ์ ๊ฐ ๋ฐ์ํ ์์คํ ์ผ๋ก์ ํธ๋ํฝ ํ๋ฆ์ ์ฐจ๋จํ ์ ์์ต๋๋ค. ๐ CQRS (Command Query Responsibility Segregation) CQRS ํจํด์ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ๋ช ๋ น ๋ชจ๋ธ๊ณผ ์ฟผ๋ฆฌ ๋ชจ๋ธ ๋ ๊ฐ์ง๋ก ๋ถ๋ฆฌํฉ๋๋ค. ๋ช ๋ น ๋ชจ๋ธ์ ์ฐ๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๊ณ ์์คํ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๋ ์ญํ ์ ํ๊ณ , ์ฟผ๋ฆฌ ๋ชจ๋ธ์ ์ฝ๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๊ณ ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ํ๋ ์์คํ ์ด ๋ณต์กํด์ง๊ณ ํฌ๊ธฐ๊ฐ ์ปค์ ธ๋ ํ์ฅ ๋ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ์์ํ ์ ์๋๋ก ํฉ๋๋ค. ๐ Event Sourcing Event Sourcing ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํ๋ฅผ ์ผ๋ จ์ ์ด๋ฒคํธ๋ก ๋ชจ๋ธ๋งํ์ฌ ์ ์ฅ ๋ฐ ์ฌ์ฉํ๋ ํจํด์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฌ ์ํ๋ฅผ ์ ์ฅํ๋ ๋์ ์์คํ ์ ์ผ๋ จ์ ์ด๋ฒคํธ๋ฅผ ์ ์ฅํ๊ณ ํ์์ ์ด๋ฅผ ์ฝ์ด๋ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ์ ๋ฐ์ดํธ ํฉ๋๋ค. ๐ Saga Pattern Saga ๋์์ธ ํจํด์ ๋ถ์ฐ ์์คํ ์์ ์ฌ๋ฌ ์๋น์ค๋ฅผ ํฌํจํ๋ ์ฌ๋ฌ ํธ๋์ญ์ ์์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ์ ์ ๋๋ค. ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ์์ผ๋ก ์ฌ๋ฌ ์๋น์ค์์ ๋ถ์ฐ ํธ๋์ญ์ ์ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ณต์ ๋๋ฆฐ ์ํฐํด์ 5๊ฐ์ง ํจํด์ ๋ํ ์์ธํ ๋ด์ฉ์ด ์ ๋ฆฌ๋์ด์์ผ๋ ๊ด์ฌ์์ผ์ ๋ถ๋ค์ ํ๋ฒ ๋ณด์๋ฉด ์ข๊ฒ ์ต๋๋ค. https://medium.com/javarevisited/5-important-microservices-design-patterns-c4d636b0051