Kubernetes Overview
- Kubernetes : ์ปจํ
์ด๋ํ๋ App ์ ์๋์ผ๋ก ๋ฐฐํฌ, ์์ ํ ๋น, ์ด์์ ํ๋ ๊ตฌ๊ธ์ด ์ ์ํ ์คํ์์ค ์์คํ
์ด๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค์๊ฒ ์ด์์๋ ๋ณธ์ธ์ด ์ํ๋ desired state ๋ฅผ ์ ๊ณตํ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๋ desired state ๋ฅผ ๋ง์กฑ์ํค๋ ์ชฝ์ผ๋ก ์กฐ์ ํ๋ค.
- ์ด์์์ ์ต์ ๋จ์๋ pod ๋จ์์ด๋ค. ๋๋ฌด ์์ ๋จ์๊ฐ ์๋๋ผ, ์๋น์ค ์
์ฅ์์์ ์ต์ ๋จ์
- cattle ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ฃฝ์ด๊ณ ๋ค์ ๋ง๋๋ ๊ฒ์ด๊ณ ์ด๋ฅผ ip ์ฃผ์๋ก ๋ฐ์ ํ์
ํ๋ ค ํ๋ฉด ํ๋ค๋ค. ๋๋ฌธ์ DNS ๋ฅผ ์ด์ฉํ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ๋์์ํจ๋ค.
Monolithic vs Microservice
- ๊ฐ์ด ์ผ ์ธํ
CPU ์ ๋ฆฌ๋
์ค๋ฅผ ์ฌ๋ฆฌ๊ณ ํ ๋์์ ํด์ผํ ์ผ์ ์ชผ๊ฐ ์ฌ๋ฌ ๊ฐ์ ์ปดํจํฐ์์ ๋คํธ์ํน์ ํด์ ์๋์ํค๋ฉด ๋น์ฉ์ ์๋ ์ ์์ง ์์๊น?
- ํ์ํ ๋ ํ์ํ ๋งํผ CPU, Disk, Network ๋ฅผ ๋น๋ ค ์ฐ๊ณ ์ฌ์ฉํ ๋งํผ ๋น์ฉ์ ์ง๋ถํ๋ค. - Cloud Computing
- ์ชผ๊ฐค ์ ์๋ค๋ฉด ๋งค์ฐ ์์ ๋จ์๋ก ์ชผ๊ฐ ๋ค.
- ์ชผ๊ฐ ๊ฒ์ ๋์์ผ ํ๊ธฐ ๋๋ฌธ์ OS ๋ก ์ธํด CPU ๋ฅผ ๋ง์ด ์ก์ ๋จน๋ ๊ฐ์๋จธ์ ์ด ์๋ ํ์ํ ๋ ํ์ํ ๋งํผ ์ฌ์ฉํ ์ ์๋ ์ปจํ
์ด๋ ๊ธฐ์ ์ ์ฌ์ฉํ๋ค.
- ์ ํต์ ๋ฐฉ์
- ๋ชจ๋ ํต์ผ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ค.
- Main Frame : ๋ณด์์ ์ด๊ธฐ ๋๋ฌธ์ ๊ณ ์ํ๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค
- Monolithic ์ํคํ
์ณ์์ ์ปค๋ค๋ ํ๋์ ์๋น์ค๋ก ์ฌ์ฉํ๋ ๊ฒ์ 100 ๊ฐ์ ๊ธฐ๋ฅ์ด๋ผ๊ณ ํ๋ฉด ๊ฐ๊ฐ์ ์ฐข์ด ๋
๋ฆฝ๋ ๊ฒ์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ธฐ์
- ์๋น์ค์ ๋ฐ๋ผ ํ์ํ ๊ฒฝ์ฐ ํ์ํ ๊ธฐ์ , ๋ ๊ด์ฐฎ์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๊ฐ ํ๋ก๊ทธ๋จ๋ค์ ํน์ฑ์ ๋ง๊ฒ ์๋ง๋ ๊ธฐ์ ์ ์ฌ์ฉํ๋ค.
- ์ ํํ๋, ํต์ผ๋ ํํ๋ฅผ ๊ฐ์ง ํ์ ์๋ค.
- ํ๋ก๊ทธ๋จ์ด ์ ์ ์ปค์ง๊ณ ํ์ด ์ปค์ง๋ฉด ์ด๋ป๊ฒ ๋๋๊ฐ?
- ์ ํต์ ๋ฐฉ์
- ํ๋์ ํ๋ก๊ทธ๋จ์ผ๋ก ํตํฉํ๊ฑฐ๋ 2~3 ๊ฐ๋ก ๋๋์ด ๊ธฐ๋ฅ์ ๋ถํ ํ๋ ํ์
- ํ๋์ ํต์ผ๋ ์ธ์ด๋ก ๊ฐ๋ฐ
- ๊ฐ๋ฐ ๋ฅ๋ ฅ์ด ์ ๋๋ฉด ๊ฐ๋ฐ ๋ฅ๋ ฅ์ ๊ธธ๋ฌ์ผ ํ๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค
- ์๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ ์ฅ์ ์ ๊ฐ๋๋ค.
Microservice Architecture
- Scalablility
- ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ ๋ค๋ฅธ ๋ง์ดํฌ๋ก์๋น์ค์ ์ํฅ์์ด ๋
๋ฆฝ์ ์ผ๋ก ์ฉ๋์ ๊ฐ์ง ์ ์๋ค.
- ํน์ ๊ธฐ๋ฅ์ ์ฉ๋์ ๋๋ฆฌ๊ณ ์ถ์ ๋ Monolithic ์ ๋ถ๋ฆฌํ์ง ๋ชปํด ๋ค๋ฅธ ๊ธฐ๋ฅ๋ scale up ๋์ด์ผ ํ๋ค. ํ์ง๋ง ๋ง์ดํฌ๋ก์๋น์ค๋ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์์ด ์ฉ๋์ ๋๋ฆด ์ ์๋ค.
- Availability
- ํ ์๋น์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ค๋ฅธ ๋ง์ดํฌ๋ก์๋น์ค๋ค์ ๋ฏธ์น๋ ์ํฅ์ด ํฌ์ง ์๋ค.
- ๋ฌธ์ ๊ฐ ์๊ธด ๋ง์ดํฌ๋ก์๋น์ค๋ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋์ด๋ฆด ์ ์๋ค.
- 100 ๊ฐ ์ค 1 ๊ฐ์ ๊ธฐ๋ฅ์ด ์ค๋์์ ํ๋ ๊ฒฝ์ฐ์ Monolithic ์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ๋ชจ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๋ง์ดํฌ๋ก์๋น์ค๋ ๋
๋ฆฝ์ ์ผ๋ก ๋์ด ์์ด ๋ค๋ฅธ ์๋น์ค์ ๋ฏธ์น๋ ์ํฅ์ด ํฌ์ง ์๋ค.
- Fault Tolerance
- ๋ค๋ฅธ ์๋น์ค๋ค์ด ์ ์๋ํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด App ์ด ๋ค์ด๋๋ ๊ฒ ๋์ ์ ์์ ๋ถ๋ถ๋ง ์ํฅ ๋ฐ๋๋ค.
- Agility
- ๋น ๋ฅธ ๋ฐฐํฌ ๊ณผ์ ์ด agile ํ๊ฒฝ์ ์๋ฏธํ๋ ๋ณํํ๋ ์๊ตฌ๋ฅผ ์ํ ์ ํฉํ ์ํคํ
์ฒ๋ฅผ ๋ง๋ค ์ ์๋๋ก ํ๋ค.
- 100 ๊ฐ์ ๊ธฐ๋ฅ์ 1000 ๋ช
์ด ๋ง๋ค์๋ค๊ณ ํ๋ค๋ฉด 1 ๊ฐ์ ๊ธฐ๋ฅ์ 10 ๋ช
์ด ์ ์. Monolithic ์ ๋ชจ๋๊ฐ ๊ฐ์ ์ ํ ์๊ฐ๊น์ง ๊ธฐ๋ฅ ์ ์์ ์๋ฃํด์ผ ๋น๋, ๋ฐฐํฌ๋ฅผ ํ ์ ์๋ค. ํ์ง๋ง ๋ง์ดํฌ๋ก์๋น์ค๋ ๊ฐ ๊ธฐ๋ฅ๋ง๋ค ๋ฐ๋ก ๋น๋, ๋ฐฐํฌ๋ฅผ ํ ์ ์๋ค. ๋น ๋ฅธ ๋น๋, ๋ฐฐํฌ ๊ฐ๋ฅ
- Polyglot Persistence
- Polyglot : ๋ค์ํ ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ฆ, ์ฌ๋ฐ๋ฅธ ์ฌ๋ก์ ์๋ง๋ ์ฌ๋ฐ๋ฅธ ๋๊ตฌ๋ฅผ ์ ํํ๋ค.
- Application stack ์ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌถ์ฌ์์ง ์๋๋ค.
- Maintainability
- ๊ธฐ๋ฅ๋ค์ ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ์๋ ์ฝ๋ ์์ผ๋ก ์ธํด ์ ์ง ๋ณด์ํ๊ธฐ ํธ๋ฆฌํ๋ค.
- MS Word / Office / Game โ Monolithic โ ๋น ๋ฅด๊ฒ ๋ณ๊ฒฝํ์ง ๋ชปํ๋ค.
์ Microservice Architecture ์ธ๊ฐ?
- Software Stack agnostic
- ํ๋์ ์ํํธ์จ์ด ์คํ์ผ๋ก ๋ฌถ์ธ ๊ฒ์ด ์๋๋ผ ๋๋์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค์ ์๋ง๋ ๋ค์ํ ์ํํธ์จ์ด ์คํ์ด ์ฌ์ฉ๋ ์ ์๋ค.
- Faster Development
- ๋น ๋ฅด๊ฒ ์๊ตฌ์ฌํญ์ ์๋ง๋ ๋ณ๊ฒฝ์ ํ ์ ์๋ค.
- Clear Separation of Business Concerns
- ๋น์ฆ๋์ค์ ๋ฌธ์ ์ ๋ํ ๋ช
ํํ ๋ถ๋ฆฌ๊ฐ ๋๋ ์ . ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋น ๋ฅด๊ฒ ์ํตํ๊ณ ์์ง์ด๊ณ ํด๊ฒฐํ ์ ์๋ค.