2021-12-16-if-kakao-2021
Thing for Post Cloud Native
- CMMI(Capability Maturity Model Integration)
- Level 4
- ์ ๋ง ๋ง์ด ์ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ธก์ ์ด ํ์ํ ๋จ๊ณ
- ์ ๋ง ๋ง์ด ์ฐ๋๋ฐ ํจ์จ์ ์ผ๋ก ์ฐ๊ณ ์๋๊ฑด๊ฐ?
- ์ฌ๋ด์์ ๋ฆฌ์์ค ํ์งํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ฌ
- Level 5
- ์๋ก์ด ๊ณ ๋ฏผ๋ค
- ๋คํธ์ํฌ ๋ชจ๋ธ / ๋๋ฐ์ด์ค / ์์คํ
- ์ปดํจํ ์์คํ / ์ํคํ ์ณ
- ์๋ก์ด ๋ฐ์ดํฐ ์์คํ
- Cloud-Native?
- ์ ๋ง ๋ง์ ๋ฆฌ์์ค / ๋ฐ์ดํฐ / ์ด๋ฒคํธ / ์์กด์ฑ์ด ๋ฐ์
- ์ ์ ํจ์จํ ๋ฐฉํฅ์ผ๋ก ์๊ฐํ๊ฒ ๋จ
- ๋ฆฌ์์ค / ์์กด์ฑ
- ๋ฉํฐ ํด๋ฌ์คํฐ / ๋ฉํฐ ์๋น์ค ๋ชจ๋ํฐ๋ง Sass ๊ฐ๋ฐ
- ๋ฐ์ดํฐ
- RDB Service
- K/V Service
- Time Series DB Service
- Log Stream DB Service
- ์ด๋ฒคํธ
- CNCF Cloud EVENT Pub/Sub as a Service
- https://cloudevents.io
- Sass๋ก ๊ตฌ์ฑ๋ ์๋ก์ด Cloud Native๊ฐ ์์์ด ๋๋๊ฒ ์๋๊น?
- ์๋ก์ด ํด๋ผ์ฐ๋ ๊ณ ๋ฏผ์ ์์
์นด์นด์คํก ์๋ฒ์ ์คํ๋ง ๊ณตํ๊ตญ ํ์ถ๊ธฐ
-
์คํ๋ง ๊ณตํ๊ตญ์ด ์ข์์
- ๋ง์ ๊ฒฝํ์
- ์ํ๊ณ
- ์ฅ๊ธฐ๊ฐ ์ง์
- ๋ฐ๋ผ์ ๋ง๋ค๊ธฐ ์ฝ๊ณ ์ค๋ซ๋์ ์ฐ๊ธฐ ์ข์ ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ
-
์คํ๋ง์ ๋จ์ ์ ์์๊น?
- ํ์ค๋ณด๋ค ๊ด์ต
- RFC7235 ๊ตฌํ์ ๋ค๋ฆ
- Spring ์์ธ๋ฅผ ๋์ง
- Ktor ํ์ค์ ์ ์งํด
- ์ ์ ๋๋ ์์กด์ฑ
- ์ฌ๋ฌ๊ฐ ๋ฒ์ ผ์ ๋์์ ์ฌ์ฉ.
- ๋ณ๊ฒฝํ๊ธฐ ๋งค์ฐ ๋ถํธํ ์ํฉ
-
์คํ๋ง ๊ณตํ๊ตญ์ ํํ๋ค?
- Dependency Injection
- Database Integration
- Interceptor & Filter
-
ํ์ถํ๊ธฐ ์ํ ๋ ธ๋ ฅ๋ค
- Kotiln?
- ์ต์ ๊ธฐ๋ฅ / ์ฝ๋ฃจํด
- Spring MVC
- ๋ณต์กํ Servlet
- Ktor
- ๊ฐ๋จํ ์ฒ๋ฆฌ
- ํ์ํ ๊ธฐ๋ฅ์ ์ง์ ์ฌ์ฉํด ๊ตฌ์ฑ
- ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ - ์ฝ๋ฃจํด ์ ๊ณต
- Kotiln?
-
Dependency Injection
- Spring
- ๋ค์ํ Callback ์ ๊ณต
- Annotation ๊ธฐ๋ฐ
- Kotiln
- Callback์ ๋ฐ๋ก ์์
- DSL ํ์
- Spring
-
Database Integration
- Spring
- String์ผ๋ก ๊ตฌ์ฑ
- ์ปดํ์ผ ์ฒดํน์ด ์๋จ
- DSL ์ฌ์ฉํ๋ ค๋ฉด QueryDSL ์ฌ์ฉํด์ผ ํจ.
- Kotlin
- ์์ฒด DSL ์ง์
- Spring
-
Interceptor & Filter
- Spring
- Filter - Interceptor ์์ผ๋ก ๊ตฌ์ฑ
- Kotiln
- ์์ ๋กญ๊ฒ pipeline์ ์ถ๊ฐํ ์ ์์
- ApplicationCallPipeline์ผ๋ก ๊ตฌ์ฑ
- Spring
-
ํ์ถ ํ๊ธฐ
- ์คํ๋ง์ ์์ฑ๋ ๊ธฐ๋ฅ์ด ๋ง์ ํธํ์ง๋ง ํน์ ํ๋ ์ ์ํฌ์ ๋ํ ์์กด์ฑ์ ๊ฐ์ง๊ณ ์ถ์ง ์๋ค.
๋ค์์นดํ ์ฟ ๋ฒ๋คํฐ์ค ์ด๊ด๊ธฐ
- Object manifest definition too
- Helm
- Kustomize
- CI / CD
- CI - Jenkins / Github action
- CD - Spinnaker / ArgoCD
- Stateless vs Stateful
- ๊ธฐ์กด Statefulํ ์ดํ๋ฆฌ์ผ์ด์ ์ Stateless๋ก ๋ณ๊ฒฝ
- Log System ๋ณ๊ฒฝ
- ๊ธฐ์กด์ Filebeat๋ก ์ฝ์ด์ ๋ก๊ทธ๋ฅผ ์ฌ์ฉ
- ์ฟ ๋ฒ๋คํฐ์ค๋ก ์ ํํ๊ฒ ๋๋ฉด์ ์ถ๋ ฅํํ๋ก ๋ณ๊ฒฝ - FluentD๋ก ์ฝ์ด ๋ก๊ทธ๋ฅผ ์ฌ์ฉ
- ๋ถํ์ํ ๋ก๊ทธ๋ฅผ ์ ๊ฑฐ
- ๋ฐฐํฌ๋ฐฉ์
- ๊ธฐ์กด์ Rolling Update
- ์ ํ ํ Blue/Green, Canary ๋ฐฐํฌ ๋ฐฉ์
- Warm up ์ด์ โ Canary๋ก ๋ฌธ์ ํด๊ฒฐ
- 502 โ 504 ์๋ฌ
- EndPoint ์ ๋ฐ์ดํธ๊ฐ ๋๋ ค ๊ธฐ์กด Pod์ ํธ๋ํฝ์ด ๋์ด๊ฐ๊ฒ ๋๊ณ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋จ
- ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
- GracefulShutdown
- PreStop hook
- ArgoRollout์ ์ค์ ๊ฐ
- ์ต๊ทผ kubernetes์์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด endpointslice ์ปจ์ ์ ๋์
- kubernetes ๋๋ฒ๊น ๋๊ตฌ Telepresence
์ด ๋ฉ์ง ์ฝ๋์ ์ปจ๋ฒค์ ์! : 2๋ฌ๊ฐ์ ์ปจ๋ฒค์ ๊ตฌ์ถ ์ฌ์
- ์ปจ๋ฒค์
์ ๋ง์ถ๊ธฐ ์ํ ๋
ธ๋ ฅ
- ์ฌ๊ณต์ ์ค์ด๊ธฐ
- ๋ง์ ์ฌ๋๋ค์ ์๊ฒฌ์ ๋ง์ถ๋๊ฑด ์ข์ง๋ง, ์ ๋ต์ด ์๋ ๋ฌธ์ ๋ฅผ ํ๋๋ก ๋ชจ์ผ๋ ๊ณผ์ ์ ๋งค์ฐ ์ค๋ ๊ฑธ๋ฆฐ๋ค.
- ๋ฆฌ์์น
- ์ ๋ช ํ ์ปจ๋ฒค์ ์ ์ฐพ์๋ณด๊ณ ๋น๊ต ๋ถ์
- ์ ํํ๊ธฐ
- ์ ์ ํ๊ฒ ๋น๊ตํ๊ณ ์ ํํ๊ธฐ
- ์ฌ๊ณต์ ์ค์ด๊ธฐ
- ์ฌ์ ์ด ๋๋ ํ ์ป์ ๊ฒ๋ค
- PR Template
- Commit Message Template
- Change log
- Release Note ์์ฑ
- EsLint
- ์ฌ๋๋์ ํด์ค ์๋ํ
- Provisioning Script
- brew install script ์์ฑ์ผ๋ก ํธํ๊ฒ ํ๊ฒฝ์ ํ ์ด ๊ฐ๋ฅ
Kubernetes Cluster ํ์ฅ ์ด๋๊น์ง ์์๋ณด๊ณ ์ค์ จ์ด์?
- ๋ฆฌ์ ผ๋ณ๋ก ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑ
- ๊ณ ๋ฏผ ํฌ์ธํธ
- ๋ฉํฐ ํด๋ฌ์คํฐ๋ก ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด์ ๊ด๋ฆฌ ํฌ์ธํธ ์ฆ๊ฐ
- ๋ชจ๋ํฐ๋ง ๋์๋ ์ฆ๊ฐ
- ๊ณ ๋ฏผ ํฌ์ธํธ
- ํด๊ฒฐ ๊ณผ์
- ํด๋ฌ์คํฐ ๋
ธ๋ ๊ด๋ฆฌ
- ๋ ธ๋ ๊ด๋ฆฌ ์์คํ - Labeling๊ณผ taint ๊ด๋ฆฌ
- Service์ Resource ๊ด๋ฆฌ
- ์๋น์ค ๋ฐฐํฌ
- ํด๋ฌ์คํฐ ๋
ธ๋ ๊ด๋ฆฌ
๋ฉํฐ ํด๋ฌ์คํฐ ํ๊ฒฝ์ ์ํ Kubernetes Operator ํจํด
- ์ฟ ๋ฒ๋คํฐ์ค ์์ปค ๋
ธ๋์ ์ปจํธ๋กค๋ฌ๊ฐ ๋์ํ๋ ์ผ๋ฐ์ ์ธ ๊ตฌ์กฐ
- ํด๋ฌ์คํฐ์ ์์ปค๋ 1๋1 ๊ด๊ณ๋ก ์ด์๋์์
- ๋จ์ผ ํด๋ฌ์คํฐ๋ ๋ฌธ์ ๊ฐ ์๋์๋ค.
- ํ์ง๋ง ๋ฉํฐ ํด๋ฌ์คํฐ ํ๊ฒฝ์์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋จ.
- GitOps๊ฐ ๋ฌธ์ ํด๊ฒฐ์ ๊ฐ๋ฅํ์ง๋ง ๊ทผ๋ณธ์ ์ธ ํด๋ต์ด ์๋
- ๋ฉํฐ ํด๋ฌ์คํฐ ํ๊ฒฝ์ ์ํ k8s ์ปจํธ๋กค๋ฌ ๋์์ธ ํจํด ์ ์ฉ
- ๋งค๋์ ํด๋ฌ์คํฐ
- ์ปจํธ๋กค๋ฌ๊ฐ ์กด์ฌ
- ์๋น์ค ํด๋ฌ์คํฐ
- ํ๋๋ง ์กด์ฌํ๊ฒ ๋๋ค.
- ๋งค๋์ ํด๋ฌ์คํฐ
- Resource, Management
- ์์ ์ค๋ณต ์ ๊ฑฐ
- ๊ด๋ฆฌ ํธ์์ฑ ์ ๊ณต
- Kubernetes Operator