MSA
IT System history
Fragile, Cowboys
Robust, Distributed
Resilient / Anti-Fragile, Cloud Native
Anti-Fragile
Culture : DevOps
Architecture : Cloud Native
ํน์ง
Auto Scailng : ์ฌ์ฉ๋์ ๋ฐ๋ผ ์๋์ผ๋ก ๋์ด๋๊ณ ์ค์ด๋ ๊ฒ
Microservices : Cloud Architecture์ ํต์ฌ / Spring Cloud์ ๋ง์ ๋ถ๋ถ์ด Netfilx์์ ๋ง๋ค์ด ํฉ๋ฅ
Chaos engineering : ์์คํ ์ด ์์ธกํ์ง ๋ชปํ ์ํฉ์ด๋๋ผ๋ ์์ ์ ์ผ๋ก ๊ตฌ์ถ๋์ด์ผ ํ๋ค.
CD : CI/CT/CD/CM/CF๋ฅผ ํตํ ์ง์์ ์ธ ๊ฐ๋ฐ์ด ๋์ด์ผ ํ๋ค.
CI : ์ง์์ ์ธ ํตํฉ
CD
์ง์์ ์ธ ์ ๋ฌ : ์๋ฒ๋ก ํ์ผ ์ ๋ฌ
์ง์์ ์ธ ๋ฐฐํฌ : ์ ๋ฌ๋ ํ์ผ์ ๋ฐฐํฌ
Cloud-Native Architecture
ํ์ฅ๊ฐ๋ฅํ ์ํคํ ์ฒ
์์คํ ์ ์ํ์ ํ์ฅ์ ์ ์ฐ
ํ์ฅ๋ ์๋ฒ๋ก ์์คํ ์ ๋ถํ๋ถ์ฐ, ๊ฐ์ฉ์ฑ ๋ณด์ฅ
์์คํ / ์๋น์ค ์ฑ ๋จ์์ ํจํค์ง
๋ชจ๋ํฐ๋ง
ํ๋ ฅ์ ์ํคํ ์ฒ
์๋น์ค ์์ฑ/ ํตํฉ/ ๋ฐฐํฌ/ ๋น์ฆ๋์ค ํ๊ฒฝ๋ณํ์ ๋์์๊ฐ ๋จ์ถ
์ํฐํ๋ผ์ด์ฆ ๊ธ์ผ๋ก ๊ฐ ์๋ก ๋ง์ ์๋น์ค๋ค์ด ์กด์ฌํ๋๋ฐ ์๋ํ๊ฐ ๋์ด์์ง ์์ผ๋ฉด ๊ฐ๋ฐ์๊ฐ๋ณด๋ค ๋ฐฐํฌ/ํตํฉํ๋๋ฐ ๋ง์ ์๊ฐ์ ์๋นํด์ผํจ
๋ถํ ๋ ์๋น์ค ๊ตฌ์กฐ
๋ฌด์ํ ํต์ ํ๋กํ ์ฝ
์๋น์ค ์ถ๊ฐ์ ์ญ์ ์๋์ผ๋ก ๊ฐ์ง
๋ณ๊ฒฝ๋ ์๋น์ค ์์ฒญ์ ๋ฐ๋ผ ์ฌ์ฉ์ ์์ฒญ ์ฒ๋ฆฌ(๋์ ์ฒ๋ฆฌ)
์ฅ์ ๊ฒฉ๋ฆฌ (Fault Isolation)
ํน์ ์๋น์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ์ฃผ์ง ์์
DevOps : Development + Operation ์ ํฉ์ฑ์ด๋ก ๊ฐ๋ฐ๊ณผ ์ด์์กฐ์ง
๋ ์์ฃผ ํตํฉ / ํ ์คํธ /๊ฐ๋ฐ์ ์งํ
Container ๊ฐ์ํ
Nativeํ๊ฒฝ์์ Cloudํ๊ฒฝ์ผ๋ก ์๋ฒ๋ฅผ ์ด์ ํด์ ๊ตฌ์ถํ๊ฒ๋ ํต์ฌ์ ์ธ ๊ธฐ์
ํ๋์จ์ด ๊ฐ์ํ/์๋ฒ ๊ฐ์ํ์ ๋นํด ์ ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๊ณ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๊ฒ ์๋ํ ์ ์๋ค.
๊ตฌ์ถํ ๋ ๊ณ ๋ คํด๋ด์ผ ํ 12๊ฐ์ง ( 12 Factors )
Base code : ๊ฐ ๋ง์ดํฌ๋ก ์๋น์ค์ ๋ํ ์ฝ๋ ์ ์ฅ์
๋ฒ์ ์ ์ ์ดํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ํ์๊ด๋ฆฌ, ๋ฐฐํฌ๋ฅผ ์ํด ํ๊ณณ์์ ์ฝ๋๋ฅผ ๊ด๋ฆฌ
Dependecny Isolation : ๊ฐ ๋ง์ดํฌ๋ก ์๋น์ค๋ ์์ฒด ์ข ์์ฑ์ ๊ฐ์ง๊ณ ํจํค์ง๋์ด ์์ด ์ ์ฒด์์คํ ์ ์ํฅ์ ์ฃผ์ง ์์ ์ํ๋ก ๋ณ๊ฒฝ๋ ์ ์์ด์ผ ํ๋ค.
configurations : ํ๋์ฝ๋ฉ์ด ๋์ด์๋ ๊ฒ์ด ์๋๋ผ ์ฝ๋ ์ธ๋ถ์์ ๊ตฌ์ฑ๊ด๋ฆฌ๋๊ตฌ๋ฅผ ํตํด์ ๋ง์ดํฌ๋ก ์๋น์ค์ ์์ ์ ์ ์ดํ๋ ๊ฒ.
linkable backing services : db, cash, messaging, broker์ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ณ๋๋ก ์ถ๊ฐ๋ก ์ง์ํ์ฌ ์๋น์ค๊ฐ์ ์ํธ๊ฐ๋ฅํด์ผํ๋ค.
stages of creation : ๋ฐฐํฌํ ์คํ๊น์ง ์๊ฒฉํ ๋จ๊ณ๊ฐ ์กด์ฌํด์ผ ํ๋ค. (๊ฐ๊ฐ์ ๊ณ ์ ํ id๋ก tag๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๊ณ , Rollback์ ์ง์ํด์ผํ๋ค.)
statless processes : ๋ค๋ฅธ ๋ง์ดํฌ๋ก ์๋น์ค์ ๋ถ๋ฆฌ๋์ด์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋ ์ ์์ด์ผ ํ๋ค.
port binding : ๊ฐ๊ฐ์ ์๋น์ค๋ ๋ณ๋์ ํฌํธ๋ก ๋ฐ์ธ๋ฉ ๋์ด์ผ ํ๋ค.
concurrency : ํ๋์ ์๋น์ค๊ฐ ์๋ฒ๋ด์์ ์ฌ๋ฌ ์ปจํ ์ด๋๋ก ์์ฑ๋์ด ์คํ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋์์ฑ์ ์ง์ํด์ผ ํ๋ค.
disposability : ์๋น์ค ์ธ์คํด์ค๊ฐ ์ญ์ ๊ฐ ๊ฐ๋ฅํด์ผํ๊ณ , ํ์ฅ์ฑ ๊ธฐํ๋ฅผ ๋์ฌ์ผ ํ๊ณ ์ ์์ ์ผ๋ก ์ข ๋ฃ๋ฅผ ํ ์ ์๋ ์ํ๊ฐ ๋์ด์ผ ํ๋ค.
development & production parity : ๊ฐ๋ฐ๋จ๊ณ์ ํ๋ก๋์ ๋จ๊ณ๋ฅผ ๊ตฌ๋ถํ ์ ์์ด์ผ ํ๋ค.
logs : ๋ง์ดํฌ๋ก์๋น์ค์ ์ํด์ ์์ฑ๋ ๋ก๊ทธ๋ฅผ ์ด๋ฒคํธ ์คํธ๋ฆผ์ผ๋ก ์ ๋ฌํด์ผ ํ๋ค.
admin processes for eventual processes : ํ๋ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ํ admin๊ธฐ๋ฅ์ด ์ ๊ณต๋์ด์ผ ํ๋ค.
์ถ๊ฐ 3๊ฐ์ง
API first : ๋ชจ๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ APIํํ๊ฐ ์กด์ฌํ๋ ๋ฐ ์ด๋ฅผ ๊ฐ์ฅ ๋จผ์ ๊ณ ๋ฏผํ๊ณ ๊ฐ๋ฐํด์ผ ํ๋ค.
Telemetry : ๋ชจ๋ ์งํ๋ ์์นํํด์ ๊ด๋ฆฌํ ์์๋ ํญ๋ชฉ์ด์ด์ผ ํ๋ค.
Authentication and authorization : API๋ฅผ ์ฌ์ฉํ๋๋ฐ ์์ด ์ธ์ฆ์ ํ์๋ก ๊ฐ์ ธ์ผ ํ๋ค.
MSA
Monolith
๋ชจ๋ ์ ๋ฌด ๋ก์ง์ด ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ํํ๋ก ํจํค์ง ๋์ด ์๋น์ค๋๋ ํํ
์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๊ฐ ํ๊ณณ์ ๋ชจ์ฌ ์ฐธ์กฐ๋๊ธฐ ๋๋ฌธ์ ์๋น์ค์ค ์ผ๋ถ๋ง ๋ณ๊ฒฝ๋์ด๋ ์๋น์ค ์ ์ฒด๋ฅผ ์๋ก ํจํค์ง๊ณผ ๋ฐฐํฌ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
Micro Service
ํจ๊ป ์๋ํ๋ ์์ ๊ท๋ชจ์ ์๋น์ค๋ค
์ด๋จ๋ MS๋ก ํด์ผ ํ ๊น
์๋น์ค์ ๊ดํด ์ง๋ฌธํด๋ณด๊ธฐ
Multiple rate of change : ๊ธฐ์กด ๊ฐ๋ฐ ๋๋น ์๊ฐ/๋์ ์ผ๋ง๋ ๋ ๋ค์ง์ ํฌ์๋ฅผ ํ ์ ์๋๊ฐ?
Independent life cycles : ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๊ณ ์๋ ์๋น์ค๋ค์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ ๊ตฌ์ฑ๋์ด ์๋๊ฐ?
independent scalability : ๊ฐ๊ฐ์ ์๋น์ค๋ฅผ ์ด์ํ๋๋ฐ ์์ด์ ์๋น์ค ์ ์ง๋ณด์๋ฐ ํ์ฅ์ฑ์ด ๊ฐ๋ฅํ๊ฐ? ์ค์ผ์ผ๋ง์ด ์ฝ๊ฒ ๊ฐ๋ฅํ๊ฐ?
isolated failure : ์๋น์ค๋ค์ ์ค๋ฅ๋ค์ด ๋ ๋ฆฝ์ ์ด๋ฉฐ ์ต์ํ์ ์ํฅ์ ๋ฏธ์น๋๊ฐ?
simplify interactions with external dependencies : ์ธ๋ถ์ข ์์ฑ๊ณผ ์ํธ์์ฉ์ด ์ต์ํ์ผ๋ก ๊ตฌ๋ถ๋์ด์๋๊ฐ?
polyglot technology : ์ฌ๋ฌ๊ฐ์ง stroage, ์ธ์ด๋ค์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ์ (polyglot)์ ์ ์ฉํ ์ ์๋๊ฐ?
Soa vs MSA
SOA : ์ฌ์ฌ์ฉ์ ํตํ ๋น์ฉ์ ๊ฐ (์๋น์ค ๊ณต์ ์ต๋ํ)
๊ณตํต์ ์๋น์ค๋ฅผ ESB์ ๋ชจ์ ์ฌ์ ์ธก๋ฉด์์ ๊ณตํต ์๋น์ค ํ์์ผ๋ก ์๋น์ค ์ ๊ณต
MSA : ์๋น์ค๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ์ด ๋ณํ์ ๋ฅ๋์ ์ผ๋ก ๋์ (์๋น์ค ๊ณต์ ์ต์ํ)
๊ฐ๋ ๋ฆฝ๋ ์๋น์ค๊ฐ ๋ ธ์ถ๋ REST API ์ฌ์ฉ
Last updated