java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис

Π’Π΅Π±-сСрвисы Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅Π±-сСрвисы?

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π²Π΅Π±-сСрвисы (ΠΈΠ»ΠΈ Π²Π΅Π±-слуТбы) β€” это тСхнология. И ΠΊΠ°ΠΊ ΠΈ любая другая тСхнология, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ довольно Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΡ‡Π΅Ρ€Ρ‡Π΅Π½Π½ΡƒΡŽ срСду примСнСния.

Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π²Π΅Π±-сСрвисы Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ стСка сСтСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠΊΠΎΠ»ΠΎΠ², ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ это, Π² классичСском случаС, Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° надстройка ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли гипотСтичСски Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π½Π° нСсколько слоСв, ΠΌΡ‹ смоТСм Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π΄Π²Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ Π²Π΅Π±-рСсурсы. ΠŸΡ€ΠΈ этом Π²Ρ‚ΠΎΡ€Ρ‹Π΅, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ заинтСрСсованы Π² услугах ΠΏΠ΅Ρ€Π²Ρ‹Ρ….

Но ΠΈ сам Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ β€” Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π΅Π½, Ρ‚. Π΅. Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ прилоТСния Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΠ·Π»Π°Ρ… сСти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ языки.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ всС это ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ прилоТСниям ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ, ΠΈ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Ρ‹ Π²Π΅Π±-сСрвисы.

По сути, Π²Π΅Π±-сСрвисы β€” это рСализация Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΈΡ… интСрфСйсов ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ прилоТСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ написаны Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках, Π½ΠΎ ΠΈ распрСдСлСны Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΡƒΠ·Π»Π°Ρ… сСти.

ИмСнно с появлСниСм Π²Π΅Π±-сСрвисов Ρ€Π°Π·Π²ΠΈΠ»Π°ΡΡŒ идСя SOA β€” сСрвис-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Service Oriented Architecture).

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Π²Π΅Π±-сСрвисов

На сСгодняшний дСнь наибольшСС распространСниС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π΅Π±-сСрвисов:

На самом Π΄Π΅Π»Π΅, SOAP ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» ΠΎΡ‚ XML-RPC ΠΈ являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚ΡƒΠΏΠ΅Π½ΡŒΡŽ Π΅Π³ΠΎ развития. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ REST β€” это концСпция, Π² основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π»Π΅ΠΆΠΈΡ‚ скорСС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ, Π½Π΅ΠΆΠ΅Π»ΠΈ новая тСхнология, основанный Π½Π° Ρ‚Π΅ΠΎΡ€ΠΈΠΈ манипуляции ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ CRUD (Create Read Update Delete) Π² контСкстС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ WWW.

БСзусловно, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ ΠΈΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ распространСния, ΠΌΡ‹ остановимся Π² этом ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΌ ΠΎΠ±Π·ΠΎΡ€Π΅ Π½Π° Π΄Π²ΡƒΡ… основных β€” SOAP ΠΈ REST. XML-RPC Π²Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ являСтся нСсколько Β«ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΒ», ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ.

Нас Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ вопросы создания Π½ΠΎΠ²Ρ‹Ρ… Π²Π΅Π±-слуТб, Π° Π½Π΅ рСализация ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ поставщики Π²Π΅Π±-сСрвисов ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с функциями API ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ, посСму вопрос построСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π²Π΅Π±-слуТбам ΠΌΠ΅Π½Π΅Π΅ интСрСсСн с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π°Π²Ρ‚ΠΎΡ€Π°).

SOAP ΠΏΡ€ΠΎΡ‚ΠΈΠ² REST

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ противостояния Ρ…ΠΎΡ€ΠΎΡˆΠΎ описаны Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π›Π΅ΠΎΠ½ΠΈΠ΄Π° ЧСрняка, Π½Π°ΠΉΠ΄Π΅Π½ΠΎΠΉ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ www.citforum.ru.

По мнСнию ΠΆΠ΅ Π°Π²Ρ‚ΠΎΡ€Π°, ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

SOAP Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π² слоТных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…, Π³Π΄Π΅ взаимодСйствиС с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ CRUD, Π° Π²ΠΎΡ‚ Π² Ρ‚Π΅Ρ… прилоТСниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠΊΠΈΠ΄Π°ΡŽΡ‚ Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ REST Π²Π²ΠΈΠ΄Ρƒ своСй простоты ΠΈ прозрачности. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли Π»ΡŽΠ±Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ вашСго сСрвиса Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π±ΠΎΠ»Π΅Π΅ слоТныС Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, ΠΊΡ€ΠΎΠΌΠ΅: Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΒ», Β«ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΒ», Β«Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΒ», Β«Π£Π΄Π°Π»ΠΈΡ‚ΡŒΒ» (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ β€” Π² 99% случаСв этого достаточно), Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ REST станСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, REST ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с SOAP, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° Ρ€Π°Π·Π±ΠΎΡ€ слоТных XML ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π° сСрвСрС (Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ HTTP запросы β€” PUT, GET, POST, DELETE). Π₯отя SOAP, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ΅Π½ ΠΈ бСзопасСн.

Π’ любом случаС Π²Π°ΠΌ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ большС ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π’ΠΏΠΎΠ»Π½Π΅ вСроятно, Π²Ρ‹ Π΄Π°ΠΆΠ΅ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ Π·Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ слуТбы ΠΈ β€” это вашС ΠΏΡ€Π°Π²ΠΎ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π΅Π±-сСрвисов

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ практичСском ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для построСния Π²Π΅Π±-слуТбы ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΡ€Ρƒ Π±Π»ΠΈΠΆΠ΅ всСго PHP 5, ΠΌΡ‹ ΠΈ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ Π΅Π³ΠΎ Π² качСствС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ для построСния слуТбы, Π° Π² качСствС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈΠΌΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ трСбования.

Допустим, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ слуТбу, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ курсах Π²Π°Π»ΡŽΡ‚, которая собираСтся нашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈ накапливаСтся Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π»Π΅Π΅ посрСдством Π²Π΅Π±-сСрвиса, данная информация пСрСдаСтся сторонним прилоТСниям для отобраТСния Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для Π½ΠΈΡ… Π²ΠΈΠ΄Π΅.

Как Π²ΠΈΠ΄ΠΈΠΌ Π·Π°Π΄Π°Ρ‡Π° довольно проста ΠΈ, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния самой слуТбы, ограничиваСтся лишь Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½ΠΎ Π² практичСских цСлях Π½Π°ΠΌ этого Π±ΡƒΠ΄Π΅Ρ‚ достаточно.

Π­Ρ‚Π°ΠΏ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ β€” рСализация прилоТСния сбора ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ курсах Π²Π°Π»ΡŽΡ‚.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ курсах Π²Π°Π»ΡŽΡ‚ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ со страниц сайта НБУ (ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π‘Π°Π½ΠΊΠ° Π£ΠΊΡ€Π°ΠΈΠ½Ρ‹) Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΠΈ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π‘Π£Π‘Π” MySQL.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ структуру Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°Π±Π»ΠΈΡ†Π° Π²Π°Π»ΡŽΡ‚ (currency):

Π’Π°Π±Π»ΠΈΡ†Π° Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π° (exchange):

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ORM слоСм Π½Π° Π±Π°Π·Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° PHP Doctrine. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π³Ρ€Π°Π±Π±Π΅Ρ€:

класс Grubber (models/Grabber.php):

ΠΈ сам Π³Ρ€Π°Π±Π±Π΅Ρ€ (grabber.php):

Π’Π΅ΠΏΠ΅Ρ€ΡŒ заставим наш Π³Ρ€Π°Π±Π±Π΅Ρ€ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π· Π² сутки Π² 10:00 ΡƒΡ‚Ρ€Π°, ΠΏΡƒΡ‚Π΅ΠΌ добавлСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ запуска Π³Ρ€Π°Π±Π±Π΅Ρ€Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ cron:

ВсС β€” Ρƒ нас Π΅ΡΡ‚ΡŒ достаточно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ сСрвис.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π²Π΅Π±-сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ прилоТСниям ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· нашСй Π±Π°Π·Ρ‹.

РСализация SOAP сСрвиса

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π΅Π±-сСрвиса Π½Π° Π±Π°Π·Π΅ SOAP ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ встроСнным ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ Π² PHP для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с SOAP.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ наш Π²Π΅Π±-сСрвис Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ созданиС WSDL Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт структуру нашСго Π²Π΅Π±-сСрвиса.

WSDL (Web Service Definition Language) β€” прСдставляСт ΠΈΠ· сСбя XML Ρ„Π°ΠΉΠ» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС синтаксиса ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ прСдоставляСт IDE Zend Studio for Eclipse. Данная функция позволяСт Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ WSDL Ρ„Π°ΠΉΠ» ΠΈΠ· классов PHP. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ нашСго сСрвиса.

класс CurrencyExchange (models/CurrencyExchange.php):

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ для автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ WSDL, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² стилС javadoc, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½ΠΈΡ… ΠΌΡ‹ прописываСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. НСплохо Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… словах Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² β€” вСдь WSDL послуТит описаниСм API для сторонних Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваш Π²Π΅Π±-сСрвис.

НС ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠ°Ρ… param void ΠΈΠ»ΠΈ return void β€” для WSDL это Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ, Π½ΠΎ Π²ΠΎΡ‚ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ REST доступа ΠΊ Ρ‚ΠΎΠΌΡƒ-ΠΆΠ΅ классу Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² Zend Studio Π²Ρ…ΠΎΠ΄ΠΈΠΌ Π² мСню File->Export. Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ PHP->WSDL, добавляСм наш класс, прописываСм URI-адрСс нашСго сСрвиса ΠΈ создаСм WSDL-Ρ„Π°ΠΉΠ». Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ: http://mikhailstadnik.com/ctws/currency.wsdl

Если Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² ваш Π²Π΅Π±-сСрвис, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ WSDL-Ρ„Π°ΠΉΠ». Но здСсь Π½Π΅ Ρ‚Π°ΠΊ всС Π³Π»Π°Π΄ΠΊΠΎ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ SOAP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π» ваш WSDL Ρ„Π°ΠΉΠ», ΠΊΠ΅ΡˆΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π½Π° своСй сторонС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ староС содСрТимоС Π½ΠΎΠ²Ρ‹ΠΌ Π² WSDL Ρ„Π°ΠΉΠ»Π΅, Π½Π΅ΠΊΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΡ‡Ρ‚ΡƒΡ‚. А Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, дописывайтС Π²Π΅Ρ€ΡΠΈΡŽ Π² имя вашСго Ρ„Π°ΠΉΠ»Π°. И Π½Π΅ Π·Π°Π±ΡƒΠ΄Π±Ρ‚Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ для старых ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², особСнно Ссли Π²Ρ‹ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ ΠΈΡ… поставщиком.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, WSDL довольно ТСстко Π·Π°Π΄Π°Π΅Ρ‚ структуру Π²Π΅Π±-сСрвиса, Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ, Ссли сущСствуСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с сСрвСром, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π°ΡˆΠΈΡ… классов Π² WSDL. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ½ΠΈ Π½Π΅ смогут Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚.

РСализация ΠΆΠ΅ самого сСрвСра Π½Π΅ прСдстваляСт Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ слоТности:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-сСрвис Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ адрСсу: http://mikhailstadnik.com/ctws/
Π’Π°ΠΌ ΠΆΠ΅ доступСн тСстовый ΠΊΠ»ΠΈΠ΅Π½Ρ‚: http://mikhailstadnik.com/ctws/client.php

Код ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ:

РСализация REST сСрвиса

REST β€” это Π½Π΅ стандарт ΠΈ Π½Π΅ спСцификация, Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ, выстроСнный Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ…, Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстных ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… консорциумом W3C стандартах, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ HTTP, URI (Uniform Resource Identifier), XML ΠΈ RDF (Resource Description Format). Π’ REST-сСрвисах Π°ΠΊΡ†Π΅Π½Ρ‚ сдСлан Π½Π° доступ ΠΊ рСсурсам, Π° Π½Π΅ Π½Π° исполнСниС ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… сСрвисов; Π² этом ΠΈΡ… ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ SOAP-сСрвисов.

И всС ΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΈ Π² REST. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ PUT, GET, POST, DELETE HTTP ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° для манипуляции ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠšΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π΅Π³ΠΎ ΠΎΡ‚ SOAP Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ REST остаСтся HTTP-запросом.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² PHP ΠΏΠΎΠΊΠ° Π΅Ρ‰Π΅ Π½Π΅Ρ‚ Ρ€Π΅Π°Π»Π·Π°Ρ†ΠΈΠΈ REST, ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Zend Framwork, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° рСализация ΠΊΠ°ΠΊ REST ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‚Π°ΠΊ ΠΈ REST сСвСра.

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ классом CurrencyExchange. НапишСм сам сСрвСр:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅ всС ΠΎΡ‡Π΅Π½ΡŒ сходно ΠΈ просто.

Однако, слСдуСт ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ наш REST-сСрвис ΠΌΠ΅Π½Π΅Π΅ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½, Ρ‡Π΅ΠΌ SOAP-сСрвис, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ любой Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² класс CurrencyExchange ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (сам класс опрСдСляСт сруктуру сСрвиса).

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ нашСго сСрвиса. Для этого достаточно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² срокС GET-запроса:

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ°ΠΌΠΎΠΌΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ структуру Π²Π°ΡˆΠΈΡ… XML ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² для сСрвиса REST. Π’ этом случаС, Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΎ создании опрСдСлСния Ρ‚ΠΈΠΏΠ° вашСго XML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (DTD β€” Document Type Definition). Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ описаниСм API вашСго сСрвиса.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ тСстовый ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΊ REST сСрвису ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² нашСм случаС Ρ‚Π°ΠΊΠΈΠΌ:

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Zend_Rest Π½Π° сСгодняшний дСнь нСльзя Π½Π°Π·Π²Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² REST. Утрируя, ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эта рСализация свСлась ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹Π·ΠΎΠ²Ρƒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (RPC), хотя философия REST Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡˆΠΈΡ€Π΅.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² исходных ΠΊΠΎΠ΄Π°Ρ… c PHP Doctrine ΠΈ Zend Framework (4,42 Мб).

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠœΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅Π±-сСрвисы, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ. ЕстСствСнно, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, нСсколько ΠΎΡ‚ΠΎΡ€Π²Π°Π½ ΠΎΡ‚ ΠΆΠΈΠ·Π½ΠΈ, Π½ΠΎ ΠΎΠ½ Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ лишь Π² качСствС инструмСнта для объяснСния ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° ΠΈ сущности Π²Π΅Π±-сСрвисов.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ рСализация Π²Π΅Π±-сСрвиса β€” Π·Π°Π΄Π°Ρ‡Π° довольно простая ΠΏΡ€ΠΈ использовании соврСмСнного инструмСнтария, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ самого сСрвиса, Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

Автор надССтся, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ становится Π½Π° Ρ‚Ρ€ΠΎΠΏΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-слуТб.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Π΅Π±-сСрвисы Π² Java

Когда Π²Ρ‹ взаимодСйствуСтС с любой Π²Π΅Π±-страницСй, это Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ запрос ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· HTML-страницу. Аналогично, Π²Π΅Π±-сСрвисы Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ запрос ΠΈ ΠΎΡ‚Π²Π΅Ρ‚, Π½ΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ΅ XML ΠΈΠ»ΠΈ JSON. Java, являясь подходящим языком для взаимодСйствия Π½Π° сторонС сСрвСра, обСспСчиваСт взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ прилоТСниями Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ….

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅Π±-сСрвис Π² Java?

Π’Π΅Π±-сСрвис Π² Java являСтся подходящСй срСдой для распространСния связи ΠΌΠ΅ΠΆΠ΄Ρƒ клиСнтскими ΠΈ сСрвСрными прилоТСниями Π²ΠΎ всСмирной ΠΏΠ°ΡƒΡ‚ΠΈΠ½Π΅. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π·Π°Π΄Π°Ρ‡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, сущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π²Π΅Π±-сСрвисов Π² Java:

1. Soap

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» доступа (SOAP) – это стандартная спСцификация ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями Π½Π° основС XML. Бвязь ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Π±-сСрвисом ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ происходит с использованиСм сообщСний XML. ΠŸΡ€ΠΎΡΡ‚Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π²Π΅Π±-сСрвиса ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ поставщик услуг.

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис

На ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ рисункС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с поставщиком услуг. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для связи ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ располоТСниС сСрвСра Π²Π΅Π±-слуТб, доступныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΈΠΏΡ‹ подписи ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊ услуг создаст стандартный XML-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всю Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли этот Ρ„Π°ΠΉΠ» ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, ΠΎΠ½ смоТСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π²Π΅Π±-сСрвису.

2. RESTful

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° состояния прСдставлСния (REST) – это ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π±Π΅Π· сохранСния состояния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Π΅Π±-слуТбы Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ рСсурсы ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎ ΠΈΡ… URL-адрСсам. Он состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² REST-сСрвСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт доступ ΠΊ рСсурсам, ΠΈ REST-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΈ измСняСт рСсурсы REST. ВзглянитС Π½Π° рисунок Π½ΠΈΠΆΠ΅ для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅.

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис

Π’ этом стилС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ REST ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ прСдставлСниями рСсурсов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ стандартизированный интСрфСйс ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». REST Π½Π΅ являСтся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° люди говорят ΠΎ REST, ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Π² Π²ΠΈΠ΄Ρƒ REST ΠΏΠΎ HTTP. ΠžΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ сСрвСра рассматриваСтся ΠΊΠ°ΠΊ прСдставлСниС рСсурсов. Π­Ρ‚ΠΎ прСдставлСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сгСнСрировано ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… рСсурсов. Π’Π΅Π±-слуТбы RESTful ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ GET, POST, DELETE ΠΈ Ρ‚. Π΄.

БущСствуСт Π΄Π²Π° основных API, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π΅Π±-слуТб.

Оба эти API-интСрфСйса Java ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ стандартной установки JDK, поэтому Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ jar-Ρ„Π°ΠΉΠ»Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ JAX-WS

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Hello World JAX-WS. Π—Π΄Π΅ΡΡŒ создадим простой Ρ„Π°ΠΉΠ» класса с ΠΈΠΌΠ΅Π½Π΅ΠΌ Demo.java ΠΈ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, для отобраТСния простого сообщСния.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ сообщСниС Π²Π΅Π±-слуТбы JAX-WS SOAP Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ JAX-RS

ДТСрси являСтся эталонной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ API JAX-RS, ΠΎΠ½ Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ стандартного JDK, ΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±Π°Π½ΠΊΠΈ. Π›ΡƒΡ‡ΡˆΠΈΠΉ способ – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сборку Maven, поэтому создайтС простой Π²Π΅Π±-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Dynamic, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² Maven Π² Eclipse.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ JAX-RS, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги.

Π¨Π°Π³ 1: Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ зависимости Π² Ρ„Π°ΠΉΠ» pom.xml, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Π¨Π°Π³ 2: Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом являСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ сСрвлСта Jersey Π² наш дСскриптор развСртывания web.xml Π² качСствС Ρ„Ρ€ΠΎΠ½Ρ‚-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Π¨Π°Π³ 3: ПослС всСго этого Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ создадим простой класс обслуТивания JAX-RS.

ПослС настройки Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π²Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ» WAR, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

БобСсСдованиС ΠΏΠΎ Java EE β€” Web services (вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹)

Бписок вопросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ Β«Π’Π΅Π±-сСрвисы» Π² Java (Java web services).

ΠΊ списку вопросов Ρ€Π°Π·Π΄Π΅Π»Π° JEE

Вопросы

1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅Π± сСрвисы?
2. Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ SOA ΠΈ web service?
3. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ SOAP?
4. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ REST?
5. Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ REST ΠΈ SOAP Π²Π΅Π± сСрвисами?
6. Как Π±Ρ‹ Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· REST ΠΈΠ»ΠΈ SOAP Π²Π΅Π± сСрвисов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?
7. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ понятиС WSDL.
8. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ JAX-WS?
9. РасскаТитС ΠΎ JAXB.
10. МоТСм Π»ΠΈ ΠΌΡ‹ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ soap сообщСния с Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ?
11. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ MTOM?
12. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ XOP?
13. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ элСмСнт SOAP envelope.
14. Как опрСдСляСтся пространство ΠΈΠΌΠ΅Π½ SOAP?
15. Π§Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² SOAP (encoding)?
16. Π§Ρ‚ΠΎ опрСдСляСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ encodingStyle Π² SOAP?
17. КакиС Π΄Π²Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Π²Π΅Π± сСрвисов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ JAX-WS?
18. КакиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° для кодирования записи header?
19. Π§Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± инструмСнтС wsimport?
20. Π§Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± инструмСнтС wsgen?
21. КакиС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ различия ΠΌΠ΅ΠΆΠ΄Ρƒ SOAP ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°ΠΌΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ доступа?
22. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ resource Π² REST?
23. КакиС HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² REST?
24. Когда ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GET запрос вмСсто POST для создания рСсурса?
25. Какая Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ GET ΠΈ POST запросами?
26. Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ WADL?
27. КакиС Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ REST Π²Π΅Π± сСрвисы?
28. Какая Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ AJAX ΠΈ REST?
29. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ аннотация @Path?
30. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ аннотация @PathParam?
31. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ аннотация @QueryParam?
32. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ аннотация @MatrixParam?
33. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ аннотация @FormParam?
34. КакиС Π΄Π²Π° способа получСния Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° HTTP запроса Π² JAX-RS Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅?
35. Как ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JAX-RS?

ΠžΡ‚Π²Π΅Ρ‚Ρ‹

1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅Π± сСрвисы?

Π’Π΅Π±-слуТба, Π²Π΅Π±-сСрвис (Π°Π½Π³Π». web service) β€” идСнтифицируСмая Π²Π΅Π±-адрСсом программная систСма со стандартизированными интСрфСйсами. Π’Π΅Π±-слуТбы ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈ со сторонними прилоТСниями посрСдством сообщСний, основанных Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ… (SOAP, XML-RPC, REST ΠΈ Ρ‚. Π΄.). Π’Π΅Π±-слуТба являСтся Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ использовании сСрвис-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ прилоТСния. К характСристикам Π²Π΅Π± сСрвисов относят:

2. Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ SOA ΠΈ web service?

БСрвис-ориСнтированная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° (SOA, service-oriented architecture) β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, основанный Π½Π° использовании распрСдСлённых, слабо связанных (Π°Π½Π³Π». loose coupling) замСняСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², оснащённых стандартизированными интСрфСйсами для взаимодСйствия ΠΏΠΎ стандартизированным ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ комплСксы, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π² соотвСтствии с сСрвис-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ Π²Π΅Π±-слуТб, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ SOAP, Π½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Π±Π°Π·Π΅ jini, CORBA, Π½Π° основС REST). Π’Π΅Π± сСрвисы Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ эту ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ XML, JSON ΠΈ Π΄Ρ€., Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ HTTP(S), SMTP ΠΈ Π΄Ρ€..

3. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ SOAP?

SOAP (ΠΎΡ‚ Π°Π½Π³Π». Simple Object Access Protocol β€” простой ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» доступа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ; Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ спСцификации 1.2) β€” ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΎΠ±ΠΌΠ΅Π½Π° структурированными сообщСниями Π² распрСдСлённой Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ срСдС. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ SOAP прСдназначался Π² основном для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (RPC). БСйчас ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ±ΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ сообщСниями Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ спСцификация послСднСй вСрсии 1.2 ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ SOAP. SOAP являСтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° XML-RPC.

SOAP ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня: SMTP, FTP, HTTP, HTTPS ΠΈ Π΄Ρ€. Однако Π΅Π³ΠΎ взаимодСйствиС с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· этих ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π§Π°Ρ‰Π΅ всСго SOAP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ²Π΅Ρ€Ρ… HTTP.

4. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ REST?

REST (сокр. ΠΎΡ‚ Π°Π½Π³Π». Representational State Transfer β€” Β«ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° состояния прСдставлСния») β€” Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ взаимодСйствия ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² распрСдСлённого прилоТСния Π² сСти. REST прСдставляСт собой согласованный Π½Π°Π±ΠΎΡ€ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ распрСдСлённой Π³ΠΈΠΏΠ΅Ρ€ΠΌΠ΅Π΄ΠΈΠ°-систСмы. Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… случаях (ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ‹, поисковыС систСмы, ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ систСмы, основанныС Π½Π° Π΄Π°Π½Π½Ρ‹Ρ…) это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π’ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² REST Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ взаимодСйствия ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ сСрвСров Π²ΠΎ ВсСмирной ΠΏΠ°ΡƒΡ‚ΠΈΠ½Π΅. REST являСтся Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ RPC.

Π’ сСти Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ HTTP-запрос (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ GET ΠΈΠ»ΠΈ POST; Ρ‚Π°ΠΊΠΎΠΉ запрос Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ REST-запрос), Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса. Для Π²Π΅Π±-сСрвисов, построСнных с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ REST, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΈΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«RESTfulΒ».

5. Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ REST ΠΈ SOAP Π²Π΅Π± сСрвисами?

REST vs SOAP. Π§Π°ΡΡ‚ΡŒ 1. ΠŸΠΎΡ‡ΡƒΠ²ΡΡ‚Π²ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ: https://habrahabr.ru/post/131343/

6. Как Π±Ρ‹ Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· REST ΠΈΠ»ΠΈ SOAP Π²Π΅Π± сСрвисов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

REST ΠΏΡ€ΠΎΡ‚ΠΈΠ² SOAP ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ„Ρ€Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Β«ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π°Β». Π’ случаС REST (простота) Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ². Π’ случаС с SOAP Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ большС возмоТностСй ΠΏΠΎ бСзопасности (WS-security) ΠΈ транзакционная Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ (ACID).

7. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ понятиС WSDL.

WSDL (Π°Π½Π³Π». Web Services Description Language) β€” язык описания Π²Π΅Π±-сСрвисов ΠΈ доступа ΠΊ Π½ΠΈΠΌ, основанный Π½Π° языкС XML.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ WSDL 1.1 ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ логичСскиС части:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹ Π½Π° Java: практичСскоС руководство

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это руководство, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Java микросСрвисы, ΠΊΠ°ΠΊ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ. А Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π·ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Java микросСрвисов.

7000 слов, вСроятно, Π½Π΅ стоит Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π΅ Π½Π° мобильном устройствС. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΅Π΅ Π² Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΈ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΡΠ½ΠΎΠ²Ρ‹ Java микросСрвисов

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС ΠΎ микросСрвисах Java, ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π½Π°Ρ‡Π°Ρ‚ΡŒ с самых основ: ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ извСстного ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° Π½Π° Java, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΎΠ²Ρ‹ Π΅Π³ΠΎ прСимущСства ΠΈΠ»ΠΈ нСдостатки.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Java?

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π° Π±Π°Π½ΠΊ ΠΈΠ»ΠΈ Ρ„ΠΈΠ½Ρ‚Π΅Ρ…-стартап. Π’Ρ‹ прСдоставляСтС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для открытия Π½ΠΎΠ²ΠΎΠ³ΠΎ банковского счСта.

Для этого ΠΊΠΎΠ΄Π΅ Π½Π° Java трСбуСтся класс ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎ, выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис

Π’ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Java ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°ΠΌΠΈ?

По своСй сути, Π² ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π΅ Java Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΠΏΡ‹Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ Ссли Ρƒ вас:

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ваш малСнький Ρ„Π°ΠΉΠ» bank.jar прСвращаСтся Π² гигантский ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всС боятся Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ.

Как ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° Java?

Π­Ρ‚ΠΎ СстСствСнно ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ вопросу ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ваш bank.jar Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΉ JVM, ΠΎΠ΄ΠΈΠ½ процСсс Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС. Ни большС Π½ΠΈ мСньшС.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ идСю: Β«Π‘Π»ΡƒΠΆΠ±Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ рисков ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΡ‚Π΄Π΅Π»Π°ΠΌΠΈ Π² ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΈ ΠΎΠ½Π° Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с ΠΌΠΎΠΈΠΌ Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ Mono (lithic) Bank, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π΅Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΈΠ»ΠΈ, Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ тСхничСски, запуститС Π΅Π³ΠΎ ΠΊΠ°ΠΊ свой собствСнный процСсс Java.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвис Java?

Π’ практичСском ΠΏΠ»Π°Π½Π΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вмСсто Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° riskCheck() Π²Π½ΡƒΡ‚Ρ€ΠΈ вашСго BankController Π²Ρ‹ пСрСмСститС этот ΠΌΠ΅Ρ‚ΠΎΠ΄ / bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ со всСми Π΅Π³ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ классами Π² свой собствСнный ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Maven / Gradle, помСститС Π΅Π³ΠΎ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ систСмы управлСния исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ нСзависимо ΠΎΡ‚ вашСго. банковского ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°.

Π’Π΅ΡΡŒ этот процСсс извлСчСния Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ ваш Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ RiskCheck микросСрвисом ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ, ΠΈ это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ микросСрвисов ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ (Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ изрядному количСству обсуТдСний Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… ΠΈ компаниях).

ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΠ± этом, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ:

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡ‚ΠΎΠ³: сначала Ρƒ вас Π±Ρ‹Π» ΠΎΠ΄ΠΈΠ½ процСсс JVM, ΠΎΠ΄ΠΈΠ½ банковский ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ процСсс JVM банковского ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° ΠΈ микросСрвис RiskCheck, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² своСм собствСнном процСссС JVM. И ваш ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ этот микросСрвис для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ рисков.

Как ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Java микросСрвисами?

По сущСству, Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°: синхронноС взаимодСйствиС ΠΈΠ»ΠΈ асинхронноС взаимодСйствиС.

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΠ΅ взаимодСйствиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ HTTP/REST сСрвисов

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΠ΅ взаимодСйствиС микросСрвисов ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· HTTP ΠΈ REST-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ XML ΠΈΠ»ΠΈ JSON β€” хотя это Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ (посмотритС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Google Protocol Buffers).

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ REST-ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² нашСм случаС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° риска ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ счСта: Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ риска, Π½Π΅Ρ‚ счСта.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½ΠΈΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π» КакиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π»ΡƒΡ‡ΡˆΠ΅ всСго подходят для синхронных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Java REST?

АсинхронноС взаимодСйствиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями

Асинхронная микросСрвисная связь ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ осущСствляСтся посрСдством ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ JMS ΠΈ / ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ AMQP. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π½Π΅ слСдуСт Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ / SMTP.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ асинхронноС взаимодСйствиС, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, скаТСм, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π°ΠΆΠΈΠΌΠ°ΡŽΡ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠΊΡƒΠΏΠΈΡ‚ΡŒ сСйчас», ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ счСт-Ρ„Π°ΠΊΡ‚ΡƒΡ€Ρƒ, Ρ‡Ρ‚ΠΎ, бСзусловно, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ†ΠΈΠΊΠ»Π° запроса-ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½ΠΈΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π» КакиС инструмСнты Π»ΡƒΡ‡ΡˆΠ΅ всСго подходят для асинхронного ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями Java?

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π²Ρ‹Π·ΠΎΠ² REST API Π² Java

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΌΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ связь, наш Java ΠΊΠΎΠ΄ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ. НизкоуровнСвый, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для микросСрвисных ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ создаСтС клиСнтскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ вас ΠΎΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… HTTP-Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

Глядя Π½Π° ΠΊΠΎΠ΄, становится ясно, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΄Π²Π° Java (ΠΌΠΈΠΊΡ€ΠΎ) сСрвиса: ваш Π±Π°Π½ΠΊ ΠΈ сСрвис RiskCheck. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄Π²Π΅ JVM, Π΄Π²Π° процСсса. ГрафичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ этого Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис

Но остаСтся вопрос: ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ Π²Ρ‹Ρ€Π΅Π·Π°Π΅Ρ‚Π΅ ΠΈΠ»ΠΈ настраиваСтС эти микросСрвисы? Π§Ρ‚ΠΎ это Π·Π° ΠΌΠ΅Π»ΠΊΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹? Какой ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€?

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° Java

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ микросСрвисныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. Π­Ρ‚ΠΎ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π»ΠΈ Π²Ρ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ микросСрвисов ΠΈΠ»ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ с Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠžΡ‚ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° ΠΊ микросСрвисам

Одна довольно органичная идСя β€” Π²Ρ‹Ρ‡Π»Π΅Π½ΠΈΡ‚ΡŒ микросСрвисы ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Β«ΠΌΠΈΠΊΡ€ΠΎΒ» здСсь Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сами ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Π΅ сСрвисы Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠΈΠΊΡ€ΠΎ β€” ΠΎΠ½ΠΈ сами ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ довольно большими.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ.

ИдСя: Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Π½Π° микросСрвисы

УнаслСдованныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚ ΠΎΡ‚ микросСрвисного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. Π“Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎ Ρ‚Ρ€Π΅ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° свой ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Java-Π±Π°Π½ΠΊΠ° ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌ Π΄ΠΎΠΌΠ΅Π½Π° β€” это Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.

Π Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΏΡƒΡΡ‚ΡŒ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ сдСлаСт это

Π₯отя этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ выглядит Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π½Π° Π±ΡƒΠΌΠ°Π³Π΅ ΠΈ UML-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ…, Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ свои нСдостатки. Π’ основном, Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ тСхничСскиС Π½Π°Π²Ρ‹ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этим. ΠŸΠΎΡ‡Π΅ΠΌΡƒ?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ сущСствуСт огромная Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ, скаТСм, сильно связанный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ управлСния ΡƒΡ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ записями ΠΈΠ· вашСго ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°, ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это (ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ).

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ стадии, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ боятся, скаТСм, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ 7-Π»Π΅Ρ‚Π½ΡŽΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Hibernate Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΠΎΠΉ, которая являСтся лишь ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ усилия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ.

Π­Ρ‚ΠΈ ΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² старом, унаслСдованном ΠΊΠΎΠ΄Π΅ с нСясными Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ микросСрвисы? Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ часто это Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ Π΅Π΅ нСльзя Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π½Π° доскС ΠΈΠ»ΠΈ Π½Π° совСщаниях ΠΏΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅.

Π—Π΄Π΅ΡΡŒ умСстна Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· @simonbrown Π² Twitter:

Π― Π±ΡƒΠ΄Ρƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ это… Ссли люди Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Ρ‹, микросСрвисы Π½Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚.
I’ll keep saying this… if people can’t build monoliths properly, microservices won’t help.
Simon Brown

Новый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с микросСрвисой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ

Битуация выглядит Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Java. Π’Π΅ΠΏΠ΅Ρ€ΡŒ эти Ρ‚Ρ€ΠΈ ΠΏΡƒΠ½ΠΊΡ‚Π°, пСрСчислСнныС Π²Ρ‹ΡˆΠ΅ выглядят Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ‡Π΅:

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ микросСрвисы Π² Π½ΠΎΠ²Ρ‹Ρ… Java ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….

ВСхничСская микросСрвисная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π²ΠΎΠΏΡ€Π΅ΠΊΠΈ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ рСкомСндациям ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π½Π΅Π³ΠΎ. Hadi Hariri (https://twitter.com/hhariri) Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Β«Extract MicroserviceΒ» Π² IntelliJ.

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис

Π₯отя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ слишком ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹Π΅ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, ΠΊ соТалСнию, Π½Π΅ слишком Π΄Π°Π»Π΅ΠΊΠΈ ΠΎΡ‚ Π½Π΅Π³ΠΎ.

Π”ΠΎ микросСрвиса

Π‘ использованиСм Java микросСрвиса подстроки

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹, ΠΏΠΎ сути, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Java Π² Π²Ρ‹Π·ΠΎΠ² HTTP, Π±Π΅Π· ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для этого. Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: отсутствиС ΠΎΠΏΡ‹Ρ‚Π° ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ„ΠΎΡ€ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π° основС микросСрвисов Java.

РСкомСндация: Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ этого.

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ориСнтированная Π½Π° workflow (Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс)

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ распространСнным ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π°ΡˆΠΈΡ… микросСрвисов Java Π½Π° основС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ: Π² Π“Π΅Ρ€ΠΌΠ°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ (государствСнному) Π²Ρ€Π°Ρ‡Ρƒ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ вашС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² своСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии CRM для здравоохранСния.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΠ»Π°Ρ‚Ρƒ ΠΎΡ‚ страховой ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΎΠ½ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ ваши Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΈ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ Π»Π΅Ρ‡ΠΈΠ», посрСднику Ρ‡Π΅Ρ€Π΅Π· XML.

ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΊ рассмотрит этот XML-Ρ„Π°ΠΉΠ» ΠΈ (ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎ):

Если Π²Ρ‹ сСйчас ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ микросСрвисов, Ρƒ вас получится это ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ микросСрвисами Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ асинхронно с использованиСм Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° сообщСний, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ RabbitMQ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ€Π°Ρ‡ всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи.

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ выглядит Π½Π° Π±ΡƒΠΌΠ°Π³Π΅, Π½ΠΎ сразу ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСскольким вопросам:

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² привСдСнная Π²Ρ‹ΡˆΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° выглядит ΠΏΡ€ΠΎΡ‰Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвиса Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅ΡΡ‚ΡŒ своС Ρ‚ΠΎΡ‡Π½ΠΎΠ΅, Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. РаньшС это выглядСло ΠΊΠ°ΠΊ этот ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹ΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚:

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ простотС этих Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

РСкомСндация:

β†’ НС Π΄Π΅Π»Π°ΠΉ этого.

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².:
Chaos Monkey β€” Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Netflix для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… stateless-микросСрвисов β€” любой инстанс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ остановлСн ΠΈ автоматичСски Π·Π°ΠΌΠ΅Π½Π΅Π½ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ состояния. Chaos Monkey слСдит Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π» этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ.

Однако с мСньшСй Π³ΠΈΠΏΠ΅Ρ€Π±ΠΎΠ»ΠΎΠΉ.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ микросСрвисы ΠΏΠΎ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΌ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌ β€” ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Но Π³Ρ€Π°Π½ΠΈΡ†Π° Π΄ΠΎΠΌΠ΅Π½Π° (скаТСм, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈΠ»ΠΈ выставлСниС счСтов) Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ части (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ XML, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ XML, ΠΏΠ΅Ρ€Π΅ΡΠ»Π°Ρ‚ΡŒ XML).

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ с Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Java микросСрвисах, ΠΈ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄ΠΎΠΌΠ΅Π½Π° всС Π΅Ρ‰Π΅ ΠΎΡ‡Π΅Π½ΡŒ расплывчаты, ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π°ΡˆΠΈΡ… микросСрвисов Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΏΠΎΠ·ΠΆΠ΅.

И ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ DevOps Π² вашСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅ / ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ / ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ вашСй Π½ΠΎΠ²ΠΎΠΉ инфраструктуры.

ΠŸΠΎΠ»ΠΈΠ³Π»ΠΎΡ‚ΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎ-ориСнтированная микросСрвисная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°

БущСствуСт Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ, ΠΏΠΎΡ‡Ρ‚ΠΈ либСртарианский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ микросСрвисов: прСдоставлСниС вашим ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π»ΠΈΡ†Π°ΠΌ возмоТности Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ истории с использованиСм любого количСства языков ΠΈΠ»ΠΈ микросСрвисов (ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ΠΎΠ²Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½: ΠΏΠΎΠ»ΠΈΠ³Π»ΠΎΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅).

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, привСдСнная Π²Ρ‹ΡˆΠ΅ слуТба ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ XML ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написана Π½Π° Java, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ микросСрвис правдоподобия написан Π½Π° языкС Haskell (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ матСматичСски обоснованным), Π° микросСрвис пСрСсылки страховки Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ написан Π½Π° языкС Erlang (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ πŸ™‚ ).

Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π·Π°Π±Π°Π²Π½Ρ‹ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° (Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° идСальной систСмы с вашим ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ языком Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС), Π² сущности, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ являСтся Ρ‚Π΅ΠΌ, Ρ‡Π΅Π³ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ организация: унификация ΠΈ стандартизация.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ стандартизированный Π½Π°Π±ΠΎΡ€ языков, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инструмСнтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ваш микросСрвис Haskell Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° Π±ΠΎΠ»Π΅Π΅ экологичныС пастбища.

Π§Ρ‚ΠΎ интСрСсно: историчСская стандартизация зашла слишком Π΄Π°Π»Π΅ΠΊΠΎ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… компаниях ΠΈΠ· списка Fortune 500 ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ Π½Π΅ позволяли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Spring, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Β«Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΠ»ΠΎ Π² ΠΏΠ»Π°Π½ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎ тСхнологиям». Но ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠ³Π»ΠΎΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” это ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚ΠΎ ΠΆΠ΅ самоС, просто другая сторона Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΌΠΎΠ½Π΅Ρ‚Ρ‹.

РСкомСндация: Ссли Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΠ³Π»ΠΎΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ мСньшСС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ экосистСмС языка программирования. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Kotlin ΠΈ Java (Π½Π° основС JVM со 100% ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ), Π° Π½Π΅ Haskell ΠΈ Java.

Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ тСстированиС Java микросСрвисов

И Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π²Π΅Ρ‰ΡŒ ΠΎΠ± экосистСмС Java, ΠΈΠ»ΠΈ, скорСС, ΠΎ JVM: Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ свой ΠΊΠΎΠ΄ Java ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² основном Π½Π° любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ссли Π²Ρ‹ Π½Π΅ скомпилировали свой ΠΊΠΎΠ΄ с Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΠΎΠΉ вСрсиСй Java, Ρ‡Π΅ΠΌ ваша цСлСвая вСрсия JVM).

Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, особСнно ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅ΠΌΠ°Ρ…, ΠΊΠ°ΠΊ Docker, Kubernetes ΠΈΠ»ΠΈ The Cloud. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сцСнарии развСртывания:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ минимального развСртывания микросСрвиса Java

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π±Π°Π½ΠΊΠΎΠΌ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» monobank.jar (ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚) ΠΈ наш Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ riskengine.jar (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ микросСрвис).

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, минимальноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выглядят ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

К соТалСнию, Π΅ΡΡ‚ΡŒ мноТСство ΡΠΎΠ±Π»Π°Π·Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° этот вопрос.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнты сборки, SSH ΠΈ Ansible для развСртывания микросСрвисов Java

Π‘ΠΊΡƒΡ‡Π½Ρ‹ΠΉ, Π½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ прСкрасный ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Java-микросСрвисов β€” это Ρ‚ΠΎ, ΠΊΠ°ΠΊ администраторы Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π»ΠΈ Π»ΡŽΠ±ΡƒΡŽ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² компаниях Π·Π° послСдниС 20 Π»Π΅Ρ‚. Π‘ использованиСм Π½Π°Π±ΠΎΡ€Π° инструмСнтов:

Если Π²Ρ‹ Π½Π΅ Π·Π°Ρ†ΠΈΠΊΠ»Π΅Π½Ρ‹ Π½Π° создании Β«Π΄Ρ‹ΡˆΠ°Ρ‰Π΅Π³ΠΎΒ» ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° основС сСрвСров с автоматичСской балансировкой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, chaos monkeys, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… вашими машинами, ΠΈΠ»ΠΈ горячСго ΠΈ нСясного ощущСния, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€Ρ‹ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ Π² ZooKeeper Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Ρ‚ΠΎ эта установка ΡƒΠ²Π΅Π΄Π΅Ρ‚ вас достаточно Π΄Π°Π»Π΅ΠΊΠΎ.

ΠžΠ»Π΄ΡΠΊΡƒΠ»Π½ΠΎ, скучно, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Docker для развСртывания микросСрвисов Java

ВСрнСмся ΠΊ Π·Π°ΠΌΠ°Π½Ρ‡ΠΈΠ²Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€Π°ΠΌ. ΠŸΠ°Ρ€Ρƒ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π½Π° сцСну Π²Ρ‹ΡˆΠ΅Π» Docker ΠΈΠ»ΠΈ Ρ‚Π΅ΠΌΠ° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Если Ρƒ вас Π½Π΅Ρ‚ ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²:

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис

Π­Ρ‚ΠΎ выглядит Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ‡Π΅ для языков, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PHP ΠΈΠ»ΠΈ Python, Π³Π΄Π΅ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ вСрсий ΠΈΠ»ΠΈ настройки развСртывания историчСски Π±Ρ‹Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТными.

Или, Ссли вашС Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ мноТСства Π΄Ρ€ΡƒΠ³ΠΈΡ… установлСнных слуТб (с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ вСрсий): Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Postgres, ΠΈΠ»ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Redis.

Π˜Ρ‚Π°ΠΊ, основноС прСимущСство Docker для микросСрвисов Java, Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π²:

Если ваши Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΡ…ΠΎΠΆΠΈ ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Oracle Π½Π° своСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Docker.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Docker Swarm ΠΈΠ»ΠΈ Kubernetes для развСртывания микросСрвисов Java

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΊΠ°ΠΊ Π²Ρ‹ управляСтС этим кластСром, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ запуск Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Docker, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (brrrr)?

Π”Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° этот вопрос β€” Docker Swarm ΠΈ Kubernetes.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΎΠ±ΠΎΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π²Π°ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ YAML (см. Π½ΠΈΠΆΠ΅ НС вопрос: Рассказы ΠΎΠ± отступах Π² Yaml) для управлСния вашим кластСром. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ быстрый поиск Π² Π’Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π΅, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ чувства это Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, процСсс развСртывания для Π²Π°ΡˆΠΈΡ… микросСрвисов Java Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Как ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ микросСрвисы Java

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ микросСрвисы Π² производство, Π½ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ тСстируСтС ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ n-микросСрвисов Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ? Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ части?

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… способа:

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ вашим микросСрвисам Java Π²Π°ΠΌ, вСроятно, Ρ‚Π°ΠΊΠΆΠ΅ понадобится Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π±Ρ€ΠΎΠΊΠ΅Ρ€ сообщСний (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ActiveMQ ΠΈΠ»ΠΈ RabbitMQ) ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, сСрвСр элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ваши микросСрвисы Java Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ заниТСнию слоТности Π½Π° сторонС DevOps. ВзглянитС Π½Π° Microservice Testing Libraries, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΌΡΠ³Ρ‡ΠΈΡ‚ΡŒ эту боль.

Π’ любом случаС, эта ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ нас ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ микросСрвиса:

ΠžΠ±Ρ‰ΠΈΠ΅ вопросы ΠΎ Java микросСрвиах

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ микросСрвисов, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ для Java, ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ абстрактных Π²Π΅Ρ‰Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ микросСрвис Java устойчивым?

Напомним, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ создании микросСрвисов Π²Ρ‹ ΠΏΠΎ сути замСняСтС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² JVM
Π½Π° синхронныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈΠ»ΠΈ асинхронный ΠΎΠ±ΠΌΠ΅Π½ сообщСниями.

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² основном Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ JVM Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ), сСтСвой Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΅Π½.

Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ: ΠΎΡ‚ Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ сСти, Π΄ΠΎ внСдрСния Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° брандмауэра ΠΈ Π²Π·Ρ€Ρ‹Π²Π° вашСго Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° сообщСний.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ это ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ BillingService.

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ устойчивости HTTP / REST

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΡƒΠΏΠΈΡ‚ΡŒ элСктронныС ΠΊΠ½ΠΈΠ³ΠΈ Π½Π° сайтС вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Для этого Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ микросСрвис Π±ΠΈΠ»Π»ΠΈΠ½Π³Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ваш ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½ для создания фактичСских счСтов Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ PDF.

БСйчас ΠΌΡ‹ сдСлаСм этот Π²Ρ‹Π·ΠΎΠ² синхронно, Ρ‡Π΅Ρ€Π΅Π· HTTP. (Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ эту слуТбу асинхронно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ гСнСрация PDF Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠΉ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Но ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот самый ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ различия.)

ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ этот HTTP-Π²Ρ‹Π·ΠΎΠ². ΠžΠ±ΠΎΠ±Ρ‰Π°Ρ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°:

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ счастливых случаСв, оТидаСтся для любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ΠΎ ΠΆΠ΅ самоС относится ΠΈ ΠΊ микросСрвисам, Π΄Π°ΠΆΠ΅ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ усилия для обСспСчСния совмСстимости всСх Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Ρ… вСрсий API, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ с Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ ΠΈ выпусков ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… микросСрвисов.

И Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Chaos Monkey, Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ придСтся ΡΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ваши сСрвСры Π±ΡƒΠ΄ΡƒΡ‚ просто ΠΎΡ‡ΠΈΡ‰Π΅Π½Ρ‹ Π²ΠΎ врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ запрос Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ экзСмпляр.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ случай с ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ β€” это ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ случай. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, микросСрвисный ТСсткий диск рСспондСнта Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, ΠΈ вмСсто 50 мс для ΠΎΡ‚Π²Π΅Ρ‚Π° трСбуСтся 10 сСкунд. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ интСрСсным, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ испытываСтС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ вашСго BillingService Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ каскадно ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π²Π°ΡˆΡƒ систСму. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΊΡƒΡ…Π½Π΅, ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΉ Π±Π»ΠΎΠΊ всСх ΠΎΡ„ΠΈΡ†ΠΈΠ°Π½Ρ‚ΠΎΠ² рСсторана.

Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π», ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ Ρ‚Π΅ΠΌΡ‹ устойчивости микросСрвисов, Π½ΠΎ слуТит Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ, Π° Π½Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎ вашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ выпуска (Ρ‡Ρ‚ΠΎ, ΠΏΠΎ ΠΎΠΏΡ‹Ρ‚Ρƒ, происходит Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ слСдуСт)

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°Ρ… ΠΈ отказоустойчивости, являСтся Hystrix ΠΎΡ‚ Netflix. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ большС ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΌΡƒ.

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ устойчивости ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим асинхронноС ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅. Наш ΠΊΠΎΠ΄ BillingService Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Spring ΠΈ RabbitMQ для ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ счСт, ΠΌΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ отправляСм сообщСниС Π½Π°ΡˆΠ΅ΠΌΡƒ Π±Ρ€ΠΎΠΊΠ΅Ρ€Ρƒ сообщСний RabbitMQ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ нСсколько Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ², ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… сообщСний. Π­Ρ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ счСта Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ PDF ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ошибки выглядят Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ‡Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ большС Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² OK ΠΈΠ»ΠΈ ERROR, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ с синхронным HTTP-соСдинСниСм. ВмСсто этого Ρƒ вас Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Ρ€ΠΈ случая ошибки:

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ шаблона устойчивости асинхронного микросСрвиса Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ΠΎ лишь Π΄Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ зависят ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π²Π°ΠΌΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

Какой Java-микросСрвисный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π»ΡƒΡ‡ΡˆΠΈΠΉ?

НСдавно, частично Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Kubernetes ΠΈΠ»ΠΈ GraalVM, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΠ°Ρ€Π° спСциализированных микросСрвисных срСд.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Π²Π°ΠΌ придСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой собствСнный Π²Ρ‹Π±ΠΎΡ€, Π½ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Spring Boot, всС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ для микросСрвисов ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ сСбя ΠΊΠ°ΠΊ нСвСроятно быстрыС с ΠΎΡ‡Π΅Π½ΡŒ быстрым Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ запуска, ΠΌΠ°Π»Ρ‹ΠΉ объСмом памяти, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎ бСсконСчности, с Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ сСбя с Π±Π΅Π³Π΅ΠΌΠΎΡ‚ΠΎΠΌ Spring Boot ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

Π­Ρ‚ΠΎ ΠΏΠΎΡ€Π°ΠΆΠ°Π΅Ρ‚ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ нСсколько ΠΌΠΈΠ½ΡƒΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ, ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ Π² ΠΎΠ±Π»Π°ΠΊΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ-ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², сколько ΠΈΠΌ сСйчас Π½ΡƒΠΆΠ½ΠΎ, ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ хотят ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 50 мс.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ (искусствСнноС) врСмя запуска Π½Π° Β«Π³ΠΎΠ»ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅Β» ΠΈ врСмя ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ развСртывания Π΅Π΄Π²Π° Π»ΠΈ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΎΠ±Ρ‰ΠΈΠΉ успСх ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС, Ρ‡Π΅ΠΌ сильная экоструктура ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ докумСнтация, сообщСство ΠΈ Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° это Ρ‚Π°ΠΊ.

Π’ΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ для микросСрвисов (ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ, ΡΠ΅Ρ‚ΡŒ, ΠΎΠ±ΠΌΠ΅Π½ сообщСниями, DevOps, инфраструктура) Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСС влияниС Π½Π° ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‡Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° пустого hello world. А для горячих ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ JRebel ΠΈΠ»ΠΈ DCEVM.

ВСрнСмся ΠΊ Ρ†ΠΈΡ‚Π°Ρ‚Π΅ Π‘Π°ΠΉΠΌΠΎΠ½Π° Π‘Ρ€Π°ΡƒΠ½Π° (Simon Brown): Ссли люди Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ (быстрыС ΠΈ эффСктивныС) ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Ρ‹, ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ (быстрыС ΠΈ эффСктивныС) микросСрвисы β€” нСзависимо ΠΎΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ свой Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΠΊ с ΡƒΠΌΠΎΠΌ.

КакиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π»ΡƒΡ‡ΡˆΠ΅ всСго подходят для синхронных REST Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Java?

ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π±ΠΎΠ»Π΅Π΅ практичСских аспСктах Π²Ρ‹Π·ΠΎΠ²Π° HTTP REST API. На Π½ΠΈΠ·ΠΊΠΎΠΌ тСхничСском ΡƒΡ€ΠΎΠ²Π½Π΅ Π²Ρ‹, вСроятно, ΠΏΡ€ΠΈΠ΄Π΅Ρ‚Π΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… клиСнтских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ HTTP:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ здСсь я Π³ΠΎΠ²ΠΎΡ€ΡŽ «вСроятно», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы, ΠΎΡ‚ старых Π΄ΠΎΠ±Ρ€Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² JAX-RS Π΄ΠΎ соврСмСнных ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² WebSocket.

Π’ любом случаС, сущСствуСт тСндСнция ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ HTTP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠ·ΠΈΡ‚ΡŒΡΡ с HTTP-Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ OpenFeign ΠΈ Π΅Π³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² качСствС ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ для дальнСйшСго чтСния.

КакиС Π±Ρ€ΠΎΠΊΠ΅Ρ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΡƒΡ‡ΡˆΠΈΠΌΠΈ для асинхронного ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями Java?

Начиная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ с асинхронного ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, Π²Ρ‹, скорСС всСго, ΠΏΡ€ΠΈΠ΄Π΅Ρ‚Π΅ ΠΊ ActiveMQ (Classic ΠΈΠ»ΠΈ Artemis), RabbitMQ ΠΈΠ»ΠΈ Kafka. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, это просто популярный Π²Ρ‹Π±ΠΎΡ€.

Π’ΠΎΡ‚ нСсколько основных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ²:

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ RabbitMQ (ΠΈΠ»ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΎΠ² сообщСний Π² Ρ†Π΅Π»ΠΎΠΌ) ΠΈΠ»ΠΈ Kafka, Π² качСствС ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ взглянитС Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ пост Pivotal Π² качСствС ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² ΠΎΠ±Ρ‰Π΅ΠΌ, ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ искусствСнныС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ вашСго Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°. Π‘Ρ‹Π»ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-сообщСства ΠΌΠ½ΠΎΠ³ΠΎ спорили ΠΎ Ρ‚ΠΎΠΌ, насколько быстрым Π±Ρ‹Π» RabbitMQ ΠΈ насколько ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ Π±Ρ‹Π» ActiveMQ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Ρ‚Π΅ ΠΆΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ RabbitMQ ΠΌΠ΅Π΄Π»Π΅Π½Π΅Π½, с Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 20-30K сообщСний Π² сСкунду. Для Kafka сообщаСтся ΠΎ 100K сообщСний Π² сСкунду. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, Ρ‚Π°ΠΊΠΈΠ΅ сравнСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ учитывая, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ сравниваСтС яблоки ΠΈ Π°ΠΏΠ΅Π»ΡŒΡΠΈΠ½Ρ‹.

