๐ ์์ฝ
๋ชจ๋๋ฆฌ์ ์ํคํ
์ฒ์ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ณ(MSA: Micro Service Achitecture)
๋ชจ๋๋ฆฌ์ ์ํคํ
์ฒ๋ ํ๋์ ์๋ฒ์ ๋ชจ๋ ๋ด์ฉ์ด ๋ค์ด๊ฐ์๋ ๊ตฌ์กฐ, ๊ฐ์ฅ ํํ ๋ง๋๋ ๊ตฌ์กฐ
๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ
์ฒ๋ ์ฌ๋ฌ ๊ฐ์ ์๋น์ค๋ฅผ ๋ถ๋ฆฌ์์ผ๋์ ๊ตฌ์กฐ
์ฌ๋ฌ๊ฐ์ ์๋น์ค๋ฅผ ๋ด๊ณ ๊ด๋ฆฌํ๋ ๊ธฐ์ ๋ก ๋์ปค์ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ฃผ๋ชฉ๋ฐ์ผ๋ฉฐ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ๊ตฌ์ถ๋๊ณ ์์
์์ ๊ธฐ์ :
– Basic : MSA
๐ ๊ธฐ์ ๊ตฌํ
์คํ :
- docker desktop - linux
๐ ๋ชจ๋๋ฆฌ์ vs MSA
๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ : ํ๋์ ์๋ฒ์ ๋ชจ๋ ๋ด์ฉ์ด ๋ค์ด๊ฐ์๋ ๊ตฌ์กฐ, ๊ฐ์ฅ ํํ ๋ง๋๋ ๊ตฌ์กฐ
๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ : ๋ชจ๋ ์์ค(์ธ์ฌ๋ถ/๊ฐ๋ฐ๋ถ/์ฐ๊ตฌ์ ๋ฑ)๋ฅผ ๊ฐ์์ ์๋น์ค๋ก ๋ถ๋ฆฌ์์ผ ๋์ ๊ตฌ์กฐ => 1๊ฐ์ ์๋น์ค๋ฅผ ์ฃผ๋ก ๋์ปค ์ปจํ ์ด๋์ ํ์ฌํจ
๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ ๊ฐ์ # 1 : ๋์ปค๋ฅผ ์ด์ฉํด์ ๊ฐ๊ฐ์ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ตฌ์กฐ
๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ ๊ฐ์ # 2 : ๋์ปค+์ฟ ๋ฒ๋คํฐ์ค ์ด์ฉํด์ ๊ฐ๊ฐ์ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ตฌ์กฐ
(1) ๋ง์ดํฌ๋ก ์๋น์ค ์ฃผ์ ๊ธฐ์
1) ๋์ปค : ๊ฐ์ํ ๊ธฐ์ ์ ๋ฐ์ ์์ผ ๊ฐ๋จํ๊ฒ ์๋น์ค๋ฅผ ๊ตฌ์ถ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋ง๋ ๊ธฐ์ , ์ปจํ ์ด๋ ๊ธฐ์ ์ด๋ผ๊ณ ๋ ํจ
2) ์ฟ ๋ฒ๋คํฐ์ค(kubernates:k8s) : MSA๋ฅผ ๊ตฌ์ถํ๋๋ผ๋ ๊ธฐ๋ฅ์ด ์ ์ ์ถ๊ฐ๋๊ฑฐ๋ ์๋น์ค๊ฐ ์ ์ ์ถ๊ฐ๋ ์๋ก ๊ด๋ฆฌ๋๋ ๋์ปค ์ปจํ ์ด๋ ์๊ฐ ๋์ด๋ ๊ด๋ฆฌ์ ์ด๋ ค์์ด ์๊น. ์ด๋ฐ ์ปจํ ์ด๋๋ค์ ์ผ๊ด์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ ๋๊ตฌ๊ฐ ํ์ํ๋ฐ ์ค์ผ์คํธ๋ ์ด์ ํด์ด๋ฆฌ๊ณ ํ๋ฉฐ, ๊ฐ์ฅ ์ธ๊ธฐ์๋ ๊ฒ์ธ ๊ตฌ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค์
(1) ๋ง์ดํฌ๋ก์๋น์ค์ ๊ตฌ์ถ์ ํ์ ๊ธฐ๋ฅ
- ๋ค์์ ํธ์คํธ(์๋ฒ)๋ฅผ ํ๋์ ํด๋ฌ์คํฐ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฒ - ์ฌ๋ฌ ๊ฐ์ ํธ์คํธ(์๋ฒ)์ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ - ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ก ์๋น์ค๋ค์ ์ฐ๊ฒฐํ๋ ๊ฒ - ๋ถํ๊ฐ ์๊ธฐ๋ฉด ์๋ฒ๋ฅผ ์๋์ผ๋ก Scale-out ํ๋ ๊ฒ - ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ๊ธฐ์กด ์ปจํ ์ด๋๋ฅผ kill ํ ํ ์๋ก์ด ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ฑํ๋ ๊ฒ - ์ปจํ ์ด๋ Health Check๋ฅผ ํ๋ ๊ฒ - ์ปจํ ์ด๋ ๊ฐ Storage ๋ฐ Network๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ ์ด ์ธ์๋ ๋ ๋ง์ ๊ธฐ๋ฅ์ด ์๊ตฌ๋๋ค
(2) ์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ๋ฅ
- ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ - ๋ถ์ฐ ํ๊ฒฝ์์ ๋๊ท๋ชจ ์ปจํ ์ด๋๋ค์ ๋ํ ๊ด๋ฆฌ๋ฅผ ํจ - Kubernetes, Docker Swarm, Apache Mesos/Marathon ๋ฑ๊ณผ ๊ฐ์ ๋๊ตฌ๋ค์ด ์กด์ฌํจ - Kubernetes๊ฐ ํ์ค์ฒ๋ผ ์๋ฆฌ๋ฅผ ์ก์ - Google์์ ๊ฐ๋ฐํ๊ณ ํ์ฌ๋ CNCF์ ์ด๊ด๋์๋๋ฐ, ์ด๋ ์๋ฆฌ์ ์ผ๋ก ์ฌ์ฉํ์ง ์๊ฒ ๋ค๋ ์์ง - Kubernetes์๋ Google์ ๋๊ท๋ชจ ๋ถ์ฐ ํ๊ฒฝ ์ด์ ๋ ธํ์ฐ์ ์ฒ ํ์ด ๋ น์์์ - ์ฌ์ค์ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ํ์ค - ๋๊ท๋ชจ ์ํ๊ณ ๋ฐ ์ปค๋ฎค๋ํฐ๊ฐ ๋ง๋ค์ด์ง - ์ฃผ๋ก ๋ฐ๋ธ์ต ์์ง๋์ด๋ค์ด ๋ค๋ฃธ
(3) ๋์ปค / ์ฟ ๋ฒ๋คํฐ์ค ๋ฅผ ์ด์ฉํ MSA ์ํคํ ์ณ ์์คํ ๊ตฌ์ฑ๋
- k8s ๋ ธ๋ : ๋ง์คํฐ ๋ ธ๋ 1๊ฐ, ์ํฌ๋ ธ๋ 2๊ฐ๊ฐ ์ต์ ๊ตฌ์ฑ์, ๋ง์คํฐ ๋ ธ๋๋ ์ํฌ๋ ธ๋๋ฅผ ๊ด๋ฆฌํ๋ ์ญํ ์ ํจ - service : ์ธ๋ถ์ ๋ ธ์ถํด์ ์ ์ ๊ฐ ์ ๊ทผํ ์ ์๊ฒ ๋ ธ์ถํ๋ ๊ธฐ๋ฅ - ingress : ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ๊ธฐ๋ฅ์ ๋ด๋นํด์ ์ ์ ์ ์์ฒญ์ ๋ํด ์ ํฉํ ์ปจํ ์ด๋๊ทธ๋ฃน(ํ๋)์ ์ฐพ์์ฃผ๋ ๊ธฐ๋ฅ - kubelet : ๋์ปค๋ฑ์ด ์ ์๋ ์ปจํ ์ด๋ ๊ทธ๋ฃน์ ๊ด๋ฆฌํ๋ ํ๋ก์ธ์ค - kube proxy : ์ธ๋ถ์ ๋ด๋ถ ํต์ ์ ์ค๊ฐ ์ญํ ์ ํด์ ์๋น์ค๋ฅผ ๊ฐ๋ตํ ์ํค๊ณ ๋ณด์์ ์ฆ๊ฐ์ํค๋ ๊ธฐ๋ฅ - devops. : ์๋ฒ, cpu ๋ฑ ์์ ๋ฐฐ์ง ์๋ํ๊ธฐ์ ์ ๋ณด์ ํ๊ณ ์์ค๋ฅผ ์์ฑํ ์ ์๋ ์์คํ ์์ง๋์ด (developer + system ํฉ์ฑ์ด) - user. : ๋ทฐ, ๋ฆฌ์กํธ ๊ฐ์ ํ๋ก ํธ์๋ ํ๋ก๊ทธ๋จ์ ์๋ฏธํจ
(4) ์นดํ์นด / ๋์ปค / ์ฟ ๋ฒ๋คํฐ์ค ๋ฅผ ์ด์ฉํ MSA ์ํคํ ์ณ ์์คํ ๊ตฌ์ฑ๋
- ํธ๋์ญ์ : ์ฃผ๋ฌธ ํ ๊ฒฐ์ฌ๊ฐ ์งํ๋๋ ๊ณผ์ ์ด ํ๋์ ํ๋ฆ์ผ๋ก ์ค๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ฌด๋ ์ทจ์ ๋์ด์ผํจ - ํธ๋์ญ์ ์ ๊ฒฐ๊ณผ์ ์ผ๊ด์ฑ : ์ฃผ๋ฌธ ํ ๊ฒฐ์ฌ๊ฐ ์งํ๋๋ ๊ณผ์ ์์ ์ผ๋ถ ์๋น์ค(๋ฐฐ์ก ์๋น์ค ๋ฑ)๊ฐ ์ผ์์ ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ณต๊ตฌํ์๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฐฐ์ก์ด ์คํ๋๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์ ๋งํจ, ์์ฆ ํ๋์ ์ผํ๋ชฐ์์๋ ์ผ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ณต๊ตฌํ์๋ ๊ฒฐ์ข์ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ก ํจ - ์นดํ์นด : ํธ๋์ญ์ ๊ฒฐ๊ณผ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฉ์ธ์ง ํ ํ๋ก๊ทธ๋จ , ์คํ์์ค , ํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ 1) ๊ตฌ์กฐ : ์์ฐ์(์ฃผ์ ์์ฐ), ์๋น์(์ฃผ์ ์๋น), ํ ํฝ(๋ฉ์ธ์ง ์ฃผ์ ) 1) ํน์ง : ๋ฉ์ธ์ง๋ฅผ ์์ฐํ ์๋น์ ํ๋ก๊ทธ๋จ๋ค์ด ์ผ์ ์๋ฌ๋ก ์ค๋จ๋๋๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ฅํ๋ค๊ฐ ์ ์งํ๋ค๊ฐ ์๋น์ค ๋ณต๊ตฌํ์ ์๋น์๊ฐ ๋ณด๋ฅํ ์นดํ์นด ๋ฉ์ธ์ง๋ฅผ ๊ฐ์ ธ๊ฐ ์ ์๋๋ก ๋ง๋ค์ด ์ฃผ๋ ํ๋ก๊ทธ๋จ 2) ๋ฉ์ธ์ง : ํ์ผ์ ์ ์ฅ, ๋ฉ์ธ์ง ์ ์ค ์ฐ๋ ค ์์, ๋ณ๋ น์ฒ๋ฆฌ ๋ฑ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ชป์ง ์๋ ๋น ๋ฅธ ์ฝ๊ธฐ ์ฑ๋ฅ์ ๋ํ๋ 3) ๋ ํ๋ฆฌ์ผ์ด์ : ํ ํฝ(์ฃผ์ )์ ๋ณต์ ํด์ ๋ง์ฝ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ๋ณต์ ํ์ผ๋ก ๋์ฒด๋จ(fail-over) - ์ค๋ผํด : ๋ฐ์ดํฐ๋ฒ ์ด์ค
4-1) ์นดํ์นด / ๋์ปค / ์ฟ ๋ฒ๋คํฐ์ค ๋ฅผ ์ด์ฉํ MSA ์ํคํ ์ณ ์์คํ ๊ตฌ์ฑ๋
4-2) ์นดํ์นด / ๋์ปค๋ฅผ ์ด์ฉํ MSA ์ํคํ ์ณ ์์คํ ๊ตฌ์ฑ๋
(2) ๊ตฌ์ถ : ๋ณธ ๊ณผ์ ์์ ์ผํ๋ชฐ ํ ํ๋ก์ ํธ์์๋ ๋์ปค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ปจํ ์ด๋ ๊ธฐ์ ๋ง ๋ค๋ฃจ๊ณ ์ฟ ๋ฒ๋คํฐ์ค๋ ์ด๋ก ์ ์ธ ์์คํ ๊ตฌ์ฑ๋๋ก๋ง ์ ์ํจ
- ์์ธ : ์ค์ ๊ตฌ์ถ ํ๋ก์ ํธ ๋ฐฐํฌ ์ AWS ๋น์ผ ์ ๋ฃ ๋น์ฉ ํ์ํจ - ์ผํ๋ชฐ ํ๋ก์ ํธ๋ 1์ฐจ์ ์ผ๋ก ์์ ๋์ปค๋ก ์ ์ํ๊ณ ์๋น์คํจ - ์ฟ ๋ฒ๋คํฐ์ค๋ ํฅํ ๊ณํ์ผ๋ก ๋ฏธ๋ ํน์ ์์ ์ ๋ฐ๋ธ์ต ์์ง๋์ด์ ํ์ ํด์ ๋ฐฐํฌํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์งํํจ