๋ง์ดํฌ๋ก์๋น์ค ๋์์ธ ํจํด ์๋ฒฝ ๊ฐ์ด๋
์ด ๊ณผ์ ์ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ MSA ๋์์ธ ํจํด๊ณผ ๊ตฌํ ์ ๋ต์ ํ์ํ ๋ค์ํ ๋ด์ฉ ๋ฐ ํจํด๊ณผ ์ค๊ณ์ ๋ํด ๋ฐฐ์๋ณด๋ ๊ณผ์ ์ ๋๋ค. ๊ธฐ์กด์ ๋ชจ๋๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์ MSA ๋ฐฉ์์ผ๋ก ์ฑ๊ณต์ ์ผ๋ก ์ ํํ๋ ๋ฐ ํ์ํ ํต์ฌ ์ง์๊ณผ ์ค์ง์ ์ธ ๋ฐฉ๋ฒ๋ก ์ ๋ํด์ ํ์ตํ๊ฒ ๋ฉ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ๊ทผ๊ฐ์ ์ด๋ฃจ๋ ๋ค์ํ ๋์์ธ ํจํด์ ๋ํด ๋ถ์ํ๊ณ , ๊ฐ ํจํด์ด ์ด๋ค ์ํฉ์ ์ ํฉํ๋ฉฐ ์ด๋ป๊ฒ ์ ์ฉ๋๋์ง ํ์ตํ ์ ์์ต๋๋ค.
์๊ฐ์ 431๋ช
๋์ด๋ ์ด๊ธ
์๊ฐ๊ธฐํ ๋ฌด์ ํ
์๋ ํ์ธ์, ์ด๋์์ ๋๋ค.
์ด๋ฒ์ ์๋กญ๊ฒ Microservice Architecture๋ฅผ ์ํ Design Pattern ๊ฐ์๋ฅผ ์คํํ์์ต๋๋ค.
์ ๋ง์ด์ง ๋๋ฌด๋๋ ํ๋ค๊ณ ๋ฐ๋ปค๋ 2024๋ ์ ๋ค๋ก ํ๊ณ , ์๋กญ๊ฒ 2025๋ ๋ ๋ฒ์จ 5์์ด ์ง๋๊ฐ๊ณ ์๋ค์.
ํ๋ก์ ํธ์ ์งํ์ ๊ฐ์์ ๊ฐ์ธ์ฌ์ ์ฌ๋ฌ๊ฐ์ง ์ผ๋ค์ด ๋ง์์ง๋ง, ๊ทธ๋๋ ์ค๋ฌ๋์ ๋ฏธ๋ค์๋ ๊ฐ์๋ฅผ ํ๋ ์คํํ๊ฒ ๋์์ต๋๋ค.
Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ (MSA)
Jenkins๋ฅผ ์ด์ฉํ CI/CD Pipeline ๊ตฌ์ถ
DevOps๋ฅผ ์ํ Docker ๊ฐ์ํ ๊ธฐ์ (Private Harbor Registry)
๋ง์ดํฌ๋ก์๋น์ค ๋์์ธ ํจํด์ ์ ์ฉํ MSA ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ
๊ฐ์์ ์ด์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ํ์ํ ๋์์ธ ํจํด์ ๋ํ ๊ฐ์๋ฅผ ์ค๋นํ์ต๋๋ค. ์ฒ์์ "Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ (MSA) " ๊ฐ์๋ฅผ ๊ธฐํํ ๋, Cloud Native์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๊ฐ์๋ฅผ ์๋ฃํ๊ณ ๋ค์ ๋จ๊ณ๋ก ๋์์ธ ํจํด๊ณผ ์ค๋ฌด์ ์ ์ฉํด ๋ณผ ์ ์๋ ์ํคํ ์ฒ๋ค์ ํตํด ์น ์๋น์ค๋ฅผ ๊ฐ๋ฐํด ๋ณด๋ ๊ฐ์๋ฅผ ๊ธฐํํ์๋๋ฐ, ์๊ฐ๋ณด๋ค ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ์ต๋๋ค. ๊ทธ๋๋ ์ฌ๋ฌ๊ฐ์ง ํจํด์ ๋ช๊ฐ์ง ๊ทธ๋ฃน์ผ๋ก ์ ๋ฆฌํด์ ๊ฐ์๋ฅผ ์คํํ๊ฒ ๋์์ผ๋ ๋ง์ ๊ด์ฌ ๋ฐ๋๋๋ค.
์ด๋ฒ ๊ฐ์์์๋ ๋ค์๊ณผ ๊ฐ์ ํจํด์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
API ๊ฒ์ดํธ์จ์ด (API Gateway): ํด๋ผ์ด์ธํธ์ ๋ชจ๋ ์์ฒญ์ ๋จ์ผ ์ง์ ์ ์์ ๋ฐ์ ์ธ์ฆ, ๋ก๊น , ๋ผ์ฐํ ๋ฑ์ ์ฒ๋ฆฌํ๋ ํจํด์ ๋๋ค. ์ฌ๋ฌ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํ ๊ณณ์์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ (Service Discovery): ๋์ ์ผ๋ก ๋ณํํ๋ ์๋น์ค ์ธ์คํด์ค๋ค์ ์์น๋ฅผ ์ค์ ๋ ์ง์คํธ๋ฆฌ์ ๋ฑ๋กํ๊ณ ์ฐพ๋ ํจํด์ ๋๋ค. ์ด๋ฅผ ํตํด ์๋น์ค ๊ฐ ํต์ ์ ์ฃผ์๋ฅผ ์๋์ผ๋ก ํ์ํฉ๋๋ค.
๋๊ธฐ (Synchronous)& ๋น๋๊ธฐ (Asynchronous) ํต์ : ๋๊ธฐ ํต์ ์ ์์ฒญ์ ๋ณด๋ธ ์๋น์ค๊ฐ ์๋ต์ ๋ฐ์ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋ฐฉ์์ผ๋ก, ์๋ต์ด ์ฌ ๋๊น์ง ์ค๋ ๋๊ฐ ๋ธ๋กํน ๋ฉ๋๋ค. REST / gRPC / GraphQL API ๋ฐฉ์์ผ๋ก ๋๊ธฐ ํต์ ์ ๊ตฌํํ ์ ์์ต๋๋ค. ๋น๋๊ธฐ ํต์ ์ ์์ฒญ์ ๋ณด๋ธ ์๋น์ค๊ฐ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฆ์ ๋ค์ ์์ ์ ์งํํ๋ ๋ฐฉ์์ผ๋ก, Kafka์ ๊ฐ์ ๋ฉ์์ง ๋ธ๋ก์ปค๋ฅผ ํตํด ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๊ณ , ๊ตฌ๋ ํ๋ ๋ฐฉ์์ผ๋ก ํต์ ํ๊ฒ ๋ฉ๋๋ค.
์ํท ๋ธ๋ ์ด์ปค (Circuit Breaker): ํ ์๋น์ค์ ์ฅ์ ๊ฐ ์ฐ์์ ์ผ๋ก ํผ์ง๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ํธ์ถ์ ๋จ๋ฝ์ํค๋ ํจํด์ ๋๋ค. ์ธ๋ถ ์๋น์ค๊ฐ ๋ถ๋ฅ์ผ ๋ ์ผ์ ์๊ฐ ํธ์ถ์ ์ค๋จํ๊ณ ๋น ๋ฅธ ์คํจ(Fail-fast)๋ฅผ ์ ๋ํฉ๋๋ค.
ํด๋ฐฑ (Fallback) ์ฒ๋ฆฌ: ์ํท ๋ธ๋ ์ด์ปค ๋ฑ์ด ์๋ํ์ ๋ ๋๋น์ฑ ์ผ๋ก, ๋์ฒด ์๋ต์ด๋ ์ฌ์๋ ๋ก์ง์ ์ ๊ณตํ๋ ํจํด์ ๋๋ค. ๋ถ๋ถ ์ฅ์ ์ ์์คํ ์ ํ๋ ฅ์ฑ(resilience)์ ๋์ฌ ์ค๋๋ค.
์ฌ๊ฐ ํจํด (Saga): ๋ถ์ฐ๋ ์๋น์ค๋ค์์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํ ๋ถ์ฐ ํธ๋์ญ์ ํจํด์ ๋๋ค. ๊ฐ ์๋น์ค์ ๋ก์ปฌ ํธ๋์ญ์ ์ ์ด๋ฒคํธ/๋ฉ์์ง๋ก ์ฐ๊ฒฐํ์ฌ ์ต์ข ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
CQRS & ์ด๋ฒคํธ ์์ฑ:CQRS(Command Query Responsibility Segregation)๋ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ๋ชจ๋ธ์ ๋ถ๋ฆฌํ์ฌ ํ์ฅ์ฑ์ ๋์ด๋ ํจํด์ด๊ณ , ์ด๋ฒคํธ ์์ฑ(Event Sourcing)์ ์ํ ๋ณ๊ฒฝ์ ์ด๋ฒคํธ ๋ก๊ทธ๋ก ์ ์ฅํด ์ด๋ ฅ ๊ธฐ๋ฐ์ผ๋ก ์ํ๋ฅผ ๋ณต์ํ๋ ํจํด์ ๋๋ค. ํจ๊ป ์ฌ์ฉ๋์ด ๋ณต์กํ ๋น์ฆ๋์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
EDA: Event Driven Architecture๋ ์ด๋ฒคํธ์ ์์ฑ, ๊ฐ์ง, ์๋น ๋ฐ ์ฌ์ฉ์ ์ค์ฌ์ผ๋ก ์์คํ ์ ์ค๊ณํ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ ํจํด์ ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ๊ตฌ์ฑ์์๋ค์ด '์ด๋ฒคํธ'๋ฅผ ํตํด ์๋ก ํต์ ํ๊ณ ์ํธ์์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
BFF (Backend for Frontend): ์น, ๋ชจ๋ฐ์ผ ๋ฑ ํ๋ซํผ๋ณ ํนํ๋ ๋ฐฑ์๋๋ฅผ ์ ๊ณตํ๋ ํจํด์ ๋๋ค. ๊ฐ ํ๋ก ํธ์๋์ ์๊ตฌ์ ๋ง๋ ์ ์ฉ API ๊ณ์ธต์ ๋ง๋ค์ด ํจ์จ์ฑ๊ณผ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ ๋๋ค.
์ด์ ๊ทธ๋์ ๋ฏธ๋ค์๋, "Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ (MSA) " ๊ฐ์๋ฅผ ์์์ผ๋ก, ๊ธฐ์กด ๊ฐ์๋ค์ ์ฝํ ์ธ ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ค๊ณ ํฉ๋๋ค. ๊ฐ์๋ฅผ ์คํํ์ง๋ ์๊ฐ์ด ๊ฝค ํ๋ ๊ณ , ์ต์ ๋ด์ฉ์ผ๋ก ๋ค์ ๋ง๋ค์ง ์์ผ๋ฉด ์๋๊ณ๋ค๋ ์๊ฐ์ ๊ณ์ ํด ์์๋๋ฐ, ๋ ๋ฆ์ง ์๊ฒ ์ ๋ฐ์ดํธ ํ๋ ค๊ณ ํฉ๋๋ค.
๊ฐ์์ ๊ด์ฌ์ ๊ฐ์ ธ ์ฃผ์ ๋ถ๋ค๊ป ๋ค์ํ๋ฒ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ, ์ง๋ฌธ๊ณผ ํผ๋๋ฐฑ ๋ฑ ๋จ๊ฒจ ์ฃผ์๋ฉด, ์ต์ ์ ๋คํด ๋น ๋ฅด๊ฒ ๋ต๋ณ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.