Но Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ: ΠΎΠ±Π° значСния пропускной способности ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΈΠ»ΠΈ срСднСй сторонС для Alibaba Group, Π½ΠΎ Π²Ρ‹ ΠΈ Π°Π²Ρ‚ΠΎΡ€, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ сообщСний Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ) Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, Π½ΠΎ эти Ρ†ΠΈΡ„Ρ€Ρ‹ β€” Π½Π΅ Ρ‚ΠΎ ΠΎ Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… 99% ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… бизнСс-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Java.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ внимания Π½Π° ΡˆΡƒΠΌΠΈΡ…Ρƒ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΌΡƒΠ΄Ρ€ΠΎ.

КакиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ я ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для микросСрвисного тСстирования?

Π’ зависимости ΠΎΡ‚ вашСго стСка Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнты Spring (экосистСма Spring) ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Arquillian (экосистСма JavaEE).

Π’Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Docker ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Testcontainers, которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»Π΅Π³ΠΊΠΎ ΠΈ быстро Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Oracle для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… тСстов ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ.

Для макСтирования Ρ†Π΅Π»Ρ‹Ρ… HTTP-сСрвСров, посмотритС Π½Π° Wiremock. Для тСстирования асинхронного ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ встраиваниС (ActiveMQ) ΠΈΠ»ΠΈ Π΄ΠΎΠΊΠ΅Ρ€ΠΈΠ½Π³ (RabbitMQ), Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Awaitility DSL.

ΠšΡ€ΠΎΠΌΠ΅ этого, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ всС ваши ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Β«ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΡ‹Π΅Β», Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Junit, TestNG для AssertJ ΠΈ Mockito.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список, ΠΈ Ссли Π²Π°ΠΌ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ вашСго любимого инструмСнта, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΈ я Π²ΠΊΠ»ΡŽΡ‡Ρƒ Π΅Π³ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΡŽ этого руководства.

Как Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π° для всСх ΠΌΠΎΠΈΡ… микросСрвисов Java?

Π’Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π° Π² микросСрвисах β€” интСрСсная ΠΈ довольно слоТная Ρ‚Π΅ΠΌΠ°. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» ΠΆΡƒΡ€Π½Π°Π»Π°, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ less ΠΈΠ»ΠΈ grep, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ n Ρ„Π°ΠΉΠ»ΠΎΠ² β€” ΠΆΡƒΡ€Π½Π°Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ вмСстС.

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ для всСй экосистСмы вСдСния ΠΆΡƒΡ€Π½Π°Π»Π° являСтся эта ΡΡ‚Π°Ρ‚ΡŒΡ. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΅Π΅, особСнно Ρ€Π°Π·Π΄Π΅Π» Β«Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π°Β» с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния микросСрвисов.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹:

Как ΠΌΠΎΠΈ микросСрвисы находят Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°?

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ всС наши микросСрвисы Π·Π½Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Π·Π½Π°ΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ IPS. Π­Ρ‚ΠΎ статичСская настройка. Π˜Ρ‚Π°ΠΊ, наш банковский ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ [ip = 192.168.200.1] Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ с сСрвСром риска [ip = 192.168.200.2], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ТСстко Π·Π°Π΄Π°Π½ Π² Ρ„Π°ΠΉΠ»Π΅ свойств.

Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π΅Ρ‰ΠΈ Π±ΠΎΠ»Π΅Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ΠΌΠΈ:

Π’ ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ…, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ называСтся микросСрвисной оркСстровкой ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° огромная Ρ‚Π΅ΠΌΠ°.

Π’Π°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠ°ΠΊ Eureka ΠΈΠ»ΠΈ Zookeeper, ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Β«Ρ€Π΅ΡˆΠΈΡ‚ΡŒΒ» эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, созданиС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ², Π·Π½Π°ΡŽΡ‰ΠΈΡ…, ΠΊΠ°ΠΊΠΈΠ΅ слуТбы доступны ΠΈ Π³Π΄Π΅. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΎΠ½ΠΈ вносят ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ слоТности.

ΠŸΡ€ΠΎΡΡ‚ΠΎ спроситС любого, ΠΊΡ‚ΠΎ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ запускал установку ZooKeeper.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ микросСрвисов Java?

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° огромная Ρ‚Π΅ΠΌΠ°, достойная собствСнного эссС. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ ТСстко Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ HTTPS с собствСнными Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ бСзопасности Π΄ΠΎ запуска установки Oauth2 с вашим собствСнным сСрвСром Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Как ΠΌΠ½Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС ΠΌΠΎΠΈ окруТСния выглядят ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ?

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€Π½ΠΎ для Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ Π±Π΅Π· микросСрвиса, Ρ‚Π°ΠΊΠΆΠ΅ Π²Π΅Ρ€Π½ΠΎ ΠΈ для Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ микросСрвиса. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Docker / Testcontainers, Π° Ρ‚Π°ΠΊΠΆΠ΅ сцСнариСв / Ansible.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈ сохраняйтС Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅.

НС вопрос: Рассказы ΠΎΠ± отступах Π² Yaml

Π‘Π΄Π΅Π»Π°Π΅ΠΌ Ρ€Π΅Π·ΠΊΠΈΠΉ Ρ€Π°Π·Π²ΠΎΡ€ΠΎΡ‚ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… вопросов, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассмотрим Yaml. Π­Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС фактичСского Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ„Π°ΠΉΠ»Π° для «записи ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π°Β». ΠžΡ‚ Π±ΠΎΠ»Π΅Π΅ простых инструмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ansible, Π΄ΠΎ ΠΌΠΎΠ³ΡƒΡ‡ΠΈΡ… Kubernetes.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚ΡŒ «мучСния» ΠΎΡ‚ отступов Π² YAML, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ простыС Ρ„Π°ΠΉΠ»Ρ‹ Ansible ΠΈ посмотритС, ΠΊΠ°ΠΊ часто Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ отступ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, нСсмотря Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ IDE. А Π·Π°Ρ‚Π΅ΠΌ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ это руководство.

А ΠΊΠ°ΠΊ насчСт распрСдСлСнных Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ? ВСстированиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ? Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹?

К соТалСнию, эти Ρ‚Π΅ΠΌΡ‹ Π½Π΅ вошли Π² эту Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства. ΠžΡΡ‚Π°Π²Π°ΠΉΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ микросСрвисов

Помимо спСцифичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ микросСрвисов Π² Java, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² любом микросСрвисном ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π˜Ρ… большС с ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ, ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ управлСнчСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния.

НСсоотвСтствиС Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ ΠΈ бэкССнд

Π’ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… микросСрвисных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, я Π±Ρ‹ Π½Π°Π·Π²Π°Π» нСсоотвСтствиСм внСшнСго интСрфСйса ΠΈ интСрфСйса микросСрвиса. Π§Ρ‚ΠΎ это ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚?

Π§Ρ‚ΠΎ Π² старых Π΄ΠΎΠ±Ρ€Ρ‹Ρ… ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°Ρ…, Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π²Π΅Π±-интСрфСйса Π±Ρ‹Π» ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ источник для получСния Π΄Π°Π½Π½Ρ‹Ρ…. Π’ микросСрвисных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π²Π΅Π±-интСрфСйса Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ n источников для получСния Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ создаСтС ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ микросСрвисов Java-IoT. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π²Ρ‹ выполняСтС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ машин, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ‡ΠΈ ΠΏΠΎ всСй Π•Π²Ρ€ΠΎΠΏΠ΅. И эти ΠΏΠ΅Ρ‡ΠΈ рСгулярно ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Π²Π°ΠΌ обновлСния с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΡ… Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ Ρ‚.Π΄.

Π Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск ΠΏΠ΅Ρ‡ΠΈ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС администратора, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ микросСрвисов «поиска ΠΏΠ΅Ρ‡ΠΈΒ». Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько строго ваши бэкэнд-ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ domain driven design ΠΈΠ»ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‹ ΠΎ микросСрвисах, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ микросСрвис «поиск ΠΏΠ΅Ρ‡ΠΈΒ» Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ваши ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Π½ΠΎ Π½Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ, модСль ΠΈΠ»ΠΈ мСстополоТСниС.

Для этого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ n Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (Π² зависимости ΠΎΡ‚ вашСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅ΠΉΠ΄ΠΆΠΈΠ½Π³Π°) Π² микросСрвисС Β«ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΠ΅Ρ‡ΠΈΒ» с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ микросСрвиса.

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис

И хотя это всСго лишь простой (Π½ΠΎ взятый ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (!)) ΠŸΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ½ дСмонстрируСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ:

Π Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ супСрмаркСты ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ·Π½Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² 10 Ρ€Π°Π·Π½Ρ‹Ρ… мСст, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ ΠΎΠ²ΠΎΡ‰ΠΈ, Π»ΠΈΠΌΠΎΠ½Π°Π΄, Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ ΠΏΠΈΡ†Ρ†Ρƒ ΠΈ Ρ‚ΡƒΠ°Π»Π΅Ρ‚Π½ΡƒΡŽ Π±ΡƒΠΌΠ°Π³Ρƒ. ВмСсто этого Π²Ρ‹ ΠΈΠ΄Π΅Ρ‚Π΅ Π² ΠΎΠ΄Π½ΠΎ мСсто.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ быстрСС. Π’ΠΎ ΠΆΠ΅ самоС касаСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² интСрфСйсов ΠΈ микросСрвисов.

ОТидания руководства

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты со стороны ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², программистских ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΡ… микросСрвисы:

Π£ руководства слоТилось Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π² (Π²ΡΠ΅ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠΉ) ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ бСсконСчноС количСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π° своСм микросСрвисС. Π’ самом ΠΊΠΎΠ½Ρ†Π΅ трСбуСтся лишь нСбольшая Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ (Ρ‚.Π΅. Π½Π΅Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ запуска).

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π°Ρ…, ΠΏΠΎΡ‡Π΅ΠΌΡƒ этот взгляд являСтся ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

МСньшиС части Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π»ΡƒΡ‡ΡˆΠΈΠ΅ части

Одна довольно очСвидная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ 20 ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… частСй (ΠΊΠ°ΠΊ Π² микросСрвисах) Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ 20 Π»ΡƒΡ‡ΡˆΠΈΡ… частСй. Чисто с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния тСхничСского качСства это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ваши ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ слуТбы ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ 400 запросов Hibernate для Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ слоям ΠΈ слоям Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ Ρ†ΠΈΡ‚Π°Ρ‚Π΅ Π‘Π°ΠΉΠΌΠΎΠ½Π° Π‘Ρ€Π°ΡƒΠ½Π°: Ссли людям Π½Π΅ удастся ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ слоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ микросСрвисы.

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… микросСрвисных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… мысли ΠΎΠ± устойчивости происходят послС запуска, являСтся Ρ‚Π°ΠΊΠΎΠΉ, поэтому Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ микросСрвисы Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π²ΠΆΠΈΠ²ΡƒΡŽ.

Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ: ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ заинтСрСсованы Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΎΠ±ΡƒΡ‡Π΅Π½Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² области устойчивости, сСтСй ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… смСТных Ρ‚Π΅ΠΌ.

МСньшиС части приводят ΠΊ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ количСству тСхничСских частСй

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½Π°Ρ тСндСнция ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ истории ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ всС Π±ΠΎΠ»Π΅Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ тСхничСскими (ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π³Π»ΡƒΠΏΡ‹ΠΌΠΈ), Π±ΠΎΠ»Π΅Π΅ ΠΌΠΈΠΊΡ€ΠΎ ΠΈ ΠΎΡ‚Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ вашСй микросСрвисной ΠΊΠΎΠΌΠ°Π½Π΄Π΅ прСдлагаСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ тСхничСский микросСрвис для Π²Ρ…ΠΎΠ΄Π° Π² систСму с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ваша ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ (ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒ бизнСсмСнов): это слишком просто ΠΈ скучно, вмСсто слуТбы Π²Ρ…ΠΎΠ΄Π° Π² систСму Π΄Π°Π²Π°ΠΉΡ‚Π΅ напишСм Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Β«ΡƒΠΌΠ½Ρ‹ΠΉΒ» микросСрвис UserStateChanged β€” Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΡ‹Ρ… бизнСс-Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.

А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Java Π² настоящСС врСмя Π½Π΅ Π² ΠΌΠΎΠ΄Π΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ напишСм микросСрвис UserStateChanged Π² Erlang. И Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ красно-Ρ‡Π΅Ρ€Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Steve Yegge написал, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΈΡ… Π½Π°ΠΈΠ·Π½Π°Π½ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡŽΠΌΠ΅ Π² Google.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, обслуТивания ΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° это Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠ»ΠΎΡ…ΠΎ, ΠΊΠ°ΠΊ написаниС слоСв спагСтти-ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°.

ΠŸΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹ΠΉ ΠΈ заурядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€? Π”Π°.

К соТалСнию, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Ρ€Π΅Π΄ΠΊΠΎΡΡ‚ΡŒ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ.

МСньшиС кусочки Π²Π΅Π΄ΡƒΡ‚ ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ пониманию

Π—Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚Π΅ΠΌΠ° понимания всСй систСмы, Π΅Π΅ процСссов ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов, Ссли Π²Ρ‹, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, нСсСтС ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ микросСрвисС [95: login-101: updateUserProfile].

Π­Ρ‚ΠΎ Π³Π°Ρ€ΠΌΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„ΠΎΠΌ, Π½ΠΎ Π² зависимости ΠΎΡ‚ вашСй ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, уровня довСрия ΠΈ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ поТиманию ΠΏΠ»Π΅Ρ‡Π°ΠΌΠΈ ΠΈ обвинСниям, Ссли сломаСтся какая-Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ всСй микросСрвисной Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ β€” Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ большС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ.

Π­Ρ‚ΠΎ Π½Π΅ являСтся Π½Π΅Π΄ΠΎΠ±Ρ€ΠΎΡΠΎΠ²Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ, скорСС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ количСство ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… частСй ΠΈ ΠΈΡ… мСсто Π² ΠΎΠ±Ρ‰Π΅ΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π΅.

ΠšΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ обслуТиваниС

Π­Ρ‚ΠΎ связано с послСднСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ: ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ обслуТиваниС. Π­Ρ‚ΠΎ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, сильно зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, с ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ: Ρ‡Π΅ΠΌ большС, Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Π΅Π΅.

ΠšΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° микросСрвисС β„– 47?

Они Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ»ΠΈ Π½ΠΎΠ²ΡƒΡŽ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ микросСрвиса? Π“Π΄Π΅ это Π±Ρ‹Π»ΠΎ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ?

Π‘ ΠΊΠ΅ΠΌ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ для запроса Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

ΠšΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ микросСрвис Π½Π° Erlang послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Макс ΠΏΠΎΠΊΠΈΠ½ΡƒΠ» компанию?

ВсС наши микросСрвисныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках программирования, Π½ΠΎ ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… часовых поясах! Как ΠΌΡ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΡƒΠ΅ΠΌ?

Π“Π»Π°Π²Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ здСсь являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π°Π²Ρ‹ΠΊΠ°ΠΌ DevOps, ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ микросСрвисам Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, сопряТСн с ΠΊΡƒΡ‡Π΅ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Как компания, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ этому.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ваш Π°Π²Ρ‚ΠΎΡ€ строго Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ микросСрвисы. Π­Ρ‚ΠΎ Π½Π΅ совсСм Π²Π΅Ρ€Π½ΠΎ β€” я Π² основном ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π±Ρ‹Ρ‚Ρ‹ Π² Π±Π΅Π·ΡƒΠΌΠΈΠΈ микросСрвисов.

Баланс микросСрвисов

ПолноС использованиС Java-микросСрвисов β€” это ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ маятника. Π”Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€” Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ сотСн старых Π΄ΠΎΠ±Ρ€Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Maven Π² ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚Π΅. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ баланс.

ОсобСнно Π² Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ консСрвативного, ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ мСньшС, Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Maven, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ сразу Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒΡŽ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ микросСрвисами.

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ тысячи Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… слоТностСй

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ большС Ρƒ вас микросСрвисов ΠΈ Ρ‡Π΅ΠΌ мСньшС Ρƒ вас Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°Π»Π°Π½Ρ‚ΠΎΠ² DevOps (Π½Π΅Ρ‚, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сцСнариСв Ansible ΠΈΠ»ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π½Π° Heroku Π½Π΅ учитываСтся), Ρ‚Π΅ΠΌ большС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΏΠΎΠ·ΠΆΠ΅ Π² Ρ€Π°Π±ΠΎΡ‚Π΅.

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» ΠžΠ±Ρ‰ΠΈΠ΅ вопросы ΠΎ Java микросСрвисах этого руководства ΡƒΠΆΠ΅ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для всСх этих инфраструктурных Π·Π°Π΄Π°Ρ‡. Π’Ρ‹ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ всС это большС Π½Π΅ связано с бизнСс-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (Π·Π° Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ платят), Π° скорСС с фиксациСй большСго количСства Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π½Π° Π΅Ρ‰Π΅ большСм количСствС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

Siva Prasad Reddy (Π¨ΠΈΠ²Π° ΠŸΡ€Π°ΡΠ°Π΄ Π Π΅Π΄Π΄ΠΈ) ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Π²Π΅Π» ΠΈΡ‚ΠΎΠ³ Π² своСм Π±Π»ΠΎΠ³Π΅:

Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ это уТасно, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ 70% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Π±ΠΎΡ€ΡŒΠ±Ρƒ с этой соврСмСнной инфраструктурой ΠΈ 30% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ.

Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ микросСрвисы Java?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот вопрос, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π΅Ρ€Π·ΠΊΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΈΠ·Π΅Ρ€ Google ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос ΠΏΠΎ своСму ΠΎΠΏΡ‹Ρ‚Ρƒ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с микросСрвисами, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ микросСрвисному ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Java, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° самой малСнькой Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ машинС Hetzner. Π’ΠΎ ΠΆΠ΅ самоС относится ΠΈ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ сСрвСру Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ машинС Hetzner.

И Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ваш Java-ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ процСссы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ рСгистрация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈ Π²Ρ‹ создаСтС Π½Π΅ сотни запросов ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠ΅ количСство (

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *