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. ΠΡΠΎΡΡΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ ΡΡΠ»ΡΠ³.
ΠΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΡΠΈΡΡΠ½ΠΊΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠΌ ΡΡΠ»ΡΠ³. ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΡΠ°ΠΊΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° Π²Π΅Π±-ΡΠ»ΡΠΆΠ±, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΈΠΏΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡΠΌΠ°ΡΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°.
ΠΠΎΡΡΠ°Π²ΡΠΈΠΊ ΡΡΠ»ΡΠ³ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ XML-ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΎΠ½ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΡ.
2. RESTful
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ (REST) β ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π±Π΅Π· ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Π΅Π±-ΡΠ»ΡΠΆΠ±Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ ΠΈΡ URL-Π°Π΄ΡΠ΅ΡΠ°ΠΌ. ΠΠ½ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² REST-ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ, ΠΈ REST-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΡ REST. ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ½ΠΎΠΊ Π½ΠΈΠΆΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅.
Π ΡΡΠΎΠΌ ΡΡΠΈΠ»Π΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ 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 Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠ»ΠΎΡ ΠΎΠ³ΠΎ. ΠΡΠΎΡΡΠΎ ΠΎΠΏΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ:
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Π°Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ°ΠΉΠ» 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-Π±Π°Π½ΠΊΠ° ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠ°Π·Π±ΠΈΡΡ Π΅Π³ΠΎ ΠΏΠΎ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌ Π΄ΠΎΠΌΠ΅Π½Π° β ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°Π·ΡΠΌΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
Π Π΅Π°Π»ΡΠ½ΠΎΡΡΡ: ΠΏΡΡΡΡ ΠΊΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ
Π₯ΠΎΡΡ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Ρ ΠΎΡΠΎΡΠΎ Π½Π° Π±ΡΠΌΠ°Π³Π΅ ΠΈ 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 Π² Π²ΡΠ·ΠΎΠ² HTTP, Π±Π΅Π· ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΡ ΠΏΡΠΈΡΠΈΠ½ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. ΠΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΠΏΡΡΠ° ΠΈ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Java.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ: Π½Π΅ Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎΠ³ΠΎ.
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° workflow (ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ)
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π°ΡΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Java Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ: Π² ΠΠ΅ΡΠΌΠ°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΠ΅ΡΡ ΠΊ (Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ) Π²ΡΠ°ΡΡ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π²Π°ΡΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ CRM Π΄Π»Ρ Π·Π΄ΡΠ°Π²ΠΎΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠΏΠ»Π°ΡΡ ΠΎΡ ΡΡΡΠ°Ρ ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΎΠ½ ΠΎΡΠΏΡΠ°Π²ΠΈΡ Π²Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π»Π΅ΡΠ΅Π½ΠΈΠΈ ΠΈ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΡΠΈΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ Π»Π΅ΡΠΈΠ», ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΡ ΡΠ΅ΡΠ΅Π· XML.
ΠΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡ ΡΡΠΎΡ XML-ΡΠ°ΠΉΠ» ΠΈ (ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎ):
ΠΡΠ»ΠΈ Π²Ρ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Ρ Π²Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΡΠΎΠΊΠ΅ΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ RabbitMQ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ°Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ.
ΠΠΏΡΡΡ ΠΆΠ΅, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π° Π±ΡΠΌΠ°Π³Π΅, Π½ΠΎ ΡΡΠ°Π·Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ:
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π²ΡΡΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΎΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ΅ΠΏΠ΅ΡΡ Π΅ΡΡΡ ΡΠ²ΠΎΠ΅ ΡΠΎΡΠ½ΠΎΠ΅, ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π Π°Π½ΡΡΠ΅ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ ΠΊΠ°ΠΊ ΡΡΠΎΡ ΡΡΡΠ°ΡΠ½ΡΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ:
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠΎΡΠΈΡΡ ΠΎ ΠΏΡΠΎΡΡΠΎΡΠ΅ ΡΡΠΈΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ, ΡΠ΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ:
β ΠΠ΅ Π΄Π΅Π»Π°ΠΉ ΡΡΠΎΠ³ΠΎ.
ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².:
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 ΠΈΠ»ΠΈ ΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ ΠΎΠΏΡΡΠ° ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌ, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²:
ΠΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°ΡΠ΅ Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ 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 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΠΉΠ΄ΠΆΠΈΠ½Π³Π°) Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ Β«ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΠ΅ΡΠΈΒ» Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°.
Π Ρ ΠΎΡΡ ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΡΠΎΡΡΠΎΠΉ (Π½ΠΎ Π²Π·ΡΡΡΠΉ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° (!)) ΠΡΠΈΠΌΠ΅Ρ, ΠΎΠ½ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
Π Π΅Π°Π»ΡΠ½ΡΠ΅ ΡΡΠΏΠ΅ΡΠΌΠ°ΡΠΊΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΏΡΠΈΠ·Π½Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Ρ ΠΎΠ΄ΠΈΡΡ Π² 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-ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π½Π΅ ΡΠΎΡΠ½ΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·ΡΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (