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

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° соврСмСнном стСкС Java-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ

Π’ΠΈΠΏ тСхнологииНазваниСВСрсия
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°JDK11.0.1
Π―Π·Ρ‹ΠΊ программированияKotlin1.3.10
Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ прилоТСнияSpring Framework5.0.9
Spring Boot2.0.5
БистСма сборкиGradle5.0
Gradle Kotlin DSL1.0.4
Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для unit-тСстированияJUnit5.1.1
Spring Cloud
Единая Ρ‚ΠΎΡ‡ΠΊΠ° доступа (API gateway)Spring Cloud GatewayΠ’Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Release train Finchley SR2 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Spring Cloud
Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Centralized configuration)Spring Cloud Config
Врассировка запросов (Distributed tracing)Spring Cloud Sleuth
Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ HTTP ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (Declarative HTTP client)Spring Cloud OpenFeign
ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ сСрвисов (Service discovery)Spring Cloud Netflix Eureka
ΠŸΡ€Π΅Π΄ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅Π»ΡŒ (Circuit breaker)Spring Cloud Netflix Hystrix
ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ балансировка Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Client-side load balancing)Spring Cloud Netflix Ribbon

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· 5-ΠΈ микросСрвисов: 3-Ρ… инфраструктурных (Config server, Service discovery server, UI gateway) ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² front-end’а (Items UI) ΠΈ back-end’а (Items service):

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

ВсС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ рассмотрСны Π΄Π°Π»Π΅Π΅. Π’ Β«Π±ΠΎΠ΅Π²ΠΎΠΌΒ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС микросСрвисов, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ бизнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π˜Ρ… Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ тСхничСски выполняСтся Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Items UI ΠΈ Items service.

Disclaimer

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ инструмСнты для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ оркСстрации, Ρ‚. ΠΊ. Π² настоящСС врСмя ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

Config server

Для создания Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Ρ‹Π» использован Spring Cloud Config. ΠšΠΎΠ½Ρ„ΠΈΠ³ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… источников, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ git-рСпозитория; Π² этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ для простоты ΠΈ наглядности ΠΎΠ½ΠΈ находятся Π² рСсурсах прилоТСния:

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

ΠŸΡ€ΠΈ этом ΠΊΠΎΠ½Ρ„ΠΈΠ³ самого Config server ( application.yml ) выглядит Ρ‚Π°ΠΊ:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ этого микросСрвиса состоит ΠΈΠ· всСго лишь ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находятся объявлСниС класса прилоТСния ΠΈ main-ΠΌΠ΅Ρ‚ΠΎΠ΄, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ эквивалСнтного ΠΊΠΎΠ΄Π° Π½Π° Java, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня:

ΠšΠ»Π°ΡΡΡ‹ прилоТСния ΠΈ main-ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… микросСрвисах ΠΈΠΌΠ΅ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄.

Service discovery server

Service discovery β€” это ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями Π² условиях Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ измСнСния числа ΠΈΡ… инстансов ΠΈ сСтСвого располоТСния. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ являСтся Service registry β€” Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… микросСрвисов, ΠΈΡ… инстансов ΠΈ сСтСвых располоТСний (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ здСсь).

Π’ этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Service discovery Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° основС Netflix Eureka, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ собой Client-side service discovery: Eureka server выполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Service registry, Π° Eureka client ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ запроса ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ микросСрвису обращаСтся ΠΊ Eureka server Π·Π° списком инстансов Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ осущСствляСт балансировку Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Netflix Ribbon). Netflix Eureka, ΠΊΠ°ΠΊ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ стСка Netflix OSS (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Hystrix ΠΈ Ribbon) интСгрируСтся с Spring Boot прилоТСниями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring Cloud Netflix.

Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ Service discovery server, находящСмся Π² Π΅Π³ΠΎ рСсурсах ( bootstrap.yml ), указываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ прилоТСния ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ запуск микросСрвиса Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Π½, Ссли Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Config server:

ΠžΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° прилоТСния располагаСтся Π² Ρ„Π°ΠΉΠ»Π΅ eureka-server.yml Π² рСсурсах Config server:

Eureka server ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΡ€Ρ‚ 8761, Ρ‡Ρ‚ΠΎ позволяСт всСм Eureka client’ам Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° register-with-eureka (ΡƒΠΊΠ°Π·Π°Π½ΠΎ для наглядности, Ρ‚. ΠΊ. ΠΎΠ½ΠΎ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ само ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ микросСрвисы, Π±ΡƒΠ΄Π΅Ρ‚ зарСгистрировано Π² Eureka server. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ fetch-registry опрСдСляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Eureka client ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Service registry.

Бписок зарСгистрированных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ другая информация доступны ΠΏΠΎ http://localhost:8761/ :

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

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Service discovery ΡΠ²Π»ΡΡŽΡ‚ΡΡ Consul, Zookeeper ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Items service

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдставляСт собой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ back-end с REST API, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ с использованиСм появившСгося Π² Spring 5 Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° WebFlux (докумСнтация здСсь), Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ Kotlin DSL для Π½Π΅Π³ΠΎ:

Рассмотрим ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Eureka server:

УбСдимся Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Eureka server этих Π΄Π°Π½Π½Ρ‹Ρ…, зайдя Π½Π° http://localhost:8761/eureka/apps/items-service Ρ‡Π΅Ρ€Π΅Π· Postman:

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

Items UI

Π­Ρ‚ΠΎΡ‚ микросСрвис, ΠΏΠΎΠΌΠΈΠΌΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ дСмонстрируСт взаимодСйствиС с UI gateway (Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅), выполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ front-end для Items service, с REST API ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСсколькими способами:

И ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

И ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС Ρ‚Ρ€ΠΈ способа Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, зайдя Π½Π° http://localhost:8081/example :

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

Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с использованиСм OpenFeign, Ρ‚. ΠΊ. ΠΎΠ½ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° взаимодСйствиС с Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ микросСрвисом, обязанности ΠΏΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Π΅Ρ€Ρ‘Ρ‚ Π½Π° сСбя Spring. ΠžΠ±ΡŠΠ΅ΠΊΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ этот ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚, инТСктируСтся ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π±ΠΈΠ½:

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Feign-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° трСбуСтся Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ класс прилоТСния @EnableFeignClients :

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Hystrix fallback Π² Feign-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ прилоТСния Π½ΡƒΠΆΠ½ΠΎ внСсти:

UI gateway

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ API gateway позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° для API, прСдоставляСмого Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ микросСрвисами (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ здСсь). ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ этот ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, осущСствляСт ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ (Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³) запросов ΠΊ микросСрвисам, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ.

Π’ этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ для большСй наглядности Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ UI gateway, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Сдиная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… UI; ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ API gateway рСализуСтся Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° основС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Spring Cloud Gateway. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ являСтся Netflix Zuul, входящий Π² Netflix OSS ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ с Spring Boot с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring Cloud Netflix.
UI gateway Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° 443 ΠΏΠΎΡ€Ρ‚Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сгСнСрированный SSL-сСртификат (находится Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅). SSL ΠΈ HTTPS сконфигурированы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π›ΠΎΠ³ΠΈΠ½Ρ‹ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ хранятся Π² Map-based ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ спСцифичного для WebFlux интСрфСйса ReactiveUserDetailsService :

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ бСзопасности настроСны Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

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

Π­Ρ‚Π° страница ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ срСдства Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Bootstrap, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Webjars, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ client-side Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ зависимостями. Для формирования HTML-страниц ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Thymeleaf. Доступ ΠΊ страницС Π»ΠΎΠ³ΠΈΠ½Π° конфигурируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ WebFlux:

ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ срСдствами Spring Cloud Gateway ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ настроСна Π² YAML- ΠΈΠ»ΠΈ java-ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅. Π ΠΎΡƒΡ‚Ρ‹ ΠΊ микросСрвисам Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ автоматичСски Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· Service registry. ΠŸΡ€ΠΈ достаточно большом количСствС UI, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ трСбуСтся ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ с Service registry:

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° include-expression ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€ΠΎΡƒΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ созданы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для микросСрвисов, названия ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° -UI, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° url-expression β€” Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ доступны ΠΏΠΎ HTTP ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ самого UI gateway, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎ HTTPS, ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ клиСнтская балансировка Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (рСализуСмая с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Netflix Ribbon).

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания Ρ€ΠΎΡƒΡ‚ΠΎΠ² Π² java-ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (Π±Π΅Π· ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Service registry):

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€ΠΎΡƒΡ‚ осущСствляСт ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ домашнюю страницу Eureka server ( http://localhost:8761 ), Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ΅Π½ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ рСсурсов этой страницы.

Π’ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… микросСрвисах ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΠΎΠ³ΠΈΠ½Ρƒ ΠΈ/ΠΈΠ»ΠΈ ролям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π² UI gateway. Для этого я создал Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π² запрос ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ:

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

Spring Cloud Sleuth β€” это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для трассировки запросов Π² распрСдСлённой систСмС. Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ запроса, проходящСго Ρ‡Π΅Ρ€Π΅Π· нСсколько микросСрвисов, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Trace Id (сквозной ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€) ΠΈ Span Id (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ unit of work) (для Π±ΠΎΠ»Π΅Π΅ Π»Ρ‘Π³ΠΊΠΎΠ³ΠΎ восприятия я упростил схСму; здСсь Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ объяснСниС):

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

Π£ΠΊΠ°Π·Π°Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ настройки логирования, Π² консоли ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… микросСрвисов ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ (послС названия микросСрвиса выводятся Trace Id ΠΈ Span Id):

Для графичСского прСдставлСния распрСдСлённой трассировки ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Zipkin, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сСрвСра, Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ HTTP-запросах ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… микросСрвисов (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ здСсь).

Π‘Π±ΠΎΡ€ΠΊΠ°

Учитывая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Gradle wrapper, Π½Π΅Ρ‚ нСобходимости Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ установлСнного локально Gradle.

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запуск ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ проходят Π½Π° JDK 11.0.1. Π”ΠΎ этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° JDK 10, поэтому Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π½Π° этой вСрсии ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ со сборкой ΠΈ запуском Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚. По ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсий JDK Π΄Π°Π½Π½Ρ‹Ρ… Ρƒ мСня Π½Π΅Ρ‚. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Gradle 5 Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ JDK 8.

Запуск

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ прилоТСния Π² порядкС ΠΈΡ… описания Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Intellij IDEA с Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌ Run Dashboard, Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

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

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

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±Ρ‹Π» рассмотрСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ Π² Java-ΠΌΠΈΡ€Π΅ стСкС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π΅Ρ‘ основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ. НадСюсь, для ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» окаТСтся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΡŽ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!

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

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹ Π½Π° 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 Microservices

И Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π²Π΅Ρ‰ΡŒ ΠΎΠ± экосистСмС 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 синхронными Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ HTTP ΠΈΠ»ΠΈ асинхронным ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ сообщСниями.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

МоТно Π½Π°Π·Π²Π°Ρ‚ΡŒ нСсколько: Quarkus, Micronaut, Vert.x, Helidon.

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

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

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

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

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

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

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

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

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

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

БобствСнный Http ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Java (начиная с Java 11), Http ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Apache ΠΈΠ»ΠΈ OkHttp.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ здСсь я Π³ΠΎΠ²ΠΎΡ€ΡŽ «вСроятно», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы, ΠΎΡ‚ старых Π΄ΠΎΠ±Ρ€Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² 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 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *