๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ”ฌapplication/- distributed system

[๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค] ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋Œ€ํ•ด์„œ ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž

by Wonit 2021. 4. 14.

Microservice, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ž€?

์ง€๋‚œ ์‹œ๊ฐ„ Monolithic vs SOA vs Microservice ์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ž€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์•Œ์•„๋ณด์•˜๋‹ค.

์•ž์„œ ๋ง ํ–ˆ๋“ฏ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋งŽ์€ ์„ฑ๊ณต ์‚ฌ๋ก€๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์‹ค์ œ๋กœ ์–ด๋–ค ์„ฑ๊ณต ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž.

 

Microservice๋ฅผ ์ฃผ๋„ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ธฐ์—…๋“ค

ํ˜„์žฌ IT ์‹œ์žฅ์—์„œ๋Š” Microservice๋ฅผ ์ฃผ๋„ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ธฐ์—…๋“ค์ด ์žˆ๋‹ค.

๊ทธ ์ค‘ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ๊ณณ์ด ๋ฐ”๋กœ Amazon๊ณผ Netflix์ด๋‹ค.

 

Amazon๊ณผ Netflix์˜ MSA

์ด ์‚ฌ์ง„์€ amazon.com ์ด๋ผ๋Š” ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ MSA ์—ฐ๊ฒฐ ๊ตฌ์กฐ์ด๋‹ค.

์ด ์‚ฌ์ง„์€ netflix๊ฐ€ ๋™์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ MSA ์—ฐ๊ฒฐ ๊ตฌ์กฐ์ด๋‹ค.

 

๋Œ€ํ‘œ์ ์œผ๋กœ ๊ตญ๋‚ด์—์„œ๋Š” ๋ฐฐ๋‹ฌ์˜ ๋ฏผ์กฑ๊ณผ NHN PAYCO ๋“ฑ์ด ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ฐ๊ฐ์˜ ๋‚ด์šฉ์€ ์•„๋ž˜์˜ ๋งํฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐฐ๋‹ฌ์˜ ๋ฏผ์กฑ ์˜์ƒ์€ MSA์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์—์„œ ๋”๋ถˆ์–ด ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•จ์— ์žˆ์–ด ๋งŒ๋‚  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๋“ค์„ ์ด์•ผ๊ธฐํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋งŽ์€ ๋‚ด์šฉ์„ ๋ฏธ๋ฆฌ ๊ฒฝํ—˜ํ•ด๋ณผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ฐ•์ถ”!

 

์ด๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ, ๋Œ€๊ทœ๋ชจ ๊ธฐ์—…์—์„œ ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋Š”๋ฐ MSA๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ทธ ๋งŒํผ ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•ด์ค€๋‹ค.

 

MSA์—์„œ๋Š” ์„œ๋น„์Šค์— ๋”ฐ๋ผ ํ”„๋กœ์ ํŠธ๋‚˜ ๋‚˜๋‰˜๊ณ  ํ•ด๋‹น ํŒ€์ด ๋‚˜๋‰˜๊ฒŒ ๋œ๋‹ค.

 

๊ฒฐ๊ตญ ์ด ๋ง์€ ๊ฐ๊ฐ์˜ ํŒ€์—์„œ๋Š” ๊ฐ ์„œ๋น„์Šค์— ํŠนํ™”๋œ ์–ธ์–ด๋‚˜ ๊ธฐ์ˆ ์„ ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

  • ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋“ค์— ๋Œ€ํ•œ ํ†ตํ•ฉ์ ์ด๊ณ  ์•ˆ์ •์ ์ธ ๊ด€๋ฆฌ?
    • Spring, Java
  • ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ, ์ธ๊ณต์ง€๋Šฅ ํ•™์Šต์„ ํ†ตํ•œ ์ƒˆ๋กœ์šด ์„œ๋น„์Šค ์ œ๊ณต?
    • Python, Tensorflow
  • ๋†’์€ ์ƒ์‚ฐ์„ฑ์„ ์œ„ํ•œ ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ž…์˜ ๊ฐœ๋ฐœ?
    • Ruby, Ruby On Rails
  • ๋น„๋™๊ธฐ์— ํŠนํ™”๋œ ์„œ๋ฒ„ ๊ฐœ๋ฐœ?
    • Javascript, Node.js
  • OS์™€ ๊ฐ€๊น๊ณ  ๊ณ ์ˆ˜์ค€์˜ ์„ฑ๋Šฅ ๊ฐœ๋ฐœ?
    • C/C++/Rust

