Внутренние и внешние интеграции

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, сгСнСрированноС Lino, с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ модулями, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ сСрвисами ΠΈ сторонними систСмами. Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ синхронным Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ, in-process ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, HTTP ΠΈ событиями Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ, Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ЦСль состоит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ систСму. НуТно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ: ΠΊΡ‚ΠΎ прСдоставляСт Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΡ‚ΠΎ ΠΈΡ… потрСбляСт, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ являСтся ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ сбоС ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ опСрация Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΏΠΎΠ·ΠΆΠ΅.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΉ

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡΠ²Π½ΡƒΡŽ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ контСкстом, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ сСрвисом ΠΈΠ»ΠΈ внСшнСй систСмой. Π£ Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ имя, ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚, аутСнтификация, timeout, стратСгия ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок ΠΈ чСткая ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ.

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

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ integration list, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ созданиСм Π½ΠΎΠ²ΠΎΠΉ. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ CommonIntegration, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ склонны Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Ρ‚ΡŒ обязанности Π±Π΅Π· Ρ‡Π΅Ρ‚ΠΊΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.

ΠŸΠ΅Ρ€Π΅Π΄ созданиСм ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅, ΠΊΠ°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΎΠ½Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚: запрос внСшнСго рССстра, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° подписки, синхронизация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ модуля ΠΈΠ»ΠΈ публикация Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ систСму. Если Ρƒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ намСрСния, вСроятно, ΠΎΠ½Π° Π΅Ρ‰Π΅ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° ΡΡ‚Π°Ρ‚ΡŒ сгСнСрированным ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠΌ.

  • НазывайтС ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌΡƒ контСксту: ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Billing, Identity, Catalog ΠΈΠ»ΠΈ Shipping ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π°ΠΌ.
  • ΠžΡ‚Π΄Π΅Π»ΡΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: Π΄ΠΎΠΌΠ΅Π½ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ транспорта.
  • ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ внСшниС сбои: любая удалСнная интСграция ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ, нСдоступной, Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚.

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 ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊ сгСнСрированному ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρƒ. ЦСль β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Use Case зависСл ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΉ абстракции с прСдсказуСмым Π²Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ, Π° Π½Π΅ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ HTTP-Π²Ρ‹Π·ΠΎΠ²Ρ‹, сборку URL, headers, parsing ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок ΠΏΠΎ нСскольким handlers.

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 ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ контрактБохраняйтС Π³Ρ€Π°Π½ΠΈΡ†Ρƒ; ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ совмСстного использования сущностСй ΠΈ пСрсистСнтности.
ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвис с собствСнным deploymentHTTP ΠΈΠ»ΠΈ messagingΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡΠ΅Ρ‚ΡŒ, Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, вСрсионированиС ΠΈ Π½Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ.
Асинхронный процСсс, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒΠ˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹Ρ… ΠΈ трассируСмых ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ.

HTTP Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ runtimes ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ явной. In-process ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ контСксты ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ Π½ΡƒΠΆΠ΅Π½ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, ΠΏΡ€ΠΈ условии Ρ‡Ρ‚ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚.

Бобытия vs. синхронныС ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚Π²Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ событиС, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈ eventual consistency ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠ°.

Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€ являСтся бизнСс-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ тСхничСским Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. Если Π·Π°ΠΊΠ°Π· ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС подтвСрТдСния Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹ΠΌ сСрвисом, синхронный Π²Ρ‹Π·ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сущСствСнной Ρ‡Π°ΡΡ‚ΡŒΡŽ Use Case. Если созданиС Π·Π°ΠΊΠ°Π·Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ лишь Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ, событиС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΡƒΡ‡ΡˆΠ΅.

ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒΠŸΠΎΠ΄Ρ…ΠΎΠ΄Π’Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ
ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ отвСтБинхронная интСграцияTimeout, fallback, прСдсказуСмая ошибка ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚.
ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ эффСкт, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒΠ˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ событиСOutbox, ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ, retries ΠΈ коррСляционныС Π»ΠΎΠ³ΠΈ.
ЧастоС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ нСбольшого объСма Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…Shadow Entity ΠΈΠ»ΠΈ локальная проСкцияБинхронизация, eventual update ΠΈ минимальная модСль.
Произошла необработанная ошибка. Обновить πŸ—™