Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах

ΠŸΡ€ΠΈΠ²Π΅Ρ‚! МСня Π·ΠΎΠ²ΡƒΡ‚ Π’Π°Π΄ΠΈΠΌ Мадисон, я Ρ€ΡƒΠΊΠΎΠ²ΠΎΠΆΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ System Platform Авито. О Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ с ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ, Π±Ρ‹Π»ΠΎ сказано Π½Π΅ Ρ€Π°Π·. ΠŸΠΎΡ€Π° ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π»ΠΈ свою инфраструктуру, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· микросСрвисов максимум ΠΏΠΎΠ»ΡŒΠ·Ρ‹ ΠΈ Π½Π΅ Π΄Π°Ρ‚ΡŒ сСбС Π² Π½ΠΈΡ… ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ. Как Π½Π°ΠΌ здСсь ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ PaaS, ΠΊΠ°ΠΊ ΠΌΡ‹ упростили Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΈ свСли созданиС микросСрвиса ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠΊΡƒ β€” Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ дальшС. НС всё, ΠΎ Ρ‡Ρ‘ΠΌ я ΠΏΠΈΡˆΡƒ Π½ΠΈΠΆΠ΅, Π² Авито Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅, Ρ‡Π°ΡΡ‚ΡŒ β€” Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌ Π½Π°ΡˆΡƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ.

(А Π΅Ρ‰Ρ‘ Π² ΠΊΠΎΠ½Ρ†Π΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ я расскаТу ΠΎ возмоТности ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π½Π° Ρ‚Ρ€Π΅Ρ…Π΄Π½Π΅Π²Π½Ρ‹ΠΉ сСминар ΠΎΡ‚ экспСрта ΠΏΠΎ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠšΡ€ΠΈΡΠ° Ричардсона).

Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах

Как ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ микросСрвисам

Авито β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΡ… Π² ΠΌΠΈΡ€Π΅ классифайдов, Π½Π° Π½Ρ‘ΠΌ публикуСтся большС 15 ΠΌΠ»Π½ Π½ΠΎΠ²Ρ‹Ρ… объявлСний Π² сутки. Наш бэкСнд ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ большС 20 тыс. запросов Π² сСкунду. БСйчас Ρƒ нас нСсколько сотСн микросСрвисов.

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΌΡ‹ выстраиваСм Π½Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π³ΠΎΠ΄. Как ΠΈΠΌΠ΅Π½Π½ΠΎ β€” наши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ дСталях рассказали Π½Π° нашСй сСкции Π½Π° РИВ++ 2017. На CodeFest 2017 (см. Π²ΠΈΠ΄Π΅ΠΎ), Π‘Π΅Ρ€Π³Π΅ΠΉ ΠžΡ€Π»ΠΎΠ² ΠΈ ΠœΠΈΡ…Π°ΠΈΠ» ΠŸΡ€ΠΎΠΊΠΎΠΏΡ‡ΡƒΠΊ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ объяснили, Π·Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ понадобился ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ микросСрвисам ΠΈ ΠΊΠ°ΠΊΡƒΡŽ Ρ€ΠΎΠ»ΡŒ здСсь Ρƒ нас ΠΈΠ³Ρ€Π°Π» Kubernetes. Ну Π° сСйчас ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ всё, Ρ‡Ρ‚ΠΎΠ±Ρ‹ свСсти ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ Ρ‚Π΅ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ присущи.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ Π½Π΅ Π΄Π΅Π»Π°Π»ΠΈ экосистСму, которая всСстороннС ΠΏΠΎΠΌΠΎΠ³Π°Π»Π° Π±Ρ‹ Π½Π°ΠΌ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ запускС микросСрвисов. ΠŸΡ€ΠΎΡΡ‚ΠΎ собирали Ρ‚ΠΎΠ»ΠΊΠΎΠ²Ρ‹Π΅ опСнсорсныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, запускали ΠΈΡ… Ρƒ сСбя ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с Π½ΠΈΠΌΠΈ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Ρ‚ΠΎΡ‚ Ρ…ΠΎΠ΄ΠΈΠ» Π² дСсяток мСст (Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ сСрвисы), послС Ρ‡Π΅Π³ΠΎ укрСплялся Π² стрСмлСнии ΠΏΠΈΠ»ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎ-старому, Π² ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π΅. Π—Π΅Π»Ρ‘Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π½Π° схСмах Π½ΠΈΠΆΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ, ΠΆΡ‘Π»Ρ‚Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ β€” автоматизация.

Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах

БСйчас Π² CLI-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ PaaS ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ создаётся Π½ΠΎΠ²Ρ‹ΠΉ сСрвис, Π° Π΅Ρ‰Ρ‘ двумя добавляСтся новая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ дСплоится Π² Stage.

Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах

Как ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ эпоху «микросСрвисной раздроблСнности»

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

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ микросСрвисная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π±Ρ‹Π»Π° эффСктивной, трСбуСтся Π½Π°Π»Π°Π΄ΠΈΡ‚ΡŒ мноТСство процСссов, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

β€’ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅;
β€’ трассировка запросов (Jaeger);
β€’ агрСгация ошибок (Sentry);
β€’ статусы, сообщСния, события ΠΈΠ· Kubernetes (Event Stream Processing);
β€’ race limit / circuit breaker (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Hystrix);
β€’ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ связности сСрвисов (ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Netramesh);
β€’ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ (Grafana);
β€’ сборка (TeamCity);
β€’ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ нотификация (Slack, email);
β€’ Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³ Π·Π°Π΄Π°Ρ‡; (Jira)
β€’ составлСниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ систСма Π½Π΅ ΡƒΡ‚Ρ€Π°Ρ‚ΠΈΠ»Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π²Π°Π»Π°ΡΡŒ эффСктивной, ΠΌΡ‹ пСрСосмыслили ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ микросСрвисов Π² Авито.

Как ΠΌΡ‹ управляСмся с микросСрвисами

ΠŸΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π΄ΠΈΠ½ΡƒΡŽ Β«ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΏΠ°Ρ€Ρ‚ΠΈΠΈΒ» срСди мноТСства микросСрвисов Авито ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚:

  • Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ инфраструктуры Π½Π° слои;
  • концСпция Platform as a Service (PaaS);
  • ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ всСго, Ρ‡Ρ‚ΠΎ с микросСрвисами происходит.

Π£Ρ€ΠΎΠ²Π½ΠΈ абстракции инфраструктуры Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Ρ‚Ρ€ΠΈ слоя. ΠŸΠΎΠΉΠ΄Ρ‘ΠΌ ΠΎΡ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡƒ.

A. Π’Π΅Ρ€Ρ…Π½ΠΈΠΉ β€” service mesh. ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΌΡ‹ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Istio, Π½ΠΎ оказалось, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ рСсурсов, Ρ‡Ρ‚ΠΎ Π½Π° Π½Π°ΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ… Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ чСрСсчур Π΄ΠΎΡ€ΠΎΠ³ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ АлСксандр Π›ΡƒΠΊΡŒΡΠ½Ρ‡Π΅Π½ΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» собствСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” Netramesh (доступно Π² Open Source), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ сСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ потрСбляСт Π² нСсколько Ρ€Π°Π· мСньшС рСсурсов, Ρ‡Π΅ΠΌ Istio (Π½ΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅ всё, Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ Istio).
B. Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ β€” Kubernetes. На Π½Ρ‘ΠΌ ΠΌΡ‹ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΈ эксплуатируСм микросСрвисы.
C. НиТний β€” bare metal. ΠœΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ±Π»Π°ΠΊΠ° ΠΈ ΡˆΡ‚ΡƒΠΊΠΈ Ρ‚ΠΈΠΏΠ° OpenStack, Π° сидим Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π½Π° bare metal.

ВсС слои ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ PaaS. А ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° эта, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… частСй.

I. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, управляСмыС Ρ‡Π΅Ρ€Π΅Π· CLI-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ. ИмСнно ΠΎΠ½Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ микросСрвис ΠΏΠΎ-ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ ΠΈ с ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠΌ усилий.

II. Π‘Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΎΡ€ с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ всСх инструмСнтов Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ‰ΠΈΠΉ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄.

III. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. БтыкуСтся с ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ Π½Π° Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ дСйствия. Благодаря Ρ‚Π°ΠΊΠΎΠΉ систСмС Π½ΠΈ ΠΎΠ΄Π½Π° Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ оказываСтся ΡƒΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π·Π°Π±Ρ‹Π» ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС таск Π² Jira. ΠœΡ‹ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ инструмСнт ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Atlas.

Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах

РСализация микросСрвисов Π² Авито Ρ‚Π°ΠΊΠΆΠ΅ вСдётся ΠΏΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΉ схСмС, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Π½ΠΈΠΌΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ выпуска.

Как устроСн стандартный ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ микросСрвиса

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° создания микросСрвиса выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

