+ 00 00 0000

Have any Questions?

05_Simple Coding – 01_MSA

05_Simple Coding – 01_MSA

Table of Contents

๐Ÿ“ƒ ์š”์•ฝ

๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜์™€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ(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์ฐจ์ ์œผ๋กœ ์ˆœ์ˆ˜ ๋„์ปค๋กœ ์ œ์ž‘ํ•˜๊ณ  ์„œ๋น„์Šคํ•จ
- ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํ–ฅํ›„ ๊ณ„ํš์œผ๋กœ ๋ฏธ๋ž˜ ํŠน์ • ์‹œ์ ์— ๋ฐ๋ธŒ์˜ต ์—”์ง€๋‹ˆ์–ด์™€ ํ˜‘์—…ํ•ด์„œ ๋ฐฐํฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์ง„ํ–‰ํ•จ

๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค