내부 및 외부 통합
ํตํฉ์ 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, ์ต์ ๋ชจ๋ธ. |
