내부 및 외부 통합

ํ†ตํ•ฉ์€ Lino๊ฐ€ ์ƒ์„ฑํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค๋ฅธ ๋ชจ๋“ˆ, ๋‚ด๋ถ€ ์„œ๋น„์Šค, ์„œ๋“œํŒŒํ‹ฐ ์‹œ์Šคํ…œ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋™๊ธฐ ํ˜ธ์ถœ, in-process ํ†ตํ•ฉ, HTTP, ์ด๋ฒคํŠธ ์ค‘ ๋ฌด์—‡์„ ์„ ํƒํ• ์ง€๋Š” ๊ฒฐํ•ฉ๋„, ์ง€์—ฐ ์‹œ๊ฐ„, ์‹ ๋ขฐ์„ฑ, ๋ฐ์ดํ„ฐ ์†Œ์œ ๊ถŒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชฉํ‘œ๋Š” ๋‹จ์ˆœํžˆ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๋ˆ„๊ฐ€ ์†Œ๋น„ํ•˜๋ฉฐ, ์–ด๋–ค ๊ณ„์•ฝ์ด ๊ณต๊ฐœ๋˜๊ณ , ์‹คํŒจ ์‹œ ๋ฌด์—‡์ด ์ผ์–ด๋‚˜๋ฉฐ, ์ž‘์—…์ด ์ฆ‰์‹œ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ๋‚˜์ค‘์— ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฝ๊ณ„๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ†ตํ•ฉ ๋งŒ๋“ค๊ธฐ

ํ†ตํ•ฉ์€ ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ, ๋‚ด๋ถ€ ์„œ๋น„์Šค ๋˜๋Š” ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ์˜ ๋ช…์‹œ์ ์ธ ํ†ต์‹ ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋ฆ„, ๊ณ„์•ฝ, ์ธ์ฆ, timeout, ์˜ค๋ฅ˜ ์ „๋žต, ๋ช…ํ™•ํ•œ ์ฑ…์ž„์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

lino integration new --name <ServiceName>
lino integration list

์ƒˆ ํ†ตํ•ฉ์„ ๋งŒ๋“ค๊ธฐ ์ „์— integration list๋กœ ๊ธฐ์กด ํ†ตํ•ฉ์„ ํ™•์ธํ•˜์„ธ์š”. CommonIntegration ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ํ†ตํ•ฉ์€ ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„ ์—†์ด ์ฑ…์ž„์„ ์ถ•์ ํ•˜๊ธฐ ์‰ฌ์šฐ๋ฏ€๋กœ ํ”ผํ•ฉ๋‹ˆ๋‹ค.

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

  • ํ†ตํ•ฉ๋˜๋Š” ์ปจํ…์ŠคํŠธ๋กœ ์ด๋ฆ„ ์ง€์ •: ์ผ๋ฐ˜ ์ด๋ฆ„๋ณด๋‹ค Billing, Identity, Catalog, Shipping์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ„์•ฝ๊ณผ ๊ตฌํ˜„ ๋ถ„๋ฆฌ: ๋„๋ฉ”์ธ๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ transport ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์ง์ ‘ ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ์‹คํŒจ๋ฅผ ๊ฐ€์ •: ๋ชจ๋“  ์›๊ฒฉ ํ†ตํ•ฉ์€ ๋А๋ ค์ง€๊ฑฐ๋‚˜, ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜, ๋ถ€๋ถ„ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜, ๊ณ„์•ฝ์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ†ตํ•ฉ resources

resources๋Š” ํ†ตํ•ฉ์ด ๋…ธ์ถœํ•˜๊ฑฐ๋‚˜ ์†Œ๋น„ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด customers, invoices, tenants, subscriptions, users, documents๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

lino integration resource new --service <ServiceName> --module <ModuleName> --entity <EntityName>
lino integration resource list --service <ServiceName> --module <ModuleName> --entity <EntityName>

ํ†ตํ•ฉ resource๋Š” ๋„๋ฉ”์ธ ์—”ํ„ฐํ‹ฐ์™€ ๊ฐ™์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ”ํžˆ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๊ณ„์•ฝ, ์™ธ๋ถ€ ๋ทฐ, ๋˜๋Š” ์ปจํ…์ŠคํŠธ ๊ฐ„ ํ†ต์‹ ์— ํ•„์š”ํ•œ ์ตœ์†Œ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค. ์ „์ฒด ์—”ํ„ฐํ‹ฐ๋ฅผ ์™ธ๋ถ€ ๊ณ„์•ฝ์œผ๋กœ ๋ณต์‚ฌํ•˜๋ฉด ๋‚ด๋ถ€ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ๋…ธ์ถœ๋˜๊ณ  ์ง„ํ™” ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

  • ํ†ตํ•ฉ๋œ ์‹œ์Šคํ…œ์˜ ์–ดํœ˜๋กœ resource๋ฅผ ๋ชจ๋ธ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ด๋ถ€ ์—”ํ„ฐํ‹ฐ๋ฅผ ์™ธ๋ถ€ ๊ณ„์•ฝ์œผ๋กœ ๋…ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์–ด๋–ค ํ•„๋“œ๊ฐ€ ์‹๋ณ„์ž, ํ•„ํ„ฐ, ๋ฐ˜ํ™˜ ๋ฐ์ดํ„ฐ์ธ์ง€ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํŽ˜์ด์ง€๋„ค์ด์…˜, ์ธ์ฆ, ํ˜ธ์ถœ ์ œํ•œ์„ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค.

resource๊ฐ€ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒฝ์šฐ ์†Œ๋น„์ž์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์›์น™์€ shadow entities์—๋„ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์†Œ๋น„ ๋ชจ๋“ˆ์€ ์ƒ์‚ฐ์ž ๋ชจ๋“ˆ์˜ ์ „์ฒด ๋ชจ๋ธ์— ์˜์กดํ•˜๋Š” ๋Œ€์‹ , ์ž์‹ ์˜ Use Case์— ๋งž๋Š” ์ž‘์€ ๋กœ์ปฌ ๋ณต์‚ฌ๋ณธ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

ํ†ตํ•ฉ ์ž‘์—…

์ž‘์—…์€ ํ†ตํ•ฉ resource์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ, ์กฐํšŒ, ์—…๋ฐ์ดํŠธ, ์ทจ์†Œ, ์ „์†ก, ๋™๊ธฐํ™”, ๊ฒ€์ฆ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

lino integration operation new --service <ServiceName> --module <ModuleName> --entity <EntityName>
lino integration operation list --service <ServiceName> --module <ModuleName> --entity <EntityName>

๊ฐ ์ž‘์—…์€ ์˜๋„, ์ž…๋ ฅ, ์ถœ๋ ฅ, ํ˜ธ์ถœ ๋ฐฉ์‹, ์˜ค๋ฅ˜ ๋™์ž‘, ์•ˆ์ „ํ•˜๊ฒŒ ์žฌ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์กฐํšŒ์—๋Š” timeout๊ณผ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์ƒํƒœ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์›๊ฒฉ ๋ช…๋ น์€ ๊ฐ€๋Šฅํ•˜๋ฉด ๋ฉฑ๋“ฑ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค๋ฉด ์™ธ๋ถ€ ์‹คํŒจ๊ฐ€ ์ฃผ ํŠธ๋žœ์žญ์…˜์„ ๊นจ๋œจ๋ ค์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ ๊ฐ„ ํ˜ธ์ถœ์„ ์ถ”์ ํ•˜๋ ค๋ฉด ๋กœ๊ทธ์™€ correlation id๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

ํ†ตํ•ฉ ์†Œ๋น„

ํ†ตํ•ฉ, resource, ์ž‘์—…์„ ๋ชจ๋ธ๋งํ•œ ํ›„ ์†Œ๋น„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑ๋œ ๊ณ„์•ฝ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋ชฉํ‘œ๋Š” HTTP ํ˜ธ์ถœ, URL ์กฐ๋ฆฝ, headers, ์‘๋‹ต parsing, ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ handlers์— ํฉ๋ฟŒ๋ฆฌ๋Š” ๋Œ€์‹ , Use Case๊ฐ€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๊ฐ€์ง„ ์ด๋ฆ„ ์žˆ๋Š” ์ถ”์ƒํ™”์— ์˜์กดํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

lino integration consume

Use Cases๋Š” ์ฝ”๋“œ ๊ณณ๊ณณ์— ํฉ์–ด์ง„ HTTP ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ์•„๋‹ˆ๋ผ ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ…Œ์ŠคํŠธ, ๊ตฌํ˜„ ๊ต์ฒด, ์ผ๊ด€๋œ ์‹คํŒจ ์ฒ˜๋ฆฌ๊ฐ€ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ endpoint๊ฐ€ timeout, ์ธ์ฆ, correlation id, ์ง๋ ฌํ™”, ์˜ค๋ฅ˜ ๋งคํ•‘์„ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ์ผ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • ์™ธ๋ถ€ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • cancellation token๊ณผ timeout์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ์‘๋‹ต์„ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋‚ด๋ถ€ ์˜ค๋ฅ˜๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ€ํ™˜ ์—†์ด ์›์‹œ ์™ธ๋ถ€ payload๋ฅผ ๋„๋ฉ”์ธ ๊ทœ์น™์œผ๋กœ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

HTTP vs. in-process

๋ชจ๋“ˆ์ด ํ•จ๊ป˜ ์‹คํ–‰๋  ๋•Œ in-process ํ†ตํ•ฉ์€ ๋‹จ์ˆœํ•˜๊ณ  ๋น ๋ฆ…๋‹ˆ๋‹ค. HTTP๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๊ณ„์•ฝ์„ ๋” ๋ช…์‹œ์ ์œผ๋กœ ๋งŒ๋“ค์ง€๋งŒ, ์ง€์—ฐ ์‹œ๊ฐ„, ๋„คํŠธ์›Œํฌ ์‹คํŒจ, ํšŒ๋ณต ํƒ„๋ ฅ์„ฑ์˜ ํ•„์š”๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

in-process ํ†ตํ•ฉ์ด ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์ž์œ ๋กœ์šด ์ ‘๊ทผ์„ ์˜๋ฏธํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ runtime ์•ˆ์—์„œ๋„ ์†Œ๋น„์ž๋Š” ๋‚ด๋ถ€ ์—”ํ„ฐํ‹ฐ, DbContext ๋˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ repository๊ฐ€ ์•„๋‹ˆ๋ผ ๊ณ„์•ฝ์„ ํ†ตํ•ด ํ†ต์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋น„์šฉ์€ ๋‚ฎ์ง€๋งŒ ๊ฒฐํ•ฉ ์œ„ํ—˜์€ ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์‹œ๋‚˜๋ฆฌ์˜ค์ผ๋ฐ˜์ ์ธ ์„ ํƒ๋น„๊ณ 
๊ฐ™์€ ๋ชจ๋“ˆ์‹ ๋ชจ๋†€๋ฆฌ์Šค ์•ˆ์˜ ๋ชจ๋“ˆIn-process ๋˜๋Š” ๋‚ด๋ถ€ ๊ณ„์•ฝ๊ฒฝ๊ณ„๋ฅผ ๋ณด์กดํ•˜๊ณ  ์—”ํ„ฐํ‹ฐ์™€ ์˜์†์„ฑ ๊ณต์œ ๋ฅผ ํ”ผํ•ฉ๋‹ˆ๋‹ค.
์ž์ฒด deployment๋ฅผ ๊ฐ€์ง„ ๋ณ„๋„ ์„œ๋น„์ŠคHTTP ๋˜๋Š” ๋ฉ”์‹œ์ง•๋„คํŠธ์›Œํฌ, ์ธ์ฆ, ๋ฒ„์ „ ๊ด€๋ฆฌ, ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๋น„๋™๊ธฐ์ด๋ฉฐ ์ง€์—ฐ์„ ํ—ˆ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šคํ†ตํ•ฉ ์ด๋ฒคํŠธ๋ฉฑ๋“ฑ์ ์ด๊ณ  ์ถ”์  ๊ฐ€๋Šฅํ•œ ์†Œ๋น„์ž๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

HTTP๋Š” ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๊ฐ€ ๋ณ„๋„์˜ runtimes๋ฅผ ๊ฐ–๊ฑฐ๋‚˜ ๊ฒฝ๊ณ„๋ฅผ ์šด์˜์ƒ ๋ช…์‹œ์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. In-process๋Š” ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปจํ…์ŠคํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์‘๋‹ต์ด ์ฆ‰์‹œ ํ•„์š”ํ•  ๋•Œ ์ ํ•ฉํ•˜์ง€๋งŒ, ์˜์กด์„ฑ์€ ๊ณ„์† ๊ณ„์•ฝ์œผ๋กœ ์„ ์–ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ vs. ๋™๊ธฐ ํ†ตํ•ฉ

ํ˜„์žฌ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์‘๋‹ต์ด ํ•„์š”ํ•˜๋ฉด ๋™๊ธฐ ํ†ตํ•ฉ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์†Œ๋น„์ž๊ฐ€ ๋‚˜์ค‘์— ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๊ณ  eventual consistency๊ฐ€ ํ—ˆ์šฉ๋œ๋‹ค๋ฉด ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์„ ํƒ์€ ๊ธฐ์ˆ ์  ๊ฒฐ์ •์ด๊ธฐ ์ „์— ๋น„์ฆˆ๋‹ˆ์Šค ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค. ๊ฒฐ์ œ ์„œ๋น„์Šค๊ฐ€ ์Šน์ธ์„ ํ™•์ธํ•œ ํ›„์—๋งŒ ์ฃผ๋ฌธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋™๊ธฐ ํ˜ธ์ถœ์€ Use Case์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋ฌธ ์ƒ์„ฑ์ด ์•Œ๋ฆผ, ํ”„๋กœ์ ์…˜ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“ˆ๋กœ์˜ ๋™๊ธฐํ™”๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ๋” ์ ํ•ฉํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

ํ•„์š”์ ‘๊ทผ ๋ฐฉ์‹๊ธฐ์ˆ ์  ์ฃผ์˜
ํ•„์ˆ˜ ์ฆ‰์‹œ ์‘๋‹ต๋™๊ธฐ ํ†ตํ•ฉTimeout, fallback, ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์˜ค๋ฅ˜, ์•ˆ์ •์ ์ธ ๊ณ„์•ฝ.
์ง€์—ฐ์„ ํ—ˆ์šฉํ•˜๋Š” ํ›„์† ํšจ๊ณผํ†ตํ•ฉ ์ด๋ฒคํŠธOutbox, ๋ฉฑ๋“ฑ์„ฑ, retries, ์ƒ๊ด€ ๋กœ๊ทธ.
์†Œ๋Ÿ‰์˜ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์ฃผ ์ฝ๊ธฐShadow Entity ๋˜๋Š” ๋กœ์ปฌ ํ”„๋กœ์ ์…˜๋™๊ธฐํ™”, eventual update, ์ตœ์†Œ ๋ชจ๋ธ.
처리되지 않은 오류가 발생했습니다. 새로 고침 ๐Ÿ—™