์ด๋Ÿฐ ์‹์œผ๋กœ ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๊ทธ๋Ÿผ ์ง„์งœ MSA์— ๋Œ€ํ•œ ์ •์˜๋Š” ๋ญ˜๊นŒ์š”?

 

MSA ์— ๋Œ€ํ•ด์„œ๋Š” aws ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋‚ด๋ฆฐ๋‹ค.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ž˜ ์ •์˜๋œ API๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•˜๋Š” ์†Œ๊ทœ๋ชจ์˜ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์กฐ์ง์  ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋Š” ๋…๋ฆฝ์ ์ธ ์†Œ๊ทœ๋ชจ ํŒ€์—์„œ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋„์ž…ํ•œ๋‹ค๋ฉด ๋ช‡ ๊ฐ€์ง€์˜ ์ด์ ์ด ์กด์žฌํ•œ๋‹ค.

 

MSA์˜ ์ฒ ํ•™์€ ๋ญ˜๊นŒ์š”?

MSA ์ฒ ํ•™์€ ์œ ๋‹‰์Šค์˜ ์ฒ ํ•™๊ณผ ๋งค์šฐ ๋น„์Šทํ•˜๋‹ค.

Do one thing and do it well, ํ•œ ๊ฐ€์ง€ ์ผ์„ ํ•˜๋˜ ์ž˜ํ•˜๋ผ!

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ด์ ๋“ค

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ๋“ค์ด ์กด์žฌํ•œ๋‹ค.


์ด๋Š”

  • ๋ฏผ์ฒฉ์„ฑ
    • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๊ฐ๊ฐ ์„œ๋น„์Šค๋ฅผ ํ•˜๋‚˜์˜ ๋…๋ฆฝ์ ์ธ ํŒ€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ธฐ ๋•Œ๋ฌธ์— ์‹ ์†ํ•œ ์—…๋ฌด์— ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค
  • ์œ ์—ฐํ•œ ํ™•์žฅ์„ฑ
    • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•จ์— ์žˆ์–ด ์ž์œ ๋กญ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค๊ฐ€ ๊ธ‰์ฆํ•˜๋”๋ผ๋„ ๊ฐ€์šฉ์„ฑ์„ ์ตœ๋Œ€๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์†์‰ฌ์šด ๋ฐฐํฌ
    • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ CI์™€ CD๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ทธ์— ๋”ฐ๋ผ์„œ ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐ์ˆ ์ ์ธ ์ž์œ 
    • ์•ž์„œ ๋ณด์•˜๋“ฏ ์„œ๋น„์Šค์— ํŠนํ™”๋œ ์–ธ์–ด๋กœ ๊ฐœ๋ฐœ๋  ์ˆ˜ ์žˆ์–ด ํ•ด๋‹น ๊ธฐ์—…์€ ํ•˜๋‚˜์˜ ๊ธฐ์ˆ ๋กœ ๊ตญํ•œ๋˜์ง€ ์•Š๊ฒŒ๋œ๋‹ค.
  • ๋ณต์›์„ฑ
    • ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํŒจ์— ๋Œ€ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ €ํ•ญ์„ฑ์ด ์ฆ๊ฐ€๋œ๋‹ค.

์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

 

๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋Œ€ํ•ด์„œ ๋” ๊นŠ๊ฒŒ ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋„๋ก ํ•˜์ž

๋Œ“๊ธ€