Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ распрСдСлСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. НулСвоС ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅

Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ распрСдСлСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. НулСвоС ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅

ΠœΠΈΡ€ Π½Π΅ стоит Π½Π° мСстС. ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ создаСт Π½ΠΎΠ²Ρ‹Π΅ тСхнологичСскиС Π²Ρ‹Π·ΠΎΠ²Ρ‹. Π’ соотвСтствии с измСнившимися трСбованиями, Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. БСгодня ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, конкурСнтности, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, асинхронности ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π² Erlang ΠΌΠΎΠΆΠ½ΠΎ со всСм этим ΠΆΠΈΡ‚ΡŒ ΠΌΠΈΡ€Π½ΠΎ.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ зависимости ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ систСмы ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π½Π΅ΠΉ, ΠΌΡ‹, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ способ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π² систСмС. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия сСрвисов Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ схСма с Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° основС RabbitMQ ΠΈΠ»ΠΈ kafka. Но ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΡ‚ΠΎΠΊ событий, SLA ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ контроля Π½Π°Π΄ систСмой Ρ‚Π°ΠΊΠΎΠ²Ρ‹, Ρ‡Ρ‚ΠΎ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ messaging Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ систСму, взяв ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° транспортный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ кластСра, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ZeroMQ ΠΈΠ»ΠΈ nanomsg. Но Ссли систСмС Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ пропускной способности ΠΈ возмоТностСй стандартного Erlang кластСра, Ρ‚ΠΎ вопрос внСсСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ сущности Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ изучСния ΠΈ экономичСского обоснования.

Π’Π΅ΠΌΠ° Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… распрСдСлСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ довольно ΠΎΠ±ΡˆΠΈΡ€Π½Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠΌ сСгодняшнСго обсуТдСния Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³ΠΎΠΌΠΎΠ³Π΅Π½Π½Ρ‹Π΅ срСды, построСнныС Π½Π° основС Erlang/Elixir. ЭкосистСма Erlang/OTP позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ с наимСньшими Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ. Но Π² любом случаС Π½Π°ΠΌ понадобится слой ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями.

ВСорСтичСский базис

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ начинаСтся с опрСдСлСния Ρ†Π΅Π»Π΅ΠΉ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Основная Ρ†Π΅Π»ΡŒ Π½Π΅ находится Π² области Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π°Π΄ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ бСзопасный ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ инструмСнт, Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Π° самоС Π³Π»Π°Π²Π½ΠΎΠ΅ – Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ соврСмСнныС прилоТСния Ρ€Π°Π·Π½ΠΎΠ³ΠΎ уровня: начиная ΠΎΡ‚ односСрвСрных, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² дальнСйшСм ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΡŒΡΡ Π² кластСры Π΄ΠΎ 50-60 ΡƒΠ·Π»ΠΎΠ², заканчивая фСдСрациями кластСров. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ основная Ρ†Π΅Π»ΡŒ – максимизация ΠΏΡ€ΠΈΠ±Ρ‹Π»ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ сокращСния стоимости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ владСния ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΉ систСмой.

Π’Ρ‹Π΄Π΅Π»ΠΈΠΌ 4 Π³Π»Π°Π²Π½Ρ‹Ρ… трСбования ΠΊ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΉ систСмС:

  • Бобытийная ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ.
    БистСма всСгда Π³ΠΎΡ‚ΠΎΠ²Π° ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· сСбя ΠΏΠΎΡ‚ΠΎΠΊ событий ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия;
  • ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ.
    ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ. Вся систСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ бСсконСчного Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ роста;
  • ΠžΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ.
    ВсС ΡƒΡ€ΠΎΠ²Π½ΠΈ ΠΈ всС сСрвисы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ автоматичСского восстановлСния ΠΏΡ€ΠΈ сбоях;
  • Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°.
    ВрСмя Ρ†Π΅Π½Π½ΠΎ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΆΠ΄Π°Ρ‚ΡŒ слишком Π΄ΠΎΠ»Π³ΠΎ.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ сказку ΠΏΡ€ΠΎ β€œThe little engine that could”, ΠΎΠ½ ΠΆΠ΅ – β€œΠŸΠ°Ρ€ΠΎΠ²ΠΎΠ·ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смог”? Π§Ρ‚ΠΎΠ±Ρ‹ проСктируСмая систСма ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΡˆΠ»Π° ΠΈΠ· стадии ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° ΠΈ Π±Ρ‹Π»Π° прогрСссивной, Π΅Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ трСбованиям Π‘ΠœΠžΠ“.

К messaging ΠΊΠ°ΠΊ ΠΊ инфраструктурному инструмСнту ΠΈ базису для всСх сСрвисов добавляСтся Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡƒΠ½ΠΊΡ‚: удобство использования для программистов.

ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π½Π° события

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΎ вырасти ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСрвСра Π΄ΠΎ кластСра, Π΅Π³ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π°Π±ΡƒΡŽ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎΠΌΡƒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ асинхронная модСль. Π’ Π½Π΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ заботятся ΠΎΠ± ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ сообщСния ΠΈ Π½Π΅ бСспокоятся Π·Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ систСмы.

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ систСмы стоят рядом. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ прилоТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС доступныС рСсурсы. Π§Π΅ΠΌ эффСктивнСС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мощности ΠΈ Ρ‡Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π΅Π΅ наши ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π΅ΠΌ мСньшС ΠΌΡ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΠΌ Π΄Π΅Π½Π΅Π³ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Erlang создаСт Π²Ρ‹ΡΠΎΠΊΠΎΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΡƒΡŽ срСду. Баланс ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ количСства ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы доступных для Erlang VM ΠΈ числом ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… эти ΠΏΠΎΡ‚ΠΎΠΊΠΈ.
Erlang процСссы Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ состояния ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π­Ρ‚ΠΎ обСспСчиваСт ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΈΠ·ΠΊΡƒΡŽ Π»Π°Ρ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ Ρƒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ построСнных Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ синхронизации. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Erlang заботится ΠΎ справСдливом распрСдСлСнии CPU ΠΈ IO, Π° отсутствиС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ позволяСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΈΠΊΠΎΠ²Ρ‹Ρ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ ΠΈΠ»ΠΈ сбоСв.

На ΡƒΡ€ΠΎΠ²Π½Π΅ кластСра ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ‚ΠΎΠΆΠ΅ сущСствуСт. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π² кластСрС Π±Ρ‹Π»ΠΈ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹, Π° ΡΠ΅Ρ‚ΡŒ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ призСмляСтся Π½Π° входящиС балансировщики (haproxy, nginx, etc), ΠΎΠ½ΠΈ максимально Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ запросы Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Π±ΠΎΡ€ΠΎΠΌ доступных бэкСндов. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… инфраструктуры прилоТСния сСрвис, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ интСрфСйс, – это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСдняя миля, ΠΈ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… сСрвисов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ запрос. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ запросы Ρ‚ΠΎΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ балансировки.
Π§Ρ‚ΠΎΠ±Ρ‹ эффСктивно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, messaging Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ интСрфСйс для управлСния ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ распрСдСлСниСм Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Благодаря этому, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ смогут, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ микросСрвисныС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ (aggregator, proxy, chain, branch, etc), Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ стандартныС Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚Π°ΠΊ ΠΈ Ρ€Π΅Π΄ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния бизнСса, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ – ΠΎΠ΄ΠΈΠ½ ΠΈΠ· инструмСнтов управлСния рисками. Π“Π»Π°Π²Π½ΠΎΠ΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ запросы ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅:

  • ΠŸΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ мощности оборудования Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ прогрСсса. Оно Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Π° ПО. Erlang прСкрасно ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΈ всСгда смоТСт ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ядра CPU ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ;
  • Π’ условиях ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… срСд, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ количСством оборудования Π² зависимости ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ SLA.

ΠžΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ

Рассмотрим Π΄Π²Π΅ аксиомы: β€œΠžΡ‚ΠΊΠ°Π·Ρ‹ нСдопустимы” ΠΈ β€œΠžΡ‚ΠΊΠ°Π·Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ всСгда”. Для бизнСса ΠΎΡ‚ΠΊΠ°Π· ПО – потСря Π΄Π΅Π½Π΅Π³, Π° Ρ‡Ρ‚ΠΎ Ρ…ΡƒΠΆΠ΅ – Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ†ΠΈΠΈ. Балансируя ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ потСрями ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ отказоустойчивого ПО, часто ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ компромисс.

Π’ краткосрочной пСрспСктивС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Π»ΠΎΠΆΠ΅Π½Π° ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ, экономит дСньги Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ кластСризации. Они стоят Π΄ΠΎΡ€ΠΎΠ³ΠΎ, ΠΈ Π² Π½ΠΈΡ… Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ ошибки.
Π’ долгосрочной, отказоустойчивая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΎΠΊΡƒΠΏΠ°Π΅Ρ‚ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° всСх этапах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
Messaging Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π΅Ρ‰Π΅ Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ позволяСт Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ взаимодСйствиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ систСмы. Π­Ρ‚ΠΈΠΌ упрощаСтся Π·Π°Π΄Π°Ρ‡Π° рСагирования ΠΈ управлСния сбоями, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ всС отвСтствСнныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ сбои, Π° итоговая систСма Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ автоматичСски Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ΅ состояниС послС сбоя by design.

ΠžΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ

Π’Π½Π΅ зависимости ΠΎΡ‚ сбоСв, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° запросы ΠΈ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ SLA. Π Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ люди Π½Π΅ хотят ΠΆΠ΄Π°Ρ‚ΡŒ, соотвСтствСнно бизнСс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΡΡ. ΠžΡ‚ всС большСго числа ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ высокой отзывчивости.
ΠžΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹Π΅ прилоТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΠΌ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Erlang VM Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ мягкого Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… областСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ бирТСвая торговля, ΠΌΠ΅Π΄ΠΈΡ†ΠΈΠ½Π°, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π²Π°ΠΆΠ΅Π½ Ρ€Π΅ΠΆΠΈΠΌ ТСсткого Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
ΠžΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹Π΅ систСмы ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ UX ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ бизнСсу.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΡ‚ΠΎΠ³

ΠŸΠ»Π°Π½ΠΈΡ€ΡƒΡ Π΄Π°Π½Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ, я Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ создания Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΈ построСниСм Π½Π° Π΅Π³ΠΎ основС слоТных систСм. Но тСорСтичСская ΠΈ мотивационная Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ довольно ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ.
Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ я расскаТу ΠΏΡ€ΠΎ Π½ΡŽΠ°Π½ΡΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΎΠ±ΠΌΠ΅Π½Π°, ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΈ ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.
Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ части рассмотрим ΠΎΠ±Ρ‰ΠΈΠ΅ вопросы ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ сСрвисов, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ балансировки. ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ практичСской сторонС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ отказоустойчивости систСм.

ΠšΠΎΠ½Π΅Ρ† ΠΏΠ΅Ρ€Π²ΠΎΠΉ части.

Π€ΠΎΡ‚ΠΎ @lucabravo.

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