Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» статСй ΠΎΡ‚ тСхнологичСского СвангСлиста ΠΈΠ· AWS β€” Adrian Hornsby, β€” задавшСгося Ρ†Π΅Π»ΡŒΡŽ просто ΠΈ понятно ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ экспСримСнтов, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹Ρ… ΡΠΌΡΠ³Ρ‡ΠΈΡ‚ΡŒ послСдствия сбоСв Π² ИВ-систСмах.

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2

«Если ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ ΠΏΠ»Π°Π½Π°, Ρ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΡˆΡŒ ΠΏΡ€ΠΎΠ²Π°Π»Β». β€” Π‘Π΅Π½Π΄ΠΆΠ°ΠΌΠΈΠ½ Π€Ρ€Π°Π½ΠΊΠ»ΠΈΠ½

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части Π΄Π°Π½Π½ΠΎΠΉ сСрии статСй я прСдставил ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ chaos engineering’Π° ΠΈ объяснил, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ·ΡŠΡΠ½Ρ‹ Π² систСмС Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ сбоям production. Π’Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΎ рассказано ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ хаос-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³ способствуСт ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π½Ρ‹ΠΌ измСнСниям Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части я ΠΏΠΎΠΎΠ±Π΅Ρ‰Π°Π» Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ± «инструмСнтах ΠΈ способах внСдрСния сбоСв Π² систСмы». Π£Π²Ρ‹, Ρƒ ΠΌΠΎΠ΅ΠΉ Π³ΠΎΠ»ΠΎΠ²Ρ‹ Π½Π° сСй счСт имСлись собствСнныС ΠΏΠ»Π°Π½Ρ‹, ΠΈ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° самый популярный вопрос, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΈ людСй, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… Π·Π°Π½ΡΡ‚ΡŒΡΡ хаос-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³ΠΎΠΌ: Π§Ρ‚ΠΎ Π»ΠΎΠΌΠ°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ?

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ вопрос! Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, эту ΠΏΠ°Π½Π΄Ρƒ ΠΎΠ½, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π½Π΅ особо бСспокоит…

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2
НС ΡΠ²ΡΠ·Ρ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ с хаос-ΠΏΠ°Π½Π΄ΠΎΠΉ!

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚: Π¦Π΅Π»ΡŒΡ‚Π΅ΡΡŒ Π² критичСскиС сСрвисы Π½Π° ΠΏΡƒΡ‚ΠΈ запроса.

Π”Π»ΠΈΠ½Π½Ρ‹ΠΉ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Ρ€Π°Π·ΡƒΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚: Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, с Ρ‡Π΅Π³ΠΎ слСдуСт Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ экспСримСнты с хаосом, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€ΠΈ области:

  1. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ сбоСв ΠΈ выявитС закономСрности;
  2. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ с критичСскими зависимостями;
  3. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ‚. Π½. эффСктом свСрхувСрСнности.

Π—Π°Π±Π°Π²Π½ΠΎ, Π½ΠΎ эту Ρ‡Π°ΡΡ‚ΡŒ с Ρ‚Π΅ΠΌ ΠΆΠ΅ успСхом ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ Β«ΠŸΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ ΠΊ самопознанию ΠΈ ΠΏΡ€ΠΎΡΠ²Π΅Ρ‰Π΅Π½ΠΈΡŽΒ». Π’ Π½Π΅ΠΉ ΠΆΠ΅ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ Β«ΠΈΠ³Ρ€Π°Ρ‚ΡŒΒ» с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΈΠΊΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ инструмСнтами.

1. ΠžΡ‚Π²Π΅Ρ‚ Π»Π΅ΠΆΠΈΡ‚ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ

Если ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ части я Π²Π²Π΅Π» понятиС Correction-of-Errors (COE) β€” ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ наши ΠΏΡ€ΠΎΠΌΠ°Ρ…ΠΈ: ΠΏΡ€ΠΎΠΌΠ°Ρ…ΠΈ Π² Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, процСссС ΠΈΠ»ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ(-Ρ‹) ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, с этого ΠΈ слСдуСт Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ.

Β«Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ настоящСС, Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅Β». β€” ΠšΠ°Ρ€Π» Π‘Π°Π³Π°Π½

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ сбоСв, ΠΏΡ€ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‚Π΅Π³ΠΈ Π² Π‘ΠžΠ• ΠΈΠ»ΠΈ postmortem’Π°Ρ… ΠΈ классифицируйтС ΠΈΡ…. ВыявитС ΠΎΠ±Ρ‰ΠΈΠ΅ закономСрности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто приводят ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ, ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π‘ΠžΠ• Π·Π°Π΄Π°ΠΉΡ‚Π΅ сСбС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ вопрос:

«МоТно Π»ΠΈ это Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ внСдрСния нСисправности?Β»

Π― вспоминаю ΠΎΠ΄ΠΈΠ½ сбой Π² самом Π½Π°Ρ‡Π°Π»Π΅ ΠΌΠΎΠ΅ΠΉ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρ‹. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ, Ссли Π±Ρ‹ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ ΠΏΠ°Ρ€Ρƒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… хаос-экспСримСнтов:

Π’ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… условиях экзСмпляры backend’Π° ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π½Π° health check’ΠΈ ΠΎΡ‚ балансировщика Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (ELB). ELB ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эти ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ для пСрСнаправлСния запросов Π½Π° Β«Π·Π΄ΠΎΡ€ΠΎΠ²Ρ‹Π΅Β» экзСмпляры. Когда оказываСтся, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΈΠΉ экзСмпляр Β«Π½Π΅Π·Π΄ΠΎΡ€ΠΎΠ²Β», ELB пСрСстаСт Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ запросы. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹, послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ, объСм Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° вырос, ΠΈ backend’Ρ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° health check’ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти health check’ΠΈ Π±Ρ‹Π»ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° состояния зависимостСй.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя всС Π±Ρ‹Π»ΠΎ Π² порядкС.

Π—Π°Ρ‚Π΅ΠΌ, ΡƒΠΆΠ΅ Π½Π°Ρ…ΠΎΠ΄ΡΡΡŒ Π² довольно напряТСнных условиях, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· экзСмпляров приступил ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ нСкритичСской, рСгулярной cron-Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ· разряда ETL. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ высокого Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ cronjob’Π° подстСгнула Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ЦПУ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° 100%. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° процСссора Π΅Ρ‰Π΅ сильнСС Π·Π°ΠΌΠ΅Π΄Π»ΠΈΠ»Π° ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° health check’ΠΈ β€” Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ ELB Ρ€Π΅ΡˆΠΈΠ», Ρ‡Ρ‚ΠΎ экзСмпляр испытываСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² Ρ€Π°Π±ΠΎΡ‚Π΅. Как ΠΈ оТидалось, балансировщик пСрСстал Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° Π½Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ экзСмпляры Π² Π³Ρ€ΡƒΠΏΠΏΠ΅.

Π’Π½Π΅Π·Π°ΠΏΠ½ΠΎ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ экзСмпляры Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ²Π°Ρ‚ΡŒ health check.

Запуск Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ установки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π» Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ELB Π½Π° ΠΈΡ… ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ β€” ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ β€” Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ вскорС вСсь процСсс достиг критичСской ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΏΠ°Π»ΠΎ.

Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ навсСгда уяснили ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

  • Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ПО ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра Π΄ΠΎΠ»Π³ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΌΡƒ (immutable) ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ ΠΈ Golden AMI.
  • Π’ слоТных ситуациях ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° health-check’ΠΈ ELB Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ β€” мСньшС всСго Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Тизнь ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΌΡΡ экзСмплярам.
  • Π₯ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ локальноС ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ health-check’ΠΎΠ² (Π΄Π°ΠΆΠ΅ Π½Π° нСсколько сСкунд).
  • Π’ слоТной ситуации Π½Π΅ запускайтС cron-Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ нСкритичСскиС процСссы β€” Π±Π΅Ρ€Π΅Π³ΠΈΡ‚Π΅ рСсурсы для самых Π²Π°ΠΆΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.
  • ΠŸΡ€ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ мСньшиС ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ экзСмпляры. Π“Ρ€ΡƒΠΏΠΏΠ° ΠΈΠ· 10 ΠΌΠ°Π»Ρ‹Ρ… экзСмпляров Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΈΠ· 4 Π±ΠΎΠ»ΡŒΡˆΠΈΡ…; Ссли ΠΎΠ΄ΠΈΠ½ экзСмпляр ΡƒΠΏΠ°Π΄Π΅Ρ‚, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС 10% Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° распрСдСлятся ΠΏΠΎ 9 Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” 25% Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΠΎ Ρ‚Ρ€Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ.

Π˜Ρ‚Π°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ это Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ β€” ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ внСдрСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹?

Π”Π°, ΠΈ нСсколькими способами.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠ΅ΠΉ высокой Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ CPU с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΈΡ… инструмСнтов, ΠΊΠ°ΠΊ stress-ng ΠΈΠ»ΠΈ cpuburn:

❯ stress-ng --matrix 1 -t 60s

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2
stress-ng

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ экзСмпляра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ wrk ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚:

❯ wrk -t12 -c400 -d20s http://127.0.0.1/api/health

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2

ЭкспСримСнты ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простыС, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΏΠ»ΠΎΡ…ΡƒΡŽ ΠΏΠΈΡ‰Ρƒ для Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠΉ Π±Π΅Π· нСобходимости ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ стрСсс Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ сбоя.

Однако Π½Π΅ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° достигнутом. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ воспроизвСсти сбой Π² тСстовой срСдС ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свой ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос «МоТно Π»ΠΈ это Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ β€” ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ внСдрСния нСисправности?Β». Π­Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈ хаос-экспСримСнт Π²Π½ΡƒΡ‚Ρ€ΠΈ хаос-экспСримСнта для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ начиная со сбоя.

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2
Π­Ρ‚ΠΎ Π±Ρ‹Π» сон, ΠΈΠ»ΠΈ всС ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π½Π° самом Π΄Π΅Π»Π΅?

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΠ·ΡƒΡ‡Π°ΠΉΡ‚Π΅ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ сбоСв, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ COE, Ρ‚Π΅Π³ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ классифицируйтС ΠΈΡ… ΠΏΠΎ «радиусу пораТСния» β€” ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΏΠΎ числу Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², β€” Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡ‰ΠΈΡ‚Π΅ закономСрности. Π‘ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅ сСбя, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ это Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ внСдрСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ свой ΠΎΡ‚Π²Π΅Ρ‚.

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° самыС распространСнныС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ с наибольшим радиусом пораТСния.

2. ΠŸΠΎΡΡ‚Ρ€ΠΎΠΉΡ‚Π΅ ΠΊΠ°Ρ€Ρ‚Ρƒ зависимостСй

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΌΠΈΠ½ΡƒΡ‚ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ своСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π•ΡΡ‚ΡŒ Π»ΠΈ чСткая ΠΊΠ°Ρ€Ρ‚Π° Π΅Π³ΠΎ зависимостСй? Π—Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, ΠΊΠ°ΠΊΠΎΠ΅ влияниС ΠΎΠ½ΠΈ ΠΎΠΊΠ°ΠΆΡƒΡ‚ Π² случаС сбоя?

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

ВыявлСниС ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ зависимостСй ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ «построСниСм ΠΊΠ°Ρ€Ρ‚Ρ‹ зависимостСй» (dependency mapping). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΎ проводится для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ ΠΊΠΎΠ΄Π° с использованиСм инструмСнтов для профилирования ΠΊΠΎΠ΄Π° (code profiling) ΠΈ инструмСнтирования (instrumentation). Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ построСниС ΠΊΠ°Ρ€Ρ‚Ρ‹, отслСТивая сСтСвой Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

ΠŸΡ€ΠΈ этом Π½Π΅ всС зависимости ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ (Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ сильнСС услоТняСт процСсс). НСкоторыС критичСски Π²Π°ΠΆΠ½Ρ‹, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” второстСпСнны (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ тСорСтичСски, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сбои часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с зависимостями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Π°Π»ΠΈΡΡŒ нСкритичСскими).

Π‘Π΅Π· критичСских зависимости сСрвис Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. НСкритичСскиС зависимости Β«Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹Β» ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ влияния Π½Π° сСрвис Π² случаС своСго падСния. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с зависимостями, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ прСдставлСниС ΠΎΠ± API, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, Ρ‡Π΅ΠΌ каТСтся β€” ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

НачнитС с ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх API. Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ самыС Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ ΠΈ критичСскиС. Π’ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ зависимости ΠΈΠ· рСпозитория ΠΊΠΎΠ΄Π°, ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ Π»ΠΎΠ³ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Π·Π°Ρ‚Π΅ΠΌ просмотритС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли ΠΎΠ½Π° сущСствуСт β€” ΠΈΠ½Π°Ρ‡Π΅ Ρƒ вас Π΅Ρ‰Π΅ большиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹). ЗадСйствуйтС инструмСнты для профилирования ΠΈ трассировки, ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠΉΡ‚Π΅ внСшниС Π²Ρ‹Π·ΠΎΠ²Ρ‹.

МоТно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π²Ρ€ΠΎΠ΄Π΅ netstat β€” ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список всСх сСтСвых ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сокСтов) Π² систСмС. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти всС Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ соСдинСния, Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅:

❯ netstat -a | more 

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2

Π’ AWS ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° (flow logs) VPC β€” ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± IP-Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ΅, ΠΈΠ΄ΡƒΡ‰Π΅ΠΌ ΠΊ сСтСвым интСрфСйсам Π² VPC ΠΈΠ»ΠΈ ΠΎΡ‚ Π½ΠΈΡ…. Π’Π°ΠΊΠΈΠ΅ Π»ΠΎΠ³ΠΈ способны ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с поиском ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° вопрос, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π΅ достигаСт экзСмпляра.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AWS X-Ray. X-Ray позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ, Β«ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉΒ» (end-to-end) ΠΎΠ±Π·ΠΎΡ€ запросов ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… продвиТСния ΠΏΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ строит ΠΊΠ°Ρ€Ρ‚Ρƒ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² прилоТСния. ΠžΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ссли Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ зависимости.

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2
Консоль AWS X-Ray

ΠšΠ°Ρ€Ρ‚Π° сСтСвых зависимостСй β€” лишь частичноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π”Π°, ΠΎΠ½Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΊΠ°ΠΊΠΈΠΌ связываСтся, Π½ΠΎ вСдь Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ зависимости.

МногиС прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ DNS для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ зависимостям, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ обнаруТСния сСрвисов ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ТСстко прописанныС IP-адрСса Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² /etc/hosts).

НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ DNS blackhole с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ iptables ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ сломаСтся. Для этого Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

❯ iptables -I OUTPUT -p udp --dport 53 -j REJECT -m comment --comment "Reject DNS"

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2
«ЧСрная Π΄Ρ‹Ρ€Π°Β» DNS

Если Π² /etc/hosts ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ IP-адрСса, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ (Π΄Π°, ΠΊ соТалСнию, ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚), Π½Π° Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΡƒ снова ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ iptables. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ 8.8.8.8 ΠΈ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ это адрСс общСдоступного DNS-сСрвСра Google. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ iptables ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ входящий ΠΈ исходящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΊ этому адрСсу с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

❯ iptables -A INPUT -s 8.8.8.8 -j DROP -m comment --comment "Reject from 8.8.8.8"
❯ iptables -A OUTPUT -d 8.8.8.8 -j DROP -m comment --comment "Reject to 8.8.8.8"

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2
Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ доступа

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ отбрасываСт всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ DNS Google: ping Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ отбрасываСт всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, исходящиС ΠΈΠ· вашСй систСмы Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ DNS Google β€” Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ping ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Operation not permitted.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π² этом ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ whois 8.8.8.8, Π½ΠΎ это всСго лишь ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

МоТно Π·Π°Π±Ρ€Π°Ρ‚ΡŒΡΡ Π΅Ρ‰Π΅ Π³Π»ΡƒΠ±ΠΆΠ΅ Π² ΠΊΡ€ΠΎΠ»ΠΈΡ‡ΡŒΡŽ Π½ΠΎΡ€Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ TCP ΠΈ UDP, Π½Π° самом Π΄Π΅Π»Π΅ зависит ΠΈ ΠΎΡ‚ IP. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв IP завязан Π½Π° ARP. НС стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎ firewall’ах…

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2
Π’Ρ‹Π±Π΅Ρ€Π΅ΡˆΡŒ ΠΊΡ€Π°ΡΠ½ΡƒΡŽ пилюлю β€” ΠΎΡΡ‚Π°Π½Π΅ΡˆΡŒΡΡ Π² Π‘Ρ‚Ρ€Π°Π½Π΅ ЧудСс, ΠΈ я ΠΏΠΎΠΊΠ°ΠΆΡƒ, насколько Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊΡ€ΠΎΠ»ΠΈΡ‡ΡŒΡ Π½ΠΎΡ€Π°Β»

Π‘ΠΎΠ»Π΅Π΅ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΎΠ΄Π½Ρƒ Π·Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΠ»ΠΎΠΌΠ°Π»ΠΎΡΡŒβ€¦ ΡΡ‚Π°Π½ΡŒΡ‚Π΅ «обСзьяной хаоса». ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ production-систСмы Π½Π΅ рассчитаны Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Π³Ρ€ΡƒΠ±ΡƒΡŽ Π°Ρ‚Π°ΠΊΡƒ, Π½ΠΎ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π² тСстовой срСдС.

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ зависимостСй β€” часто вСсьма Π΄ΠΎΠ»Π³ΠΎΠ΅ мСроприятиС. НСдавно я Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π» с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» ΠΏΠΎΡ‡Ρ‚ΠΈ 2 Π³ΠΎΠ΄Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ инструмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² полуавтоматичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°Ρ€Ρ‚Ρ‹ зависимостСй для сотСн микросСрвисов ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄.

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

3. ΠžΡΡ‚Π΅Ρ€Π΅Π³Π°ΠΉΡ‚Π΅ΡΡŒ самонадСянности

Β«ΠšΡ‚ΠΎ ΠΎ Ρ‡Π΅ΠΌ ΠΌΠ΅Ρ‡Ρ‚Π°Π΅Ρ‚, Ρ‚ΠΎΡ‚ Π² Ρ‚ΠΎ ΠΈ Π²Π΅Ρ€ΠΈΡ‚Β». β€” ДСмосфСн

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎΠ± эффСктС свСрхувСрСнности?

Богласно Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ, эффСкт свСрхувСрСнности β€” это Β«ΠΊΠΎΠ³Π½ΠΈΡ‚ΠΈΠ²Π½ΠΎΠ΅ искаТСниС, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² своих дСйствиях ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Π°Ρ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ этих суТдСний, особСнно ΠΊΠΎΠ³Π΄Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ увСрСнности ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ высок».

Chaos Engineering: искусство ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π§Π°ΡΡ‚ΡŒ 2
ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Ρ‡ΡƒΡ‚ΡŒΠ΅ ΠΈ ΠΎΠΏΡ‹Ρ‚Π΅…

По своСму ΠΎΠΏΡ‹Ρ‚Ρƒ ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это искаТСниС β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π½Π°ΠΌΠ΅ΠΊ Π½Π° Ρ‚ΠΎ, с Ρ‡Π΅Π³ΠΎ слСдуСт Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ хаос-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³.

ΠžΡΡ‚Π΅Ρ€Π΅Π³Π°ΠΉΡ‚Π΅ΡΡŒ самоувСрСнного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

Π§Π°Ρ€Π»ΠΈ: Β«Π­Ρ‚Π° ΡˆΡ‚ΡƒΠΊΠ° Π½Π΅ ΠΏΠ°Π΄Π°Π»Π° Π»Π΅Ρ‚ ΠΏΡΡ‚ΡŒ, всС Π² Π½ΠΎΡ€ΠΌΠ΅!Β»
Π‘Π±ΠΎΠΉ: «ЖдитС… скоро Π±ΡƒΠ΄Ρƒ!Β»

ΠŸΡ€Π΅Π΄Π²Π·ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ послСдствиС самоувСрСнности β€” Π²Π΅Ρ‰ΡŒ коварная ΠΈ Π΄Π°ΠΆΠ΅ опасная ΠΈΠ·-Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° Π½Π΅Π΅. Π­Ρ‚ΠΎ особСнно справСдливо, ΠΊΠΎΠ³Π΄Π° Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Π»ΠΎΠΆΠΈΠ»ΠΈ Π΄ΡƒΡˆΡƒ Π² Π½Π΅ΠΊΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ ΠΊΡƒΡ‡Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° «исправлСния».

ΠŸΠΎΠ΄Π²ΠΎΠΆΡƒ ΠΈΡ‚ΠΎΠ³ΠΈ

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

На этом вторая Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΡ‚Π·Ρ‹Π²Ρ‹, Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ мнСниями ΠΈΠ»ΠΈ просто Ρ…Π»ΠΎΠΏΠ°ΠΉΡ‚Π΅ Π² ладоши Π½Π° Medium. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части я Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ инструмСнты ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ сбоСв Π² систСмы. Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ β€” ΠΏΠΎΠΊΠ°!

P.S. ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

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