Microservice Architecture

Microservice ์•„ํ‚คํ…์ฒ˜

์ž‘๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์„œ๋น„์Šค๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ(๊ฐ db ๋˜ํ•œ ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉ) API์„ ์ด์šฉํ•ด์„œ ํƒ€ ์„œ๋น„์Šค์™€ ํ†ต์‹ ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ์•„ํ‚คํ…์ฒ˜

์ด์ƒ์šฐ๋งค๋‹ˆ์ €๋‹˜์ด ์ฃผ์‹  ํ”Œ๋žซํผ ๊ตฌ์„ฑ ์ปดํฌํ„ดํŠธ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด๊ณ  ๊ทธ๋ฆผ์„ ๋ณด๋‹ˆ๊นŒ ์‰ฝ๊ฒŒ ์ดํ•ด!!!

์—ฌ๊ธฐ์„œ ๋งŽ์€ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค : https://www.nginx.com/blog/introduction-to-microservices/

๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ, ํ™•์žฅ ๋  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๋“ค์„ ์กฐํ•ฉํ•ด์„œ ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค! ๊ทธ๋ฆฌ๊ณ  ํ•ญ์ƒ ๊ธฐ์ˆ  ์ค‘๋ฆฝ์  ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด์„œ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค ๊ตฌํ˜„ ๊ธฐ์ˆ ๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๋‹ค.

์žฅ์ 

  • ์„ธ๋ถ€ ์„œ๋น„์Šค๋กœ ๋‚˜๋ˆ ์„œ ์ž‘์—…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ์—๊ฒŒ ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์—ญํ•  ์ˆ˜ํ–‰

  • ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋กœ ์ด๋ฃจ์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ ์šฉ์ด

  • ๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค,

  • ๊ฐ๊ฐ์ด ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ธ๋ถ€์ ์ธ ํ™•์žฅ๋„ ์‰ฝ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • SRP(Single Responsibility Principle) ์›๋ฆฌ๊ฐ€ ์ž˜ ์ ์šฉ๋จ

๋ฒˆ์™ธ - ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์ง€ ์›์น™(SOLID)

  • SRP(Single Responsibility Principle) : ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

  • OCP(Open Closed Principle) : ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ์–ด์•ผ ํ•˜๊ณ , ์ˆ˜์ •์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค.

  • LSP(Liskov Substitution Principle) : ์ž์‹ ํด๋ž˜์Šค๋Š” ์–ธ์ œ๋‚˜ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  • ISP(Interface Segregation Principle) : ํ•˜๋‚˜์˜ ์ผ๋ฐ˜์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ตฌ์ฒด์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์ž

  • DIP(Dependency Injection Principle) : ์ƒ์œ„ ํด๋ž˜์Šค๊ฐ€ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•˜์ž

๋‹จ์ 

  • ํ•˜์ง€๋งŒ ๊ฐ ์„œ๋น„์Šค๋ณ„๋กœ API์„ ํ˜ธ์ถœํ•ด์„œ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ณ  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. => ๋”ฐ๋ผ์„œ ๋ถ€๋ถ„ ์‹คํŒจ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋„ ๋”ฐ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค.

  • ๊ฐ ํŠธ๋žœ์žญ์…˜์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค.

  • ๋‹จ์œ„๋ณ„๋กœ ์„œ๋น„์Šค๊ฐ€ ๋‚˜๋‰˜์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋”๋ผ๊ณ  ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€์˜ ํ™•์‹คํ•œ ์—ฐ๋™์„ ๋ณด์žฅํ•  ์ˆœ ์—†๋‹ค.

ํ•œ๋ˆˆ์— ์•Œ์•„๋ณด๊ธฐ ์‰ฌ์šด ๊ทธ๋ฆผ

API๋ฅผ ํ†ตํ•ด์„œ request๊ฐ€ ๋“ค์–ด์˜ค๊ฒŒ ๋˜๋ฉด Service Layer์—์„œ ๋ฐ›์•„์„œ Core Layer์— ๋“ค์–ด๊ฐ€์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๊ตฌ์กฐ

์ถœ์ฒ˜ : https://www.nginx.com/blog/introduction-to-microservices/

๋ชจ๋…ธ๋กœ์‹ ์•„ํ‚คํ…์ฒ˜

๊ธฐ์กด์— ์•Œ๊ณ  ์žˆ์—ˆ๋˜ ์ง„ํ–‰ ๋ฐฉ์‹์ด ๋ชจ๋…ธ๋กœ์‹ ์•„ํ‚คํ…์ฒ˜์ด๋‹ค. ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€ ์•ˆ์— ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฉ์‹์ด๊ณ , ํ•œ๋ฒˆ์— ๋‹ค ๋นŒ๋“œํ•ด์„œ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋ชจ๋…ธ๋กœ์‹ ์•„ํ‚คํ…์ฒ˜๋Š” ๋น ๋ฅด๊ฒŒ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๊ณผ ํ”ผ๋“œ๋ฐฑ๋„ ๋น ๋ฅด๊ฒŒ ๋ฐ›์•„์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์žฅ์ ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ 

  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ์— ํ•œ ๊ณณ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ!

  • ํ•˜๋‚˜์˜ ์ปค๋‹ค๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ์กด์˜ ์ปค๋‹ค๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  • ํ”„๋กœ๊ทธ๋žจ์ด ํฌ๋ฉด ํด์ˆ˜๋ก ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜์ •ํ•ด์„œ ์‹ค์ œ๋กœ ๋Œ๋ฆฌ๊ฒŒ ๋˜๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

ํ•œ๋ˆˆ์— ์•Œ์•„๋ณด๊ธฐ ์‰ฌ์šด ๊ทธ๋ฆผ

์ถœ์ฒ˜ : https://www.nginx.com/blog/introduction-to-microservices/

Last updated

Was this helpful?