πŸ”₯ ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹ Π²Ρ‹ΡˆΠ»ΠΈ ΠΈΠ·-ΠΏΠΎΠ΄ контроля? Π’Ρ€ΠΈ шага, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ упорядочат всС Π·Π° ΠΎΠ΄ΠΈΠ½ мСсяц πŸ”₯

πŸ”₯ ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹ Π²Ρ‹ΡˆΠ»ΠΈ ΠΈΠ·-ΠΏΠΎΠ΄ контроля? Π’Ρ€ΠΈ шага, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ упорядочат всС Π·Π° ΠΎΠ΄ΠΈΠ½ мСсяц πŸ”₯

ΠšΡ‚ΠΎ рассказываСт

Π― Ρ€ΡƒΠΊΠΎΠ²ΠΎΠΆΡƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ CelerFide, которая занимаСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Java backend ΠΏΠΎΠ΄ ΠΊΠ»ΡŽΡ‡. НСдавно ΠΊ Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΡ‘Π» Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ: дСсятки сСрвисов, Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Π΅ зависимости, Ρ€Π΅Π»ΠΈΠ·Ρ‹ длятся ΠΏΠΎ Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒ часов ΠΈ часто Β«ΠΊΠ»Π°Π΄ΡƒΡ‚Β» ΠΏΡ€ΠΎΠ΄. НиТС β€” Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈΠ· хаоса. Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ свСдСны ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ: всё ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.

Π¨Π°Π³ 1. РаздСляСм сСрвисы ΠΏΠΎ смыслу, Π° Π½Π΅ Β«ΠΊΠ°ΠΊ придётся»

Как Π±Ρ‹Π»ΠΎ. Один ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ сСрвис ΠΎΡ‚Π²Π΅Ρ‡Π°Π» ΠΈ Π·Π° ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ, ΠΈ Π·Π° ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹, ΠΈ Π·Π° рассылки. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ спорили, ΠΊΡ‚ΠΎ Ρ‡ΠΈΠ½ΠΈΡ‚ ошибки, ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΡΠ½ΡƒΠ»ΠΈΡΡŒ, Π° любой Ρ€Π΅Π»ΠΈΠ· Π³Ρ€ΠΎΠ·ΠΈΠ» ΠΎΠ±Π²Π°Π»ΠΎΠΌ всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π§Ρ‚ΠΎ сдСлали. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис обслуТиваСт ΠΎΠ΄Π½Ρƒ бизнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ, Π·Π°ΠΊΠ°Π·Ρ‹, увСдомлСния), Π° Π²Π»Π°Π΄Π΅Π΅Ρ‚ ΠΈΠΌ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°: Π΅Ρ‘ ΠΆΠ΅ ΠΊΠΎΠ΄, Π±Π°Π·Π°, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Ρ€Π΅Π»ΠΈΠ·Ρ‹.

Π§Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΡƒ вынСсли Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ρ€Π΅Π»ΠΈΠ· пСрСстал Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° сутки ΠΈ укладываСтся Π² Π΄Π²Π°-Ρ‚Ρ€ΠΈ часа; Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ падСния ΠΏΠΎΡ‡Ρ‚ΠΈ исчСзли.

Π¨Π°Π³ 2. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π½Π° gRPC ΠΈ события

Как Π±Ρ‹Π»ΠΎ. БСрвисы Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° ΠΏΠΎ REST. ΠŸΡ€ΠΈ дСсятках сСрвисов ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² добавлял Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π° сбой любой Ρ‚ΠΎΡ‡ΠΊΠΈ ронял всю Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ.

Π§Ρ‚ΠΎ сдСлали.

  • Π’Π΅ΡΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ бэкэнд ΠΏΠ΅Ρ€Π΅Π²Π΅Π»ΠΈ Π½Π° gRPC β€” Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» быстрСС HTTP ΠΈ экономнСС ΠΏΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡƒ.
  • Π’Π°ΠΌ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, увСдомлСния ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°), Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний: сСрвис ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ событиС, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π±ΠΈΡ€Π°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° Π³ΠΎΡ‚ΠΎΠ²Ρ‹.
  • Gateway сдСлали Β«Ρ‚ΠΎΠ½ΠΊΠΈΠΌΒ» β€” ΠΎΠ½ лишь направляСт запросы, вся Π»ΠΎΠ³ΠΈΠΊΠ° ΠΆΠΈΠ²Ρ‘Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСрвисов.

Π§Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ. БрСдняя Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΡƒΠΏΠ°Π»Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π²Π΄Π²ΠΎΠ΅, Π° сбой ΠΎΠ΄Π½ΠΎΠΉ слуТбы большС Π½Π΅ Π²Π°Π»ΠΈΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…: события ΠΆΠ΄ΡƒΡ‚, ΠΏΠΎΠΊΠ° Π½ΡƒΠΆΠ½Ρ‹ΠΉ сСрвис восстановится.

Π¨Π°Π³ 3. ΠžΡ‚Π΄Π΅Π»ΡΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ управляСм Β«Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈΒ» опСрациями сагами

Как Π±Ρ‹Π»ΠΎ. ВсС сСрвисы Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρƒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π±Π°Π·Ρƒ. Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ замСдляли Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹ΠΌΠΈ, Π° Π΅Π΄ΠΈΠ½Ρ‹ΠΉ сбой ΠΌΠΎΠ³ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ вСсь ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π΅Π½Π΅Π³.

Π§Ρ‚ΠΎ сдСлали.

  • ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ сСрвису Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π±Π°Π·Ρƒ: ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ Π½Π΅ ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ Π·Π°ΠΊΠ°Π·Π°ΠΌ, Π° Π·Π°ΠΊΠ°Π·Ρ‹ β€” рассылкам.
  • Π Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись: «горячиС» ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² мастСр, ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ бСрутся ΠΈΠ· Ρ€Π΅ΠΏΠ»ΠΈΠΊ.
  • Π”Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±Π΅Ρ€Π½ΡƒΠ»ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ «сага». Π‘Π°Π³Π° β€” это Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ свой Β«ΠΎΡ‚ΠΊΠ°Ρ‚Β». Если Π½Π° шагС Β«ΡΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Β» ΡΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ ошибка, запускаСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ шаг Β«Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€ Π½Π° склад», Π° дСньги ΠΈ счёт Ρ„Π°ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°ΡŽΡ‚ΡΡ. УправляСт всСм Π»Ρ‘Π³ΠΊΠΈΠΉ оркСстратор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ состояниС шагов ΠΈ ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сСрвисам. Π’Π°ΠΊ ΠΌΡ‹ ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΎΡ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ: Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ согласованными, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· сСрвисов ΠΏΠ°Π΄Π°Π΅Ρ‚.

Π§Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ. Ошибки Π² ΠΏΠ»Π°Ρ‚Ρ‘ΠΆΠ½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ большС Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ, Π° критичСских Π°Π²Π°Ρ€ΠΈΠΉ Π·Π° ΠΊΠ²Π°Ρ€Ρ‚Π°Π» Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ вовсС.

Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π² блиТайший спринт

  1. НарисуйтС ΠΊΠ°Ρ€Ρ‚Ρƒ сСрвисов ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Π³Π΄Π΅ ΠΎΠ½ΠΈ дСлят ΠΎΠ΄Π½Ρƒ Π±Π°Π·Ρƒ ΠΈΠ»ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ прямыС REST-Π²Ρ‹Π·ΠΎΠ²Ρ‹.
  2. ΠŸΠ΅Ρ€Π΅Π²Π΅Π΄ΠΈΡ‚Π΅ самый «тяТёлый» ΠΏΠΎΡ‚ΠΎΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рассылки) Π½Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний.
  3. Π—Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Β«ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° β€” ΠΎΠ΄ΠΈΠ½ сСрвис» ΠΈ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π±Π°Π·Ρ‹ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ готовности.

Π§Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Π» Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ Ρ‡Π΅Ρ€Π΅Π· мСсяц ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ

  • Π Π΅Π»ΠΈΠ· вмСсто 20 часов стал Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ 3. БСрвисы малСнькиС, ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΈ дСплоятся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… собствСнныС Π±Π°Π·Ρ‹, Π° риски Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹.
  • Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΡƒΠΏΠ°Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 40 %. gRPC Π·Π°ΠΌΠ΅Π½ΠΈΠ» тяТёлый HTTP/JSON, Π° Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² стала асинхронной; лишний шлюз ΡƒΠ±Ρ€Π°Π»ΠΈ β€” минус ΠΎΠ΄ΠΈΠ½ сСтСвой ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄.
  • ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Β«Ρ†Π΅ΠΏΠ½Ρ‹Π΅Β» падСния исчСзли. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвиса своя Π±Π°Π·Π° ΠΈ рСсурсы, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ события, Π° саги быстро ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ сбойный шаг, Π½Π΅ затрагивая ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅.

Π’Ρ€ΠΈ понятных шага β€” ΠΈ Π΄Π°ΠΆΠ΅ самый Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ микросСрвисный ΠΏΠ΅ΠΉΠ·Π°ΠΆ становится прСдсказуСмым. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρƒ сСбя ΠΈ посмотритС, ΠΊΠ°ΠΊ измСнится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π»ΠΈΠ·. Π£Π΄Π°Ρ‡ΠΈ!

ΠΠ°Ρ‡Π°Ρ‚ΡŒ Π΄ΠΈΡΠΊΡƒΡΡΠΈΡŽ