DevLog ๐ถ
[MSA] MicroService, SoA ๋ณธ๋ฌธ
- MSA ๊ณต๋ถํ๋ฉด์ ์ธํ๋ผ์ ์ง์์ด ๋ถ์กฑํ ๊ฒ ๊ฐ์์ ๊ฐ๋ ์ ๋ฆฌ๋ฅผ ์งํํ์๋ค.
- ์๋ง ์กฐ๊ธ ๋ ๊ณต๋ถํ๋ฉด์ ์์ฑํด๋๊ฐ์ผ ๋ ๊ฒ ๊ฐ๋ค.
โ๏ธ SoA (Service Oriented Architecture)
- ์๋น์ค ์งํฅ ์ํคํ ์ฒ
- ์ ํ๋ฆฌ์ผ์ด์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ, ๊ฐ ์ปดํฌ๋ํธ๋ ์ผ์ข ์ ๊ฐ๋ณ ์๋น์ค๋ก ๊ตฌ์ฑ
- ์ ํ๋ฆฌ์ผ์ด์
์ 3๊ฐ์ ๋ ์ด์ด๋ก ๋๋์์ ๊ฒฝ์ฐ
- ํ๋ ์ ํ
์ด์
๋ ์ด์ด
- ์ฌ์ฉ์ UI ์ ๊ณต
- ๋น์ฆ๋์ค ๋ ์ด์ด
- ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ
- ๋ฐ์ดํฐ ๋ ์ด์ด
- ๋๋ฉ์ธ ๋ชจ๋ธ ๊ด๋ฆฌ ๋ฐ DB ์ ๊ทผ
- ํ๋ ์ ํ
์ด์
๋ ์ด์ด
- ๊ฒฐ๊ตญ, ๊ฐ ์๋น์ค๋ ์ผ์ข ์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํ์ฒด๋ผ๊ณ ๋ณผ ์ ์๋ค.
- ์๋น์ค ๋จ์๋ก ๊ฐ๋ฐ์ ์งํํ์ฌ ๊ฐ๋ฐ๋ ์๋น์ค๋ฅผ ๊ณต์ ํ์ฌ ์ฌ๊ฐ์ฉ์ฑ์ ๋๋ฆฌ๋ ๊ฒ.
--
โ๏ธ MicroService with SoA
- ๋ง์ดํฌ๋ก ์๋น์ค์์ ๊ฐ ์๋น์ค๋ค์ ์์ ํ ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์, ์์ ํ ๋ณ๋์ ๋ชจ๋๋ก์ ๋์์ด ๊ฐ๋ฅํ๋ค.
- ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ ์ฌ์ฉํ๋ฉด ์๋น์ค ํ์ฅ์ ์ต์ ํ๊ฐ ๊ฐ๋ฅํ๋ค.
- ์ฃผ์) ๋ง์ดํฌ๋ก์๋น์ค๋ SoA์ง๋ง, ๋ชจ๋ SoA๋ฅผ ๋ง์ดํฌ๋ก์๋น์ค๋ผ๊ณ ํ ์ ์๋ค.
- SoA์์๋ ๊ฐ๋ฐํ ์๋น์ค๋ฅผ ์ ์ฐํ๊ฒ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉํ ์ ์์ด ํจ์จ์ฑ์ ๋ฐ์ง์ง๋ง, MSA์์๋ ๋น๊ต์ ๋ ๋ฆฝ์ฑ์ ๋ ๊ฐํ๊ฒ ๋์ด๋ค.
--
โ๏ธ Enterprice Service Bus (ESB)
- ๊ฐ ๋ ์ด์ด๊ฐ ๋ถ๋ฆฌ๋๋ฉด์, ‘๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ(SoC)’๋ผ๋ ํต์ฌ ํค์๋๊ฐ ๋ ์ค๋ฅด๊ฒ ๋์๋ค.
- ์ด๋, ๋จ์ํ ์ํํธ์จ์ด๋ฟ๋ง ์๋๋ผ ์ํคํ ์ฒ ์ญ์ ๋ถ๋ฆฌํด์ผ ํ๋๋ฐ, ์ฌ์ฉ๋๋ ๊ธฐ์ค์ผ๋ก์ ์ํฐํ๋ผ์ด์ฆ ์๋น์ค ๋ฒ์ค (ESB)๊ฐ ์ฌ์ฉ๋ ์ ์๋ค.
- ESB๋ ์๋น์ค ์กฐ์ , ๋งคํ, ๋ผ์ฐํ
์ ๋ด๋นํ๋ ์ํํธ์จ์ด ์ปดํฌ๋ํธ๋ก, ๊ฐ ๋น์ฆ๋์ค ๋๋ฉ์ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋น์ฆ๋์ค ๊ท์น์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ์๋ก์ด ์๋น์ค๋ฅผ ์์ฑํ๋ค.
- ์ฆ, ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉํ๋๋ฐ ์ฐ์ด๋ ์ผ์ข ์ ๋ฏธ๋ค์จ์ด๋ผ๊ณ ํ ์ ์๋ค.
--
โ๏ธ MicroService์ ์ค๊ณ ์์น
- ๋น์ฆ๋์ค ์ญ๋ ์ค์ฌ ๋ชจ๋ธ
- ๋ง์ดํฌ๋ก์๋น์ค ์ ๋ฐ์ดํธ ๋ฐ ์์ ์ ๊ธฐ์กด์ ์ ์ํ๋ ๊ฐ๋ ์ผ๋ก ์ถ์ํ๋ฅผ ์งํํด์ผ ๋๋ค.
- ๋์จํ ๊ฒฐํฉ
- ๊ฐ ์๋น์ค ๊ฐ์ ์ํธ์์ฉ์ ๊ตฌํํ๊ธฐ ์ํด์๋ ๋์จํ๊ฒ ๊ฒฐํฉํด์ผ ํ๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค์์๋ ์์ ์ ๋๋ฉ์ธ ๋ด์ ์๋ ์ ๋ณด๋ง ๋ฐํํด์ผ ํ๋ค.
- ๋จ์ผ ์ฑ
์
- ๋จ์ผํ ๋ถ๋ถ์ ๋ํ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ฉฐ, ๋ง์ดํฌ๋ก์๋น์ค์ ์ํด์ ์์ ํ ์บก์ํ๋์ด์ผ ํ๋ค.
- ๊ตฌํ ์๋
- ๋ด๋ถ ์ธ๋ถ ์ฌํญ์ ๋ ธ์ถ๋์ด์๋ ์ ๋๋ค.
- ๊ฒฉ๋ฆฌ
- ์์คํ ์ธํ๋ผ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค.
- ๋
๋ฆฝ์ ์ธ ๋ฐฐํฌ
- ๊ฐ ์๋น์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํด์ผ ํ๋ค.
- ์คํจ๋ฅผ ์ํ ๋น๋
- ์ฅ์ ๋ฐ์ ์ ์ต๋ํ ๋งค๋๋ฝ๊ฒ ์ฒ๋ฆฌํ๋๋ก ๊ตฌ์ฑํด์ผ ํ๋ฉฐ, ๋ณต๊ตฌ ๋ฐฉ์์ ์ ์ํด์ผ ํ๋ค.
- UpStream: ์๋น์์๊ฒ ์ด๋ป๊ฒ ์ค๋ฅ๋ฅผ ์๋ฆด ๊ฒ์ธ์ง, ํน์ ์๋ฆฌ์ง ์์ ๊ฒ์ธ์ง ์ ์
- DownStream: ํ ์๋น์ค๋ DB ์ฅ์ ๋ฐ์ ์ ์ด๋ป๊ฒ ๋์ํ ๊ฒ์ธ์ง ์ ์
- Logging: ๋ก๊ทธ์ ๋น๋, ์ ๋ณด์ ์, ์ก์ธ์ค ๋ฐฉ๋ฒ ๊ณ ๋ ค
- Monitoring: ์ ํ๋ฆฌ์ผ์ด์ ์ ์์์์ ์๋ฏธ ์๋ ์ ๋ณด ๊ณ ๋ ค
- Warning: ์ด์ ํ์์ ๋ํ ์ฐ๊ด ๋ถ์ ํ์
- Recovery: ์ฅ์ ๋ฐ์ ์ ์ด๋ป๊ฒ ์ ์ ์ํ๋ก ๋๋๋ฆด ์ ์๋๊ฐ
- Rollback: ์ธ๋ถ ์๋น์ค์ ์ฅ์ ์ํฉ์ ๋๋นํ ๋กค๋ฐฑ ๋งค์ปค๋์ฆ์ ์ ๊ณต
- ํ์ฅ์ฑ
- ์ผ์ชฝ์์ ‘์ถ์ฒ’์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค๊ณ ํ์ ๋ ์ ๋ฐ์ ์ธ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด ์ธ์คํด์ค ์๋ฅผ ๋๋ฆฌ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅํ ๋ชจ์ต์ด๋ค.
- ์๋ํ
- ์๋ํ๋ CI/CD ๊ตฌ์ถ ํ์
--
โ๏ธ DDD (Domain-Driven Design)
- ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋, ํต์ฌ ๋๋ฉ์ธ์ผ๋ก ๊ฒฝ๊ณ์ง์ด์ง, ์งํํ๋ ๋ณต์กํ ๋ชจ๋ธ์ ๋ค๋ฃจ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐฉ์์ด๋ค.
- ๋ชจ๋ธ์ด ์ ์ฉ๋๋ ์ผ์ข ์ ์ปจํ ์คํธ๋ฅผ ์ ์ํ์ฌ, ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ๋ถ๋ถ์์ ์ฌ์ฉ๋๊ฑฐ๋ DB ์คํค๋ง ๊ฐ์ ๋ช ์์ ์ธ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํ์ฌ ๋ชจ๋ธ์ ์ผ๊ด๋๊ฒ ์ ์งํด์ผ ํ๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์↔์ฌ์ฉ์๊ฐ์ ๊ณตํต์ , ์๊ฒฉํ ์ธ์ด๋ฅผ ๊ตฌ์ถํด์ผ ํ๋ค.
- ๋๋ฉ์ธ ๋ชจ๋ธ๋ฟ๋ง ์๋๋ผ ๋๋ฉ์ธ ๋ก์ง, ์ํคํ ์ฒ์์๋ ์ ๋น์ฟผํฐ์ค ์ธ์ด๊ฐ ์ฌ์ฉ๋์ด์ผ ํ๋ค.
---
โ๏ธ Bounded Context (๊ฒฝ๊ณ๋ ์ปจํ ์คํธ)
- ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์์๋ ๋ชจ๋ธ์ ์ผ์ข ์ ๊ฒฝ๊ณ๋ ์ปจํ ์คํธ๋ก ๊ตฌ๋ถํ์ฌ, ์ธ๋ถ์ ๋ถ๋ฆฌ๋์ด ๊ฒฝ๊ณ ์์ ์ง์์ด ์ผ๊ด๋๊ฒ ์ ์ง๋ ํํ๋ฅผ ์๋ฏธํ๋ค.
- ๊ฐ ์ปจํ
์คํธ๋ ๋ค๋ฅธ ์ปจํ
์คํธ์ ์ง์ ์ ์ผ๋ก ์ฐ๊ด๋ ์ข
์์ฑ์ ๊ฐ์ง์ง ์๋๋ค.
- ๋ฌผ๋ก , ์์ ๊ฐ์ง์ง ์๋ ๊ฑด ์๋๋๋ผ๋ ์ฝํ ๊ฒฐํฉ ๊ด๊ณ๋ฅผ ์ถ๊ตฌํ๋ค.
---
โ๏ธ MicroService with DDD
- ๋ง์ดํฌ๋ก์๋น์ค์ ๊ฐ ์๋น์ค๋ ํ๋ ์ด์์ ๊ฒฝ๊ณ๋ ์ปจํ ์คํธ๋ฅผ ํฌํจํด์๋ ์ ๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค์์ ์ฌ์ฉ๋๋ ์ธ์ด๋ ์ ๋น์ฟผํฐ์ค ์ธ์ด์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์, ๋
ธ์ถ๋ ์คํผ๋ ์ด์
๊ณผ ์ธํฐํ์ด์ค๋ ์ปจํ
์คํธ ๋๋ฉ์ธ ์ธ์ด๋ก ํํ์ด ๋์ด์ผ ํ๋ค.
- ์ฆ, ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์ฌ์ฉํ๋ ๋ชจ๋ ๋ชจ๋ธ์ ๊ฒฝ๊ณ๋ ์ปจํ ์คํธ ๋ด์์ ์ ์๋๊ณ , ์ ๋น์ฟผํฐ์ค ์ธ์ด๋ฅผ ์ฌ์ฉํด์ผ ๋๋ฉฐ, ์ ์ฒด ์์คํ ์์ ์์กด์ฑ / ๊ฒฐํฉ๋๋ฅผ ํ์ ํ๊ธฐ ์ํด ๋งคํ ๊ด๊ณ๋ฅผ ๊ผผ๊ผผํ ์ดํด์ผ ํ๋ค.
---
โ๏ธ Reactive Programming
subscribe(::getData).whenDone(::print)
- ์ผ์ข ์ ์์ ์ ๊ตฌ๋ ํ๊ณ , ์์ ์ด ์๋ฃ๋์์ ๋ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅธ ์์ ์ ๋ณด๋ธ๋ค.
- ์ด๋, ํด๋น ๊ตฌ๋ฌธ ์ดํ์๋ ๋ธ๋กํน ๋์ง ์๊ณ ํ๋ก๊ทธ๋จ์ด ๊ณ์๋์ด ๋ค๋ฅธ ๊ฒ๋ค์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ผ๋ธ๋กํน ์์ ์ผ๋ก์ ๋์ํ๋ค.
- ๋ฆฌ์กํฐ๋ธ ์์คํ
์ ๋น๋๊ธฐ ๋ฉ์์ง์ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ๋์จํ๊ฒ ์ฐ๊ฒฐ๋ ์ปดํฌ๋ํธ๋ฅผ ํตํด ๊ฒฉ๋ฆฌ๋ ์์คํ
์ ์ํธ ์ฐ๊ฒฐํ ์ ์๋ค.
- ํ๋์ ์๋น์ค๋ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ๋ค๋ฅธ ์๋น์ค๋ฅผ ๊ตฌ๋ ํ๊ณ , ๋ค๋ฅธ ์๋น์ค๋ ๋ ๋ฌ๋ ์๋น์ค๋ฅผ ๊ตฌ๋ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ๊ณ … ์๋ ์๋น์ค๋ก ๋ฐํํ๋ ๋ฑ ๊ทธ๋ฌํ ์์ ์ ์ํํ ์ ์๋ค.
---
โ๏ธ IaaS vs PaaS vs SaaS
- IaaS (Infrastrcture as a Service)
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํด๋ผ์ฐ๋ ์๋น์ค ๋ชจ๋ธ
- ํด๋ผ์ฐ๋ ์ฌ์ฉ์๊ฐ ์ง์ ํ๋ซํผ์์ ์์ฑ๋ ์ฌ๋ฌ ์๋ฒ๋ฅผ ์ ์ง ๋ฐ ๊ด๋ฆฌํด์ผ ํ๋ค.
- ex) ์๋ง์กด ์น ์๋น์ค, ๋ง์ดํฌ๋ก์ํํธ ์ ์ VM…
- PaaS (Platform as a Service)
- ๊ณ ๊ฐ์ด ์ ์ง๋ณด์ํ ํ์ ์์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋ฐ ์คํ, ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- ex) ๊ตฌ๊ธ ์ฑ ์์ง, IBM ๋ธ๋ฃจ๋ฏน์ค, ๋ง์ดํฌ๋ก์ํํธ ์ ์ ํด๋ผ์ฐ๋ ์๋น์ค…
- SaaS (Software as a Service)
- ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ํํธ์จ์ด์ ์ก์ธ์คํ ์ ์ด์ฟ.
- ์ํํธ์จ์ด ์คํ์ ํ์ํ ๋ชจ๋ ์์๋ ํ๋ซํผ ๋ด๋ถ์์ ๊ด๋ฆฌ๋๋ฉฐ, ์ฌ์ฉ์๋ ์๋น์ค ์ ๊ณต์๊ฐ ๋ชจ๋ ๊ฒ์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ฌด๊ฒ๋ ์๋ค.
- ex) ๋ง์ดํฌ๋ก์ํํธ ์คํผ์ค 365…
'โ๏ธ > CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments