A structure of gRPC applied microservices - yunkon-kim/test-on-github-actions GitHub Wiki

A structure of gRPC-applied microservices

gRPC๋Š” ๊ตฌ๊ธ€์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(Microservice Architecture (MSA))์—์„œ ๋งค์šฐ ๊ฑฐ๋Œ€ํ•œ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋ฉด์„œ ๊ฒช๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž Stubby๋ผ๋Š” ๋‚ด๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์ด๋ฅผ ์˜คํ”ˆ์†Œ์Šคํ™” ํ•˜๋ฉด์„œ ํƒ„์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๐Ÿ‘

2,000,000,000 ? ๊ตฌ๊ธ€์ด 1์ฃผ์ผ ๋™์•ˆ ๋„์šฐ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์ˆ˜
10,000,000,000 ? ๊ตฌ๊ธ€์ด 1์ดˆ ๋™์•ˆ ๋˜์ง€๋Š” ์›๊ฒฉ ํ˜ธ์ถœ์˜ ์ˆ˜
- ์˜ค๋ช…์šด, gใ…๋ฒผ์šด RPC, gRPC(๋น ๋ฅด๊ณ  ๊ฐ€๋ฒผ์šด Polyglot RPC framework), ์Šคํ”„๋ง์บ ํ”„ 2017 [Day1 B5]

gRPC ๊ด€๋ จ ๋งŽ์€ ๊ธ€์—์„œ "๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค", "๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์Šคํƒ€์ผ ์•„ํ‚คํ…์ฒ˜์— ์ ์šฉํ•˜๊ธฐ ์ข‹๋‹ค", "๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค" ๋ผ๋Š” ๋‚ด์šฉ์„ ์‹ฌ์‹ฌ์น˜์•Š๊ฒŒ ์ ‘ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, "gRPC๋ฅผ ๊ฐ€์ง€๊ณ  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ์–ด๋–ค ํ˜•์ƒ์ด ๋˜๋Š”๊ฐ€?"์— ๋Œ€ํ•œ ๊ถ๊ธˆ์ฆ์„ ์‹œ์›ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ๊ธ€์„ ์ ‘ํ•˜์ง€ ๋ชปํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ข

๊ทธ๋ž˜์„œ, ์Šคํ„ฐ๋””๋ฅผ ํ†ตํ•ด "gRPC๋ฅผ ์ ์šฉํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๊ตฌ์กฐ"์— ๋Œ€ํ•ด ์ดํ•ดํ•œ ๋ฐ”๋ฅผ ์„ค๋ช…ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ํฌ์ŠคํŠธ์™€ gRPC ๊ด€๋ จ ์„œ์ ์—์„œ ๋‚ด์šฉ, ๊ตฌ์กฐ, ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์Šคํ„ฐ๋”” ํ•˜๋ฉด์„œ ๋งŽ์€ ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ ์ €์ž ๋ฐ ์ฑ… ์ €์ž ๋ฐ ์˜ฎ๊ธด์ด์—๊ฒŒ ๊ฐ์‚ฌ์˜ ๋ง์”€์„ ์ „ํ•ฉ๋‹ˆ๋‹ค.

  • ์›์„œ: gRPC: Up and Running by Kasun Indrasiri and Danesh Kuruppu (O'Reilly). Copyright 2020 Kasun Indrasiri and Danesh Kuruppu, 978-1-492-05833-5
  • ๋ฒˆ์—ญ์„œ: gRPC ์‹œ์ž‘์—์„œ ์šด์˜๊นŒ์ง€(์ง€์€์ด: ์นด์ˆœ ์ธ๋“œ๋ผ์‹œ๋ฆฌ, ๋‹ค๋„ค์‰ฌ ์ฟ ๋ฃจํ‘ธ, ์˜ฎ๊ธด์ด: ํ•œ์„ฑ๊ณค), ์—์ด์ฝ˜์ถœํŒ์ฃผ์‹ํšŒ์‚ฌ, 2021๋…„ 1์›” 4์ผ ๋ฐœํ–‰, 979-11-6175-463-5
  • ์ฐธ๊ณ  ํฌ์ŠคํŠธ: ์ œ์ผ ํ•˜๋‹จ๋ถ€์— ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์‹ค์ œ ํ™˜๊ฒฝ์— ์ ์šฉ ๋ฐ ํ…Œ์ŠคํŠธ ํ•œ๊ฒƒ์ด ์•„๋‹Œ ์Šคํ„ฐ๋””์˜ ๊ฒฐ๊ณผ๋ฌผ ์ •๋„์ด๋‹ˆ ์ฐธ๊ณ  ๋ฐ”๋ผ๋ฉฐ, ์ •์ •ํ•  ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ๋ง์”€ํ•ด์ฃผ์„ธ์š”. ์ดํ›„ ์‹ค์ œ ํ™˜๊ฒฝ์— ์ ์šฉํ•˜๋ฉด ํ™˜๊ฒฝ์ •๋ณด, ์†Œ์Šค์ฝ”๋“œ์™€ ํ•จ๊ป˜ ๊ตฌ์กฐ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜…

gRPC ๊ฐœ์š”

์‚ฌ์‹ค "๊ฐœ์š”๋ฅผ ์ •๋ฆฌํ•ด์•ผํ•˜๋‚˜?"๋ผ๋Š” ๊ณ ๋ฏผ์„ ํ–ˆ๋Š”๋ฐ์š”. ๋‹ค๋ฅธ๋ถ„๋“ค๊ป˜์„œ gRPC ๊ฐœ์š”๋ฅผ ์—„์ฒญ ์ž˜ ์ž‘์„ฑํ•ด๋†“์œผ์…จ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฐธ๊ณ ์ž๋ฃŒ ์ค‘์—์„œ ์ž…๋ง›์— ๋งž๋Š” ๊ธ€์„ ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

gRPC์˜ ์žฅ๋‹จ์ 

"gRPC ์‹œ์ž‘์—์„œ ์šด์˜๊นŒ์ง€" ์„œ์ ์˜ "ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์˜ ์—ญ์‚ฌ" ๋ถ€๋ถ„์—์„œ "gRPC์˜ ์žฅ๋‹จ์ "์„ ์กฐ๋ชฉ์กฐ๋ชฉ ์ž˜ ์ •๋ฆฌํ•ด ๋†“์•˜๊ธฐ์— ์ด๋ฅผ ๊ฐ„๋‹จํžˆ ๋ณด์ด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

gRPC์˜ ์žฅ์ 

  • ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ํšจ์œจ์„ฑ: gRPC๋Š” JSON์ด๋‚˜ XML๊ฐ™์€ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š”(Humand-readable) ํ…์ŠคํŠธ ๋Œ€์‹  ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ(Protocol buffer) ๊ธฐ๋ฐ˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด gRPC ์„œ๋น„์Šค ๋ฐ ํด๋ผ์ด์–ธํŠธ์™€ ํ†ต์‹ ํ•จ, HTTP/2 ์ƒ์— ๊ตฌํ˜„๋จ
  • ๊ฐ„๋‹จ ๋ช…ํ™•ํ•œ ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค์™€ ์Šคํ‚ค๋งˆ: gRPC๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์šฉ ๊ณ„์•ฝ ์šฐ์„ (Contract-first) ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•˜์—ฌ ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•œ ํ›„ ๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ์„ ์ž‘์—…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜๊ณ  ์ผ๊ด€๋˜๋ฉด์„œ๋„ ์•ˆ์ •์ ์ธ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ฒฝํ—˜ ์ œ๊ณต
  • ์—„๊ฒฉํ•œ ํƒ€์ž… ์ ๊ฒ€ ํ˜•์‹: gRPC ์„œ๋น„์Šค ์ •์˜ ์‹œ ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ํ†ต์‹ ์— ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋จ, ๋Ÿฐํƒ€์ž„๊ณผ ์ƒํ˜ธ์šด์šฉ ์—๋Ÿฌ๋ฅผ ๊ทน๋ณตํ•˜๋Š”๋ฐ ๋„์›€์ด ๋จ
  • ํด๋ฆฌ๊ธ€๋ž: ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ ๊ธฐ๋ฐ˜์˜ gRPC ์„œ๋น„์Šค๋Š” ํŠน์ • ์–ธ์–ด์— ๊ตฌ์•  ๋ฐ›์ง€ ์•Š์Œ
  • ์ด์ค‘ ์ŠคํŠธ๋ฆฌ๋ฐ: gRPC๋Š” ํด๋ผ๋ฆฌ์–ธํŠธ๋‚˜ ์„œ๋ฒ„ ์ธก ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜๋ฏ€๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค๋‚˜ ์ŠคํŠธ๋ฆฌ๋ฐ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
  • ์œ ์šฉํ•œ ๋‚ด์žฅ ๊ธฐ๋Šฅ ์ง€์›: gRPC๋Š” ์ธ์ฆ, ์•”ํ˜ธํ™”, ๋ณต์›๋ ฅ(๋ฐ๋“œ๋ผ์ธ๊ณผ ํƒ€์ž„์•„์›ƒ), ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ตํ™˜, ์••์ถ•, ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ, ์„œ๋น„์Šค ๊ฒ€์ƒ‰ ๋“ฑ๊ณผ ๊ฐ™์€ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›
  • ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์ƒํƒœ๊ณ„์™€ ํ†ตํ•ฉ: gRPC๋Š” CNCF์˜ ์ผ๋ถ€์ด๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  ํ”„๋ ˆ์ž„์›Œํฌ(์˜ˆ, Envoy)์™€ ๊ธฐ์ˆ ์€ gRPC๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•จ
  • ์„ฑ์ˆ™ํ•˜๊ณ  ๋„๋ฆฌ ์ฑ„ํƒ๋จ: gRPC๋Š” ๊ตฌ๊ธ€์˜ ๊ฐ•๋ ฅํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์™„์„ฑ๋˜์—ˆ์œผ๋ฉฐ ์Šคํ€˜์–ด, ๋ฆฌํ”„ํŠธ, ๋„ทํ”Œ๋ฆญ์Šค, ๋„์ปค, ์‹œ์Šค์ฝ”, CoreOS์™€ ๊ฐ™์€ ์ฃผ์š” ๊ธฐ์ˆ  ํšŒ์‚ฌ์— ์ฑ„ํƒ๋จ

gRPC์˜ ๋‹จ์ 

  • ์™ธ๋ถ€ ์„œ๋น„์Šค ๋ถ€์ ํ•ฉ: ์™ธ๋ถ€ ์‚ฌ์šฉ์ž๋Š” gRPC๊ฐ€ ์ƒˆ๋กญ๊ธฐ ๋•Œ๋ฌธ์— ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ, ๊ณ„์•ฝ ๊ธฐ๋ฐ˜์ด๋ฉด์„œ ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์†์„ฑ์„ ๊ฐ–๋Š” gRPC ์„œ๋น„์Šค๋Š” ์™ธ๋ถ€ ๋‹น์‚ฌ์ž์—๊ฒŒ ๋…ธ์ถœ๋˜๋Š” ์„œ๋น„์Šค์˜ ์œ ์—ฐ์„ฑ์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ์Œ
  • ์„œ๋น„์Šค ์ •์˜์˜ ๊ธ‰๊ฒฉํ•œ ๋ณ€๊ฒฝ์— ๋”ฐ๋ฅธ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ๋ณต์žก์„ฑ: gRPC ์„œ๋น„์Šค ์ •์˜๊ฐ€ ๊ธ‰๊ฒฉํžˆ ๋ณ€๊ฒฝ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์ฝ”๋“œ ๋ชจ๋‘ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์•ผํ•˜๊ณ , CI ํ”„๋กœ์„ธ์Šค์— ํ†ตํ•ฉ๋˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ๊ฐœ๋ฐœ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ (์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†๋Š”ํ•œ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ํ”„๋กœํ† ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์ œ์—†์ด ์ƒํ˜ธ์šด์šฉ ํ•  ์ˆ˜ ์žˆ์Œ)
  • ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์€ ์ƒํƒœ๊ณ„: gRPC ์ƒํƒœ๊ณ„๋Š” ๊ธฐ์กด REST๋‚˜ HTTP ํ”„๋กœํ† ์ฝœ์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์Œ

๐Ÿ“Œ [์ฐธ๊ณ ] gRPC ์ ์šฉ ํฌ์ธํŠธ: gRPC์˜ ์žฅ์ ์ด ๋งŽ์ง€๋งŒ ์ •ํ•ด์•ผํ•  ๊ทœ์น™์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— API๋ฅผ ์ง€์›ํ•˜๋Š” ๋‚ด๋ถ€ ์„œ๋น„์Šค ๊ฐœ๋ฐœ์‹œ gRPC๋ฅผ ์ ์šฉํ•˜๊ณ , ์™ธ๋ถ€ ์„œ๋น„์Šค๋‚˜ API์—๋Š” REST๋‚˜ GraphQL์„ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„ํ•˜๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

gRPC์™€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

์šฐ๋ฆฌ๊ฐ€ ๋งŽ์ด ์ ‘ํ•˜๋Š” "ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ"์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ํ•œ ๋‹จ๊ณ„์‹ ์„ค๋ช…์„ ์ง„ํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์ธ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ

๊ฐ€์žฅ ๋งŽ์ด ์ ‘ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ Service A๋ฅผ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต ํ•ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ-gRPC ์„œ๋ฒ„ ๊ตฌ์กฐ

์œ„ ๊ตฌ์กฐ์— gRPC์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ stub์„ ํ†ตํ•ด Service A๋ฅผ ์š”์ฒญํ•˜๋ฉด, gRPC ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต ํ•ฉ๋‹ˆ๋‹ค.

Service A๋ฅผ Microservice a์™€ b๋กœ ๋ถ„๋ฆฌํ•œ ๊ตฌ์กฐ

์œ„ ๊ตฌ์กฐ์—์„œ Service A๊ฐ€ Microservice a์™€ b๋กœ ๋ถ„๋ฆฌ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™”ํ•  ๊ฒƒ์ด๊ณ , ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๋Š” stub์„ ํ†ตํ•ด Service A๋ฅผ ์š”์ฒญ
  2. (์‹ค์ œ๋กœ Backend์—์„œ๋Š”) Microservice a ์ œ๊ณต์„ ์œ„ํ•œ ์ž‘์—… ์‹œ์ž‘
  3. ์ž‘์—… ๋„์ค‘ stub์„ ํ†ตํ•ด Microservice b๋ฅผ ์š”์ฒญ
  4. Microservice b ์ œ๊ณต์„ ์œ„ํ•œ ์ž‘์—… ์‹œ์ž‘
  5. Microservice b ์‘๋‹ต
  6. Microservice a ๋‚˜๋จธ์ง€ ์ž‘์—… ์ˆ˜ํ–‰
  7. Microservice a ์‘๋‹ต (Service A ์‘๋‹ต์œผ๋กœ ๋ด๋„ ๋ฌด๋ฐฉ)
  8. ํด๋ผ์ด์–ธํŠธ๋Š” Service A ๊ฒฐ๊ณผ ์ˆ˜์‹ 

gRPC๋ฅผ ์ ์šฉํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌ์กฐ

ํ•˜์ง€๋งŒ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ด๋ ‡๊ฒŒ ์ •์ ์ธ ๊ตฌ์กฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์š”์ฒญ ๋ถ€ํ•˜์— ๋”ฐ๋ผ ๋งค์šฐ ๋™์ ์œผ๋กœ ์„œ๋น„์Šค ํ™•์žฅ ๋ฐ ์ถ•์†Œ(Autoscaling)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒ ์ง€์š”. ๋”ฐ๋ผ์„œ, Microservice a์™€ b๋Š” ์•„๋ž˜ ๊ตฌ์กฐ์™€ ๊ฐ™์ด Endpoint ๋ฐ‘์— ์œ„์น˜ํ•˜์—ฌ ๋™์  ํ™•์žฅ ๋ฐ ์ถ•์†Œ(Autoscaling)์„ ๋ฐ˜๋ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด์‹ค๋•Œ Endpoint๋ฅผ LoadBalancer๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋ณด์…”๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.)

  1. ํด๋ผ์ด์–ธํŠธ๋Š” stub์„ ํ†ตํ•ด Endpoint๋กœ Service A๋ฅผ ์š”์ฒญ
  2. Endpoint์—์„œ ์ ์ ˆํ•œ gRPC ์„œ๋ฒ„๋กœ ์š”์ฒญ ์ „๋‹ฌ
  3. ์š”์ฒญ์„ ์ „๋‹ฌ๋ฐ›์€ gRPC ์„œ๋ฒ„์—์„œ Microservice a ์ œ๊ณต์„ ์œ„ํ•œ ์ž‘์—… ์‹œ์ž‘
  4. ์ž‘์—… ๋„์ค‘ stub์„ ํ†ตํ•ด Endpoint๋กœ Microservice b๋ฅผ ์š”์ฒญ
  5. Enpoint์—์„œ ์ ์ ˆํ•œ gRPC ์„œ๋ฒ„๋กœ ์š”์ฒญ ์ „๋‹ฌ
  6. ์š”์ฒญ์„ ์ „๋‹ฌ ๋ฐ›์€ gRPC ์„œ๋ฒ„์—์„œ Microservice b ์ œ๊ณต์„ ์œ„ํ•œ ์ž‘์—… ์‹œ์ž‘
  7. Microservice b ์‘๋‹ต
  8. Microservice a ๋‚˜๋จธ์ง€ ์ž‘์—… ์ˆ˜ํ–‰
  9. Microservice a ์‘๋‹ต (Service A ์‘๋‹ต์œผ๋กœ ๋ด๋„ ๋ฌด๋ฐฉ)
  10. ํด๋ผ์ด์–ธํŠธ๋Š” Service A ๊ฒฐ๊ณผ ์ˆ˜์‹ 

(์š”์ฒญ ์‘๋‹ต์„ ์œ„ํ•œ ๊ฒฝ๋กœ๋Š” IP transparency, Proxy ๋“ฑ์˜ ์ ์šฉ ์œ ๋ฌด์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ๊ธฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.)

์ฐธ๊ณ ์ž๋ฃŒ

๊ณต์‹ ํ™ˆํŽ˜์ด์ง€

์ฑ…

  • (๋ฒˆ์—ญ์„œ) gRPC ์‹œ์ž‘์—์„œ ์šด์˜๊นŒ์ง€(์ง€์€์ด: ์นด์ˆœ ์ธ๋“œ๋ผ์‹œ๋ฆฌ, ๋‹ค๋„ค์‰ฌ ์ฟ ๋ฃจํ‘ธ, ์˜ฎ๊ธด์ด: ํ•œ์„ฑ๊ณค), ์—์ด์ฝ˜์ถœํŒ์ฃผ์‹ํšŒ์‚ฌ, 2021๋…„ 1์›” 4์ผ ๋ฐœํ–‰, 979-11-6175-463-5
    • (์›์„œ) gRPC: Up and Running by Kasun Indrasiri and Danesh Kuruppu (O'Reilly). Copyright 2020 Kasun Indrasiri and Danesh Kuruppu, 978-1-492-05833-5

์˜์ƒ

์Šฌ๋ผ์ด๋“œ

ํฌ์ŠคํŠธ/๊ธ€

โš ๏ธ **GitHub.com Fallback** โš ๏ธ