CLI-push β†’ Continuous Integration β†’ Bake β†’ Π”Π΅ΠΏΠ»ΠΎΠΉ β†’ Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ тСсты β†’ Canary-тСсты β†’ Squeeze Testing β†’ ΠŸΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ β†’ ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅.

ΠŸΡ€ΠΎΠΉΠ΄Ρ‘ΠΌΡΡ ΠΏΠΎ Π½Π΅ΠΉ Ρ€ΠΎΠ²Π½ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

CLI-push

β€’ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ микросСрвиса.
ΠœΡ‹ Π΄ΠΎΠ»Π³ΠΎ бились Π½Π°Π΄ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΄Π΅Π»Π°Ρ‚ΡŒ микросСрвисы. Π’ Ρ‚ΠΎΠΌ числС писали Π² Confluence ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ инструкции. Но схСмы мСнялись ΠΈ дополнялись. Π˜Ρ‚ΠΎΠ³ β€” Π±ΡƒΡ‚Ρ‹Π»ΠΎΡ‡Π½ΠΎΠ΅ Π³ΠΎΡ€Π»Ρ‹ΡˆΠΊΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π»ΠΎΡΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡƒΡ‚ΠΈ: Π½Π° запуск микросСрвисов ΡƒΡ…ΠΎΠ΄ΠΈΠ»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΊΡƒΠ΄Π° большС допустимого, ΠΈ всё Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΈ ΠΈΡ… создании часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΌΡ‹ соорудили ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ CLI-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ, которая Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ основныС шаги ΠΏΡ€ΠΈ создании микросСрвиса. ЀактичСски ΠΎΠ½Π° замСняСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ git push. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚.

β€” Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ сСрвис ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ β€” пошагово, Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Β«Π²ΠΈΠ·Π°Ρ€Π΄Π°Β». Π£ нас Π΅ΡΡ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ для основных языков программирования Π² бэкСндС Авито: PHP, Golang ΠΈ Python.

β€” По ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ срСду для локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ машинС β€” поднимаСтся Minikube, Helm-Ρ‡Π°Ρ€Ρ‚Ρ‹ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² локальном kubernetes’С.

β€” ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½Π΅Ρ‚ надобности Π·Π½Π°Ρ‚ΡŒ IP, Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΉ Π΅ΠΌΡƒ Π‘Π” β€” Ρ…ΠΎΡ‚ΡŒ локально, Ρ…ΠΎΡ‚ΡŒ Π² Stage, Ρ…ΠΎΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ развёртываСтся Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… сразу Π² отказоустойчивой ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ с балансировкой.

β€” Π‘Π°ΠΌΠ° выполняСт live-сборку. Допустим, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠ» Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² микросСрвисС Ρ‡Π΅Ρ€Π΅Π· свою IDE. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° Π²ΠΈΠ΄ΠΈΡ‚ измСнСния Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ исходя ΠΈΠ· Π½ΠΈΡ… пСрСсобираСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (для Golang) ΠΈ пСрСзапускаСт. Для PHP ΠΌΡ‹ просто пробрасываСм Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΊΡƒΠ±Π° ΠΈ Ρ‚Π°ΠΌ live-reload получаСтся Β«Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌΒ».

β€” Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ автотСсты. Π’ Π²ΠΈΠ΄Π΅ Π±ΠΎΠ»Π²Π°Π½ΠΎΠΊ, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Ρ… ΠΊ использованию.

β€’ Π”Π΅ΠΏΠ»ΠΎΠΉ микросСрвиса.

Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ микросСрвис Ρƒ нас Ρ€Π°Π½ΡŒΡˆΠ΅ Π±Ρ‹Π»ΠΎ слСгка ΠΌΡƒΡ‚ΠΎΡ€Π½ΠΎ. Π’ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ порядкС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ:

I. Dockerfile.

II. ΠšΠΎΠ½Ρ„ΠΈΠ³.
III. Helm-Ρ‡Π°Ρ€Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам ΠΏΠΎ сСбС Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя:

β€” сами Ρ‡Π°Ρ€Ρ‚Ρ‹;
β€” ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹;
β€” ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ значСния с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Ρ€Π°Π·Π½Ρ‹Ρ… срСд.

ΠœΡ‹ избавились ΠΎΡ‚ Π±ΠΎΠ»ΠΈ с ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ манифСстов Kubernetes, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ автоматичСски. Но Π³Π»Π°Π²Π½ΠΎΠ΅, упростили Π΄ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ. ΠžΡ‚Π½Ρ‹Π½Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Dockerfile, Π° вСсь ΠΊΠΎΠ½Ρ„ΠΈΠ³ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ прописываСт Π² ΠΎΠ΄Π½ΠΎΠΌ-СдинствСнном ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ app.toml.

Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах

Π”Π° ΠΈ Π² самом app.toml сСйчас Π΄Π΅Π» Π½Π° ΠΌΠΈΠ½ΡƒΡ‚Ρƒ. ΠŸΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ, Π³Π΄Π΅ сколько ΠΊΠΎΠΏΠΈΠΉ сСрвиса ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ (Π½Π° dev-сСрвСрС, Π½Π° staging, Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅), ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ зависимости. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° строку size = «small» Π² Π±Π»ΠΎΠΊΠ΅ [engine]. Π­Ρ‚ΠΎ Π»ΠΈΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ сСрвису Ρ‡Π΅Ρ€Π΅Π· Kubernetes.

Π”Π°Π»ΡŒΡˆΠ΅ Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Helm-Ρ‡Π°Ρ€Ρ‚Ρ‹ ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ.

β€’ Базовая валидация. Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠΆΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.
НуТно ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ:
β€” Π΅ΡΡ‚ΡŒ Π»ΠΈ Dockerfile;
β€” Π΅ΡΡ‚ΡŒ Π»ΠΈ app.toml;
β€” имССтся Π»ΠΈ докумСнтация;
β€” Π² порядкС Π»ΠΈ зависимости;
β€” Π·Π°Π΄Π°Π½Ρ‹ Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π°Π»Π΅Ρ€Ρ‚ΠΎΠ².
К послСднСму ΠΏΡƒΠ½ΠΊΡ‚Ρƒ: Π²Π»Π°Π΄Π΅Π»Π΅Ρ† сСрвиса сам ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ.

β€’ ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.
Π”ΠΎ сих ΠΏΠΎΡ€ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ΅ мСсто. Π’Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ самоС ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅, Π½ΠΎ вмСстС с Ρ‚Π΅ΠΌ ΠΈ Ρ€Π΅ΠΊΠΎΡ€Π΄Π½ΠΎ «часто Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅Β», Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΈ уязвимоС Π·Π²Π΅Π½ΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ.
НСобходимо, Ρ‡Ρ‚ΠΎΠ±Ρ‹ докумСнтация Π±Ρ‹Π»Π° ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ микросСрвис. Входят Π² Π½Π΅Ρ‘ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ.

I. ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС сСрвиса. Π‘ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ нСсколько ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½.

II. Бсылка Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π±Π΅Π³Π»ΠΎΠΌ взглядС Π½Π° Π½Π΅Ρ‘ Π»Π΅Π³ΠΊΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Ρ‹ Redis для ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ основноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² пСрсистСнтном Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’ Авито ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ это ссылка Π½Π° Confluence.

III. Runbook. ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π³Π°ΠΉΠ΄ ΠΏΠΎ запуску сСрвиса ΠΈ тонкостям обращСния с Π½ΠΈΠΌ.

IV. FAQ, Π³Π΄Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π±Ρ‹ ΠΏΡ€Π΅Π΄Π²ΠΎΡΡ…ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с сСрвисом.

V. ОписаниС endpoints для API. Если Π²Π΄Ρ€ΡƒΠ³ Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ назначСния, Ρ€Π°ΡΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π·Π° это ΠΏΠΎΡ‡Ρ‚ΠΈ навСрняка Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, Ρ‡ΡŒΠΈ микросСрвисы связаны с вашим. БСйчас Ρƒ нас для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Swagger ΠΈ нашС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ brief.

VI. Labels. Или ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, структурному ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ относится сСрвис. ΠŸΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ быстро ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ ΠΏΠΈΠ»ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ нСдСлю Π½Π°Π·Π°Π΄ Π²Ρ‹ΠΊΠ°Ρ‚ΠΈΠ»ΠΈ для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ бизнСс-ΡŽΠ½ΠΈΡ‚Π° ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ.

VII. Π’Π»Π°Π΄Π΅Π»Π΅Ρ† ΠΈΠ»ΠΈ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρ‹ сСрвиса. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π΅Π³ΠΎ β€” ΠΈΠ»ΠΈ ΠΈΡ… β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PaaS получаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ автоматичСски, Π½ΠΎ для страховки ΠΌΡ‹ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

НаконСц, Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° β€” ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π΅Π²ΡŒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с code review.

