๋ชฉ์ฐจ
์ํํธ์จ์ด ์ํคํ ์ฒ
1990 ~ 2000 : Robust, Distributed
2010 ~ : Resilient / Anti-Fagile, Cloud Native
- Antifrgile ํน์ง
- Auto scaling
- Microservices
- Chaos engineering - ๋ถํ์คํ ์ํฉ์์๋ ์์ ์ ์ธ ์๋น์ค
- Continuos deployment - ์ง์์ ์ธ ํตํฉ๊ณผ ๋ฐฐํฌ (ํ ์คํธ, ๋ชจ๋ํฐ๋ง,ํผ๋๋ฐฑ) => Continous Delivery
Cloud Native Architecture
- ํ์ฅ ๊ฐ๋ฅํ ์ํคํ
์ฒ
- ์์คํ ์ ์ํ์ ํ์ฅ์ ์ ์ฐ
- ํ์ฅ๋ ์๋ฒ๋ก ์์คํ ๋ถํ๋ถ์ฐ, ๊ฐ์ฉ์ฑ ๋ณด์ฅ (Scale up, Scale out)
- ์์คํ ๋๋, ์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ ๋จ์์ ํจํค์ง (์ปจํ ์ด๋ ๊ธฐ๋ฐ ํจํค์ง)
- ํด๋ผ์ฐ๋ ๊ตฌ์ถ๋ ๊ฐ์์๋ฒ์ ๋ฆฌ์์ค๋ค์ ๋ชจ๋ํฐ๋ง ๋๊ตฌํ์ฌ ์์คํ ์ ์ํฉ ๋ฐ ๋ฆฌ์๋ฅด๋ฅผ ํ์ธ ๊ฐ๋ฅ
- ํ๋ ฅ์ ์ํคํ
์ฒ
- CI/CD ์๋ํ ์ ์ฉ (๋น์ฆ๋์ค ํ๊ฒฝ ๋ณํ์ ๋์ ์๊ฐ ๋จ์ถ)
- ๋ถํ ๋ ์๋น์ค ๊ตฌ์กฐ (๋๋ฉ์ธ์ ํน์ง์ ๋ฐ๋ผ ๊ฐ๊ฐ์ ์๋น์ค๋ฅผ ๊ฐ๋ฐ)
- ๋ฌด์ํ ํต์ ํ๋กํ ์ฝ
- ์๋น์ค์ ์ถ๊ฐ์ ์ญ์ ์๋์ผ๋ก ๊ฐ์ง
- ์ฅ์ ๊ฒฉ๋ฆฌ (Fault isolation)
- ํน์ ์๋น์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ์ฃผ์ง ์์.
CI/CD
- ์ง์์ ์ธ ํตํฉ
- ํตํฉ ์๋ฒ, ์์ค ๊ด๋ฆฌ, ๋น๋ ๋๊ตฌ, ํ ์คํธ ๋๊ตฌ
- jenkins, Travis CI
- ์ง์์ ์ธ ๋ฐฐํฌ
- Continous Delivery (์คํํ์ผ ์๋๋ฐฐํฌ)
- Continous Deployment (์คํํ๊ฒฝ ์ธํ ์๋ฃ ํ ์๋ ๋ฐฐํฌ)
- ์นด๋๋ฆฌ ๋ฐฐํฌ์ ๋ธ๋ฃจ๊ทธ๋ฆฐ ๋ฐฐํฌ (๋น์จ์ ๋๋ ์ ์ฌ์ฉํ๊ฒ ํจ)
DevOps
๊ณ ๊ฐ์ ์๊ตฌ์ฌํญ์ ๊ณ์ํด์ ๋ณํํ๋ฏ๋ก ๊ทธ ๋ณํ์ ๋ง์ถฐ ์์ฃผ ๊ณํํ๊ณ ํ ์คํธํ๊ณ ํผ๋๋ฐฑ๋ฐ๊ณ ๊ฐ๋ฐํ์ฌ ๋ฐฐํฌํ๋์ ์ฒด ๊ฐ๋ฐ์ผ์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ณ์ํด์ ๊ฐ๋ฐํด๋๊ฐ๋ ๊ฒ์ด๋ค.
Container ๊ฐ์ํ
์ปจํ ์ด๋๋ ํธ์คํธ OS์์ ์ปจํ ์ด๋ ์์ง์ ์ค์นํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์๋์ ํ์ํ ๋ฐ์ด๋๋ฆฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ํ๋๋ก ๋ชจ์ ๊ฐ์๊ฐ ๋ณ๋์ ์๋ฒ์ธ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ๋ ํ๊ฒฝ์ ๋งํ๋ค.
12 factors
ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ธฐ ์ํด์ ์ง์ผ์ผํ๋ 12๊ฐ์ง ๊ท์น [์ฝ์ด๋ณผ๊ฒ]
https://medium.com/dtevangelist/12-factors-%EB%9E%80-b39c7ef1ed30
Monolith vs. MSA
- Monolith
- ๋ชจ๋ ์ ๋ฌด ๋ก์ง์ด ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ํํ๋ก ํจํค์ง ๋์ด ์๋น์ค
- ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๊ฐ ํ๊ณณ์ ๋ชจ์ฌ ์ฐธ์กฐ๋์ด ์๋น์ค๋๋ ํํ
=> ์์ ๋ณํ์๋ ์ ์ฒด ์์คํ ์ด ๋น๋๋๊ณ ๋ฐฐํฌ๋์ผ ํ๋ค.
=> ํ๋์ ๊ธฐ๋ฅ ์ค๋ฅ์๋ ์ ์ฒด ์์คํ ์ด ๋ค์ด๋๋ค.
- Microservice
- ๊ธฐ๋ฅ ๋จ์์ ๊ฐ๊ฐ์ ์๋น์ค ๊ตฌ์ถ
- ์๋ก ๋ ๋ฆฝ์ ์ธ ์ธ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ์ง ์ ์์ (๊ฐ๊ฐ์ ์๋น์ค์ ํน์ฑ์ ๋ง๊ฒ ์ ํํด์ ์ฌ์ฉ)
- ์๋น์ค ๋จ์์ ์๋ํ๋ ๋น๋ ๋ฐ ๋ฐฐํฌ
- API๋ฅผ ํตํ ์๋น์ค๊ฐ ํต์
- ๊ธฐ๋ฅ ๋จ์์ ๊ฐ๊ฐ์ ์๋น์ค ๊ตฌ์ถ
๋ง์ดํฌ๋ก์๋น์ค ๋์ ์ ์ ํ์ธํด์ผํ ์กฐ๊ฑด
- Microservice ํ ๊ตฌ์กฐ
- Two Pizza team (8 ~ 10)
- API ํ์๊ฐ ์ํ ํ๊ฒ ๊ฐ๋ฅํ ํ
- ๊ฐ๊ฐ์ ์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ, ํ ์คํธ, ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ ํ
SOA vs. MSA
SOA - ์ฌ์ฌ์ฉ์ ํตํ ๋น์ฉ์ ๊ฐ
- ๊ณตํต๋ ์๋น์ค๋ฅผ ๋ชจ์ ๊ณตํต ์๋น์ค ํ์์ผ๋ก ์ ๊ณต
MSA - ์๋น์ค ๊ฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ์ด ๋ณํ์ ๋ฅ๋์ ์ผ๋ก ๋์
- ๊ฐ ๋
๋ฆฝ๋ ์๋น์ค๊ฐ ๋
ธ์ถ๋ REST API๋ฅผ ์ ๊ณต
- REST ์ฑ์๋ ๋ชจ๋ธ
- level1 - uri์ ์ ์ ํ ์์์ ๋ ธ์ถ
- level2 - level1 + HTTP Methods, [GET, POST, PUT, DELETE..]
- level3 - level2 + HATEOAS, ๋ฐ์ดํฐ์ ๊ฐ๋ฅํ ์ก์ ๋ฉํฐ์ ๋ณด๋ฅผ ํจ๊ป ๋๊ฒจ์ค
- MSA Component -
Service Mesh - API Gateway -> Service Router [Service Discovery] -> Load Balancing -> ๊ฐ ์ธ์คํด์ค ์๋น์ค์ ์์ฒญ
CI/CD ์๋ํ
Backing Service (DB ๋ฑ)
Telemetry (Monitoring, Diagnostics)
MSA ๊ธฐ๋ฐ ๊ธฐ์
Spring Cloud
- Spring Cloud Config Server
- ํ๊ฒฝ์ค์ ์ ๋ณด (Gateway์ ๋ณด, ์๋ฒ์ IP์ ๋ณด ๋ฑ)
- ๋น๋์์ด ์ธ๋ถ์ ์ฅ์์์ ํ๊ฒฝ์ค์ ์ ๋ณด ๋ฐ๊ฟ์ ์ฌ์ฉํ๋๋ก ํจ
- Location Transparency
- Naming Server (Eureka)
- Load Distribution (Load Balancing)
- ์๋ฒ์ ์์ฒญ ๋ถ์ฐ ๋ฐ Gateway ๊ธฐ๋ฅ
- Ribbon (client side)
- Spring Cloud Gateway
- Easier Rest Client
- ์๋ก๊ฐ ์ํ ํ ํต์ ์ ์ํด
- Visibility and monitoring
- Fault Tolerance