Continuous Integration

  • ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π².
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Π² TeamCity.
  • ВыставлСниС ΠΏΡ€Π°Π².
  • Поиск Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² сСрвиса. Π’ΡƒΡ‚ гибридная схСма β€” ручная ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ минимальная Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΎΡ‚ PaaS. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ автоматичСская схСма Π΄Π°Π΅Ρ‚ сбои ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ сСрвисов Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сСрвиса уволился.
  • РСгистрация сСрвиса Π² Atlas (см. Π²Ρ‹ΡˆΠ΅). Π‘ΠΎ всСми Π΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°ΠΌΠΈ ΠΈ зависимостями.
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Π½Π΅Ρ‚ Π»ΠΈ срСди Π½ΠΈΡ… ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасных. НапримСр, Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… всплываСт alter table ΠΈΠ»ΠΈ Π΅Ρ‰Ρ‘ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ способноС Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ схСмы Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСрсиями сСрвиса. Π’ΠΎΠ³Π΄Π° миграция Π½Π΅ выполняСтся, Π° ставится Π² подписку β€” PaaS Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΡΠΈΠ³Π½Π°Π»ΠΈΡ‚ΡŒ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρƒ сСрвиса ΠΊΠΎΠ³Π΄Π° станСт бСзопасно Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Bake

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ стадия β€” ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° сСрвисов ΠΏΠ΅Ρ€Π΅Π΄ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ.

  • Π‘Π±ΠΎΡ€ΠΊΠ° прилоТСния. По классикС β€” Π² Docker-ΠΎΠ±Ρ€Π°Π·.
  • ГСнСрация Helm-Ρ‡Π°Ρ€Ρ‚ΠΎΠ² для самого сСрвиса ΠΈ связанных с Π½ΠΈΠΌ рСсурсов. Π’ Ρ‚ΠΎΠΌ числС для Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ кэша. Π‘ΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ автоматичСски Π² соотвСтствии с Ρ‚Π΅ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠΌ app.toml, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» сформирован Π½Π° стадии CLI-push.
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΎΠ² Π°Π΄ΠΌΠΈΠ½Π°ΠΌ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚ΠΎΠ² (ΠΊΠΎΠ³Π΄Π° это трСбуСтся).
  • ΠŸΡ€ΠΎΠ³ΠΎΠ½ ΡŽΠ½ΠΈΡ‚-тСстов ΠΈ подсчёт code coverage. Если ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ значСния, Ρ‚ΠΎ, скорСС всСго, дальшС β€” Π½Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ β€” сСрвис Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚. Если ΠΎΠ½ΠΎ Π½Π° Π³Ρ€Π°Π½ΠΈ допустимого, Ρ‚ΠΎ сСрвису Π±ΡƒΠ΄Π΅Ρ‚ присвоСн Β«ΠΏΠ΅ΡΡΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΒ» коэффициСнт: Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ отсутствии ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ показатСля с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ прогрСсса ΠΏΠΎ части тСстов Π½Π΅Ρ‚ (ΠΈ Π½Π°Π΄ΠΎ Π±Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ с этим ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ).
  • Π£Ρ‡Ρ‘Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ памяти ΠΈ CPU. Π’ основном микросСрвисы ΠΌΡ‹ пишСм Π½Π° Golang ΠΈ запускаСм ΠΈΡ… Π² Kubernetes. ΠžΡ‚ΡΡŽΠ΄Π° ΠΎΠ΄Π½Π° Ρ‚ΠΎΠ½ΠΊΠΎΡΡ‚ΡŒ, связанная с ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ языка Golang: ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ запускС Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ всС ядра Π½Π° машинС, Ссли Π² явном Π²ΠΈΠ΄Π΅ Π½Π΅ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ GOMAXPROCS ΠΈ ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС запускаСтся нСсколько Ρ‚Π°ΠΊΠΈΡ… сСрвисов, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° рСсурсы, мСшая Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ. На Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ… Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ мСняСтся врСмя выполнСния, Ссли Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π³ΠΎΠ½ΠΊΠΈ Π·Π° рСсурсы. (Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π»Π΅ΠΆΠ°Ρ‚ здСсь).

Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах

ВрСмя исполнСния, мСньшС β€” Π»ΡƒΡ‡ΡˆΠ΅. ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ: 643ms, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ: 42ms. Π€ΠΎΡ‚ΠΎ кликабСльно.

Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах

ВрСмя Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, мСньшС β€” Π»ΡƒΡ‡ΡˆΠ΅. ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ: 14091 ns, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ: 151 ns. Π€ΠΎΡ‚ΠΎ кликабСльно.

На этапС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ сборки ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ явно ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ automaxprocs ΠΎΡ‚ рСбят ΠΈΠ· Uber.

Π”Π΅ΠΏΠ»ΠΎΠΉ

β€’ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΉ. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ сборки сСрвиса Π² Π½Π°ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ срСды, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:
β€” API endpoints.
β€” БоотвСтствиС ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² API endpoints схСмС.
β€” Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π»ΠΎΠ³ΠΎΠ².
β€” ВыставлСниС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΏΡ€ΠΈ запросах ΠΊ сСрвису (сСйчас это Π΄Π΅Π»Π°Π΅Ρ‚ netramesh)
β€” ВыставлСниС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ сообщСний Π² ΡˆΠΈΠ½Ρƒ (event bus). Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для отслСТивания связности сСрвисов Ρ‡Π΅Ρ€Π΅Π· ΡˆΠΈΠ½Ρƒ. Π’ ΡˆΠΈΠ½Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ сСрвисов (Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ), Ρ‚Π°ΠΊ ΠΈ бизнСс-Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ сСрвисов ΡƒΡΠΈΠ»ΠΈΠ²Π°ΡŽΡ‚ (Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΎ!). И Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° эта ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ становится ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΡ‚ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΡˆΠΈΠ½Ρƒ, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ сСрвисы.

Пока ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΉ Π² Авито Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΈΡ… ΠΏΡƒΠ» Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ. Π§Π΅ΠΌ большС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… соглашСний Π² Π²ΠΈΠ΄Π΅, понятном ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ микросСрвисами.

БинтСтичСскиС тСсты

β€’ ВСстированиС Π² Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π΅. Для Π½Π΅Π³ΠΎ ΠΌΡ‹ сСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ опСнсорсный Hoverfly.io. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠ½ записываСт Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сСрвис, Π·Π°Ρ‚Π΅ΠΌ β€” ΠΊΠ°ΠΊ Ρ€Π°Π· Π² Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π΅ β€” Π΅Ρ‘ эмулируСт.

β€’ НагрузочноС тСстированиС. ВсС сСрвисы ΠΌΡ‹ стараСмся привСсти ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. И всС вСрсии ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвиса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Ρ‚ΡŒΡΡ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠΌΡƒ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ β€” Ρ‚Π°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСрвиса ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями этого ΠΆΠ΅ сСрвиса. Если послС Π°ΠΏΠ΄Π΅ΠΉΡ‚Π° сСрвиса Π΅Π³ΠΎ performance ΡƒΠΏΠ°Π» Π² ΠΏΠΎΠ»Ρ‚ΠΎΡ€Π° Ρ€Π°Π·Π°, это Ρ‡Ρ‘Ρ‚ΠΊΠΈΠΉ сигнал для Π΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π²: Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄ ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ.
ΠžΡ‚ собранных Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ отталкиваСмся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ auto scaling ΠΈ, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, насколько сСрвис поддаётся ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

ΠŸΡ€ΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠΌ тСстировании ΠΌΡ‹ провСряСм, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π»ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов выставлСнным ограничСниям. И заостряСм Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π½Π° экстрСмумах.

a) Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΎΠ±Ρ‰ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ.
β€” Блишком ΠΌΠ°Π»Π° β€” скорСС всСго Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π²Π΄Ρ€ΡƒΠ³ ΡƒΠΏΠ°Π»Π° Π² нСсколько Ρ€Π°Π·.
β€” Блишком Π²Π΅Π»ΠΈΠΊΠ° β€” трСбуСтся оптимизация.

b) Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° отсСчку ΠΏΠΎ RPS.
Π’ΡƒΡ‚ смотрим ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΈ ΠΎΠ±Ρ‰Π΅Π΅ количСство. НапримСр, Ссли сСрвис Π²Ρ‹Π΄Π°Π΅Ρ‚ 100 rps β€” Ρ‚ΠΎ ΠΎΠ½ Π»ΠΈΠ±ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ написан, Π»ΠΈΠ±ΠΎ это Π΅Π³ΠΎ спСцифика, Π½ΠΎ Π² любом случаС это ΠΏΠΎΠ²ΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° сСрвис.
Если ΠΆΠ΅ RPS Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π±Π°Π³ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΈΠ· endpoint-ΠΎΠ² пСрСстал Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, Π° просто срабатываСт ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ return true;

Canary-тСсты

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Ρ‹ синтСтичСскиС тСсты, ΠΌΡ‹ ΠΎΠ±ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ микросСрвиса Π½Π° ΠΌΠ°Π»ΠΎΠΌ количСствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. НачинаСм остороТно, с ΠΌΠΈΠ·Π΅Ρ€Π½ΠΎΠΉ Π΄ΠΎΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ сСрвиса β€” мСньшС 0,1%. На этом этапС ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅ Π±Ρ‹Π»ΠΈ Π·Π°Π²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ тСхничСскиС ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ максимально быстро ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² сСрвисС. МинимальноС врСмя canary-тСста β€” 5 ΠΌΠΈΠ½ΡƒΡ‚, основноС β€” 2 часа. Для слоТных сСрвисов выставляСм врСмя Π² Ρ€ΡƒΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.
АнализируСм:
β€” ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, спСцифичСскиС для языка, Π² частности, Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ php-fpm;
β€” ошибки Π² Sentry;
β€” статусы ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²;
β€” врСмя ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² (response time), Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΈ срСднСС;
β€” latency;
β€” ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅;
β€” ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.

Squeeze Testing

Squeeze Testing Π΅Ρ‰Ρ‘ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ тСстированиСм Ρ‡Π΅Ρ€Π΅Π· Β«Π²Ρ‹Π΄Π°Π²Π»ΠΈΠ²Π°Π½ΠΈΠ΅Β». НазваниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ Π²Π²Π΅Π»ΠΈ Π² Netflix. Π‘ΡƒΡ‚ΡŒ Π΅Ρ‘ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сначала ΠΌΡ‹ заполняСм Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ ΠΎΠ΄ΠΈΠ½ инстанс Π΄ΠΎ состояния ΠΎΡ‚ΠΊΠ°Π·Π° ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ устанавливаСм Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π». Π”Π°Π»ΡŒΡˆΠ΅ добавляСм Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ инстанс ΠΈ Π½Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ эту ΠΏΠ°Ρ€ΠΎΡ‡ΠΊΡƒ β€” снова Π΄ΠΎ максимума; ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠ»ΠΎΠΊ ΠΈ Π΄Π΅Π»ΡŒΡ‚Ρƒ с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ «сквизом». И Ρ‚Π°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ инстансу Π·Π° шаг ΠΈ высчитываСм Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π² измСнСниях.
Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ тСстам Ρ‡Π΅Ρ€Π΅Π· Β«Π²Ρ‹Π΄Π°Π²Π»ΠΈΠ²Π°Π½ΠΈΠ΅Β» Ρ‚ΠΎΠΆΠ΅ ΡΡ‚Π΅ΠΊΠ°ΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ‰ΡƒΡŽ Π±Π°Π·Ρƒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, Π³Π΄Π΅ ΠΌΡ‹ Π»ΠΈΠ±ΠΎ ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°Π΅ΠΌ ΠΈΠΌΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ искусствСнной Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π»ΠΈΠ±ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ замСняСм ΠΈΠΌΠΈ «синтСтику».

ΠŸΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½

β€’ ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Выкатывая сСрвис Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½, ΠΌΡ‹ отслСТиваСм, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ этом Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ CPU, ΠΏΠΎ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ, нСэффСктивно. Auto scaling с Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈΠ½Π³ΠΎΠΌ RPS Π² чистом Π²ΠΈΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ лишь для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… сСрвисов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ½Π»Π°ΠΉΠ½-стриминга. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ смотрим Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° спСцифичСскиС для прилоТСния ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ:
β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ CPU ΠΈ RAM,
β€” количСство запросов Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ,
β€” врСмя ΠΎΡ‚Π²Π΅Ρ‚Π°,
β€” ΠΏΡ€ΠΎΠ³Π½ΠΎΠ· Π½Π° основании Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹Ρ… историчСских Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ сСрвиса Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ зависимости, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сСрвис Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ скСйлим, Π° Ρ‚Π΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ обращаСтся, ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡƒΡŽ для всСго ΠΏΡƒΠ»Π° сСрвисов Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, ΠΌΡ‹ смотрим Π½Π° историчСскиС Π΄Π°Π½Π½Ρ‹Π΅ «блиТайшСго» зависимого сСрвиса (ΠΏΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ CPU ΠΈ RAM Π²ΠΊΡƒΠΏΠ΅ с app-specific metrics) ΠΈ сопоставляСм ΠΈΡ… с историчСскими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ сСрвиса, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ ΠΏΠΎ всСй Β«Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ зависимостСй», свСрху Π΄ΠΎΠ½ΠΈΠ·Ρƒ.

ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ микросСрвис Π²Π²Π΅Π΄Ρ‘Π½ Π² строй, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π²Π΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹.

Π’ΠΎΡ‚ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ситуации, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹.
β€” ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасныС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ.
β€” Π‘Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ обновлСния бСзопасности.
β€” Π‘Π°ΠΌ сСрвис Π΄Π°Π²Π½ΠΎ Π½Π΅ обновлялся.
β€” ΠžΡ‰ΡƒΡ‚ΠΈΠΌΠΎ снизилась Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° сСрвис ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ выходят Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π½ΠΎΡ€ΠΌΡ‹.
β€” БСрвис пСрСстал ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΌ трСбованиям ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

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

Π”Π°ΡˆΠ±ΠΎΡ€Π΄

Если совсСм ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ β€” ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΠ»ΡŒΡ‚ всСго нашСго PaaS.

  • Единая Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ сСрвисС, с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ тСстами, количСствС Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠ², количСствС ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-ΠΊΠΎΠΏΠΈΠΉ, вСрсий ΠΈ Ρ‚. Π΄.
  • БрСдство Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сСрвисам ΠΈ labels (ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°ΠΌ принадлСТности ΠΊ бизнСс-ΡŽΠ½ΠΈΡ‚Π°ΠΌ, ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Ρ‚. Π΄.)
  • БрСдство ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с инфраструктурными инструмСнтами для трассировки, логирования, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.
  • Единая Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ сСрвисам.
  • Единая Ρ‚ΠΎΡ‡ΠΊΠ° ΠΎΠ±Π·ΠΎΡ€Π° всСх событий ΠΏΠΎ сСрвисам.

Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах
Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах
Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах
Π§Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ микросСрвисах

Π˜Ρ‚ΠΎΠ³ΠΎ

Π”ΠΎ внСдрСния PaaS Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠ³ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ нСсколько нСдСль Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π²ΠΎ всСх инструмСнтах, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для запуска микросСрвиса Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½: Kubernetes, Helm, β€” Π² Π½Π°ΡˆΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… особСнностях TeamCity, настройкС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π°ΠΌ ΠΈ кэшам Π² отказоустойчивом Π²ΠΈΠ΄Π΅ ΠΈ Ρ‚. Π΄. БСйчас Π½Π° это ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠ°Ρ€Π° часов β€” ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ quickstart ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сам сСрвис.

Π― Π΄Π΅Π»Π°Π» Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π° эту Ρ‚Π΅ΠΌΡƒ для HighLoad++ 2018, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Бонус-Ρ‚Ρ€Π΅ΠΊ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π» Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°

ΠœΡ‹ Π² Авито ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅ΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ‚Ρ€Ρ‘Ρ…Π΄Π½Π΅Π²Π½Ρ‹ΠΉ Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚ ΠšΡ€ΠΈΡΠ° Ричардсона, экспСрта ΠΏΠΎ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅. Π₯ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ участия Π² Π½Ρ‘ΠΌ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΈΠ· Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ этого поста. Π—Π΄Π΅ΡΡŒ Π²Ρ‹Π»ΠΎΠΆΠ΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³Π°.

Π’Ρ€Π΅Π½ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚ с 5 ΠΏΠΎ 7 августа Π² МосквС. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π΄Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ заняты. ОбСд ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Π² нашСм офисС, Π° Π΄ΠΎΡ€ΠΎΠ³Ρƒ ΠΈ ΠΏΡ€ΠΎΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ участник ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ сам.

ΠŸΠΎΠ΄Π°Ρ‚ΡŒ заявку Π½Π° участиС ΠΌΠΎΠΆΠ½ΠΎ Π² этой Π³ΡƒΠ³Π»-Ρ„ΠΎΡ€ΠΌΠ΅. ΠžΡ‚ вас β€” ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³ ΠΈ информация, ΠΊΠ°ΠΊ с Π²Π°ΠΌΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ. ΠžΡ‚Π²Π΅Ρ‡Π°ΠΉΡ‚Π΅ Π½Π° английском, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ участника, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π½Π° Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³, ΠšΡ€ΠΈΡ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ сам.
ΠœΡ‹ объявим имя участника Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³Π° Π°ΠΏΠ΄Π΅ΠΉΡ‚ΠΎΠΌ ΠΊ этому посту ΠΈ Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях Авито для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² (AvitoTech Π² ЀСйсбукС, Π’ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅, Π’Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π΅) Π½Π΅ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ 19 июля.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

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