5 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла для создания cloud-native apps

Β«ΠžΠ±Π»Π°Ρ‡Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅Β» (cloud native) ΠΈΠ»ΠΈ просто Β«ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅Β» прилоТСния ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… инфраструктурах. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ строятся ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ слабо связанных микросСрвисов, ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ. Π’Π°ΠΊΠΈΠ΅ прилоТСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ сбоям, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΎΡ‚ΠΊΠ°Π·Π°Ρ… инфраструктурного уровня. ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ сторона ΠΌΠ΅Π΄Π°Π»ΠΈ – Π½Π°Π±ΠΎΡ€Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ (ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ облачная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Π΅ прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠΈ Π² автоматичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅.

5 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла для создания cloud-native apps

ΠŸΡ€Π΅ΠΊΡ€Π°ΡΠ½ΠΎ осознавая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ прилоТСния, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ всС Π΅Ρ‰Π΅ Π½Π΅ Π·Π½Π°ΡŽΡ‚, с Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ. Π’ этом постС ΠΌΡ‹ рассмотрим ряд ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ², соблюдСниС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΎΡ‚ΠΊΠ°Π·Π°Ρ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ИВ-инфраструктуры. ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ Ρ†Π΅Π»ΡŒ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… здСсь ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² – Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ автоматичСски ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Kubernetes.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния

Π’ ΠΌΠΈΡ€Π΅ программирования ΠΏΠΎΠ΄ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ довольно ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ПО. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π»ΡŽΠ±Ρ‹ΠΌ языком программирования. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π΅ΡΡ‚ΡŒ свои Ρ†Π΅Π»ΠΈ, инструмСнтом достиТСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ слуТат ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅ сущСствуСт ряд Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² создания качСствСнного софта, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‚ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ²:

  • KISS (Keep it simple, stupid) – Π½Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ;
  • DRY (Don’t repeat yourself) – Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ;
  • YAGNI (You aren’t gonna need it) – Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Π² Ρ‡Π΅ΠΌ Π½Π΅Ρ‚ нСпосрСдствСнной Π½ΡƒΠΆΠ΄Ρ‹;
  • SoC (Separation of concerns) – Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ отвСтствСнности.

Как Π²ΠΈΠ΄Π½ΠΎ, эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π½Π΅ Π·Π°Π΄Π°ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ», Π° относятся ΠΊ разряду Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… сообраТСний Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла Π½Π° основС практичСского ΠΎΠΏΡ‹Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΆΠ΅ рСгулярно ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ.
ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт SOLID – Π½Π°Π±ΠΎΡ€ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… пяти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΠΈ проСктирования, сформулированных Π ΠΎΠ±Π΅Ρ€Ρ‚ΠΎΠΌ ΠœΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΌ. SOLID Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ для Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ – Ссли ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… Π² комплСксС – ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ качСствСнныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ систСмы ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² долгосрочной пСрспСктивС.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ SOLID относятся ΠΊ сфСрС ООП ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° языкС Ρ‚Π°ΠΊΠΈΡ… понятий ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ классы, интСрфСйсы ΠΈ наслСдованиС. По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ, для ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ элСмСнтом здСсь Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ класс, Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. БлСдуя этим ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Π΅ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ цСлям ΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Π²Ρ€ΠΎΠ΄Π΅ Kubernetes.

ΠžΠ±Π»Π°Ρ‡Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹: ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Red Hat

БСгодня Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ практичСски любоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Но для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ прилоТСния эффСктивно Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΈ ΠΎΡ€ΠΊΠ΅ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ρ‚ΠΈΠΏΠ° Kubernetes, трСбуСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ усилия.
Основой для ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ ΠΈΠ΄Π΅ΠΉ послуТила мСтодология The Twelve-Factor App ΠΈ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ аспСктам создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡ‚ управлСния исходным ΠΊΠΎΠ΄ΠΎΠΌ Π΄ΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. ΠžΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ относятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ построСны Π½Π° основС микросСрвисов ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Kubernetes. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΌ элСмСнтом Π² Π½Π°ΡˆΠΈΡ… рассуТдСниях слуТит ΠΎΠ±Ρ€Π°Π· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π° ΠΏΠΎΠ΄ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ срСдой выполнСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² понимаСтся ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° оркСстрации ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². ЦСль ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ оркСстрации ΠΌΠΎΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ диспСтчСризации (scheduling – Π²Ρ‹Π±ΠΎΡ€ хоста для запуска экзСмпляра ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°), ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈΠ·Π»Π°Π³Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ порядкС.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной Π·Π°Π΄Π°Ρ‡ΠΈ (Single Concern Principle, SCP)

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности (Single Responsibility Principle, SRP), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π½Π°Π±ΠΎΡ€ SOLID ΠΈ гласит, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ, ΠΈ эта ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ инкапсулирована Π² класс. Π‘ΡƒΡ‚ΡŒ SRP Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ каТдая ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ – это ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π° класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ для измСнСния.

Π’ SCP вмСсто слова Β«ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΒ» (responsibility) ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ слово Β«Π·Π°Π΄Π°Ρ‡Π°Β» (concern), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ООП-классом. И Ссли Ρ†Π΅Π»ΡŒ SRP – ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π·Π° SCP стоит ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². БлСдуя SRP ΠΈ создавая ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚Π΅ ΡˆΠ°Π½ΡΡ‹ Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΎΠ±Ρ€Π°Π·Π° этого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… контСкстах прилоТСния.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ SCP гласит, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ это Ρ…ΠΎΡ€ΠΎΡˆΠΎ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, SCP Π² ΠΌΠΈΡ€Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² достигаСтся ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ SRP Π² ΠΌΠΈΡ€Π΅ ООП, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ СдинствСнный процСсс, ΠΈ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ этот процСсс Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ.

Если ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹ΠΉ микросСрвис Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ сразу нСсколько Π·Π°Π΄Π°Ρ‡, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠ·Π°Π΄Π°Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ pod-Π° (Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ развСртывания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ шаблонов sidecar ΠΈ init-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, SCP ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρƒ старого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π΅Π±-сСрвСра ΠΈΠ»ΠΈ Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° сообщСний) Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Ρƒ, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ.

5 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла для создания cloud-native apps

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ удобства ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° (High Observability Principle, HOP)

ΠŸΡ€ΠΈ использовании ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² качСствС ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ способа ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ запуска ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ сами прилоТСния Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Β«Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ящик». Однако, Ссли это ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ срСдС выполнСния ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ API-интСрфСйсы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΏΡ€Π°Π²Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ ΠΏΡ€ΠΈ нСобходимости ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΌΠ΅Ρ€Ρ‹. Π‘Π΅Π· этого Π½Π΅ получится ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ обновлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ управлСния ΠΈΡ… ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΡƒΡ…ΡƒΠ΄ΡˆΠΈΡ‚ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΈ удобство использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмы.

5 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла для создания cloud-native apps
На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΈΠΌΠ΅Ρ‚ΡŒ API для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ исправности: тСстов Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ (liveness) ΠΈ тСстов Π½Π° Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ (readiness). Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° большСС, Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ срСдства контроля своСго состояния. НапримСр, Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π²Π°ΠΆΠ½Ρ‹Ρ… событий Ρ‡Π΅Ρ€Π΅Π· STDERR ΠΈ STDOUT для агрСгирования ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Fluentd, Logstash ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… инструмСнтов. А Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ трассировки ΠΈ сбора ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ OpenTracing, Prometheus ΠΈ Ρ‚. ΠΏ.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Β«Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ящик», Π½ΠΎ ΠΏΡ€ΠΈ этом Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ всСми API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстраивания ΠΊ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ (Life-cycle Conformance Principle, LCP)

LCP – это Π°Π½Ρ‚ΠΈΡ‚Π΅Π·Π° HOP. Если HOP гласит, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ API-интСрфСйсы для чтСния, Ρ‚ΠΎ LCP Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ прилоТСния способности Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ события, Π½ΠΎ ΠΈ ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΈΠ½Π°Ρ‡Π΅ говоря, Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ…. ΠžΡ‚ΡΡŽΠ΄Π° ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ API-интСрфСйсы для записи.

5 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла для создания cloud-native apps
Π£ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ событий, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΡ… ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Но Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ само ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈ события Π²Π°ΠΆΠ½Π΅Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ…. НапримСр, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡ…ΠΎ пСрСносит Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‚ΠΎ ΠΎΠ½ΠΎ обязано ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сообщСния signal: terminate (SIGTERM) ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстрСС ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свою ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΏΠ΅Ρ‚ΡŒ Π΄ΠΎ поступлСния signal: kill (SIGKILL), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ΄Π΅Ρ‚ послС SIGTERM.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ события, ΠΊΠ°ΠΊ PostStart ΠΈ PreStop. НапримСр, послС запуска ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ врСмя Π½Π° Β«ΠΏΡ€ΠΎΠ³Ρ€Π΅Π²Β», ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ смоТСт ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° запросы. Или ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ рСсурсы ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСизмСнности ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° (Image Immutability Principle, IIP)

ΠžΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Π΅ прилоТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ послС сборки, Π΄Π°ΠΆΠ΅ Ссли Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах. ΠžΡ‚ΡΡŽΠ΄Π° Π²Ρ‹Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΊΡΡ‚Π΅Ρ€Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° этапС выполнСния (ΠΈΠ½Π°Ρ‡Π΅ говоря, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для этого внСшниС срСдства), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° внСшниС, настроСнныС ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ срСду выполнСния, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ срСды. ПослС Π»ΡŽΠ±Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π·Π°Π½ΠΎΠ²ΠΎ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π²ΠΎ всСх ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… срСдах. ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΏΡ€ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ИВ-систСмами ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ схоТий ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, извСстный ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ нСизмСнности сСрвСров ΠΈ инфраструктуры.

ЦСль IIP – ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ созданиС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² для Ρ€Π°Π·Π½Ρ‹Ρ… срСд выполнСния ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π·Π΄Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π· вмСстС с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ срСды. Π‘Π»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ этому ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… систСм ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΠ°Ρ‚ (roll-back) ΠΈ Π½Π°ΠΊΠ°Ρ‚ (roll-forward) ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ прилоТСния.

5 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла для создания cloud-native apps

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ одноразовости процСссов (Process Disposability Principle, PDP)

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

5 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла для создания cloud-native apps
Как слСдствиС, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Π΅ прилоТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ своС состояниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… срСдств, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для этого Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ распрСдСлСнныС схСмы с ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ быстро Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΈ быстро Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΊ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎΠΌΡƒ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΎΡ‚ΠΊΠ°Π·Ρƒ оборудования.

Одна ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰Π°Ρ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ нСбольшого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ΠžΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ срСды ΠΌΠΎΠ³ΡƒΡ‚ автоматичСски Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ хост для запуска экзСмпляра ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, поэтому Ρ‡Π΅ΠΌ мСньшС Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‚Π΅ΠΌ быстрСС ΠΎΠ½ запустится – ΠΎΠ½ просто быстрСС скопируСтся Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ хост ΠΏΠΎ сСти.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ самодостаточности (Self-containment Principle, S-CP)

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

5 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла для создания cloud-native apps

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ лишь для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ срСды ΠΊ срСдС, ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½Π° этапС выполнСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· Kubernetes ConfigMap.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя нСсколько ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π‘Π£Π‘Π” Π² составС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠ³ΠΎ Π²Π΅Π±-прилоТСния. Богласно ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ S-CP, эти ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π½Π°Π΄ΠΎ Π½Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½, Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π‘Π£Π‘Π” содСрТал Π² сСбС всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π²Π΅Π±-прилоТСния – всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π΅Π±-прилоТСния, Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π²Π΅Π±-сСрвСр. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π²Π΅Π±-прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π‘Π£Π‘Π” ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ надобности.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ ограничСния Π½Π° этапС выполнСния (Runtime Confinement Principle, RCP)

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ S-CP опрСдСляСт, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΎΠ±Ρ€Π°Π·Π°. Но ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ – это Π½Π΅ просто Β«Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ящик», Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° характСристика – Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°. Π’ΠΎ врСмя выполнСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСрСния: объСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ памяти, процСссорноС врСмя ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ систСмныС рСсурсы.

5 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла для создания cloud-native apps
И здСсь пригодится ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ RCP, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅ΠΊΠ°ΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои трСбования ΠΊ систСмным рСсурсам ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. ИмСя рСсурсныС ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (сколько Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ рСсурсов ЦП, памяти, сСти ΠΈ дисковой систСмы), ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·ΠΈΡ†ΠΈΡŽ ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ИВ-мощностями ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ SLA-ΡƒΡ€ΠΎΠ²Π½ΠΈ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

Помимо удовлСтворСния Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ рСсурсам ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π° ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠΌ самим Ρ€Π°ΠΌΠΊΠΈ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ Π΄Π΅Ρ„ΠΈΡ†ΠΈΡ‚Π° рСсурсов ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° с большСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ Π΅Π³ΠΎ Π² список ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Говоря ΠΎΠ± ориСнтированности Π½Π° ΠΎΠ±Π»Π°ΠΊΠΎ, ΠΌΡ‹ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΈΠΌΠ΅Π΅ΠΌ Π² Π²ΠΈΠ΄Ρƒ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ сформулировали ряд ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ мСтодологичСский Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ для построСния качСствСнных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… срСд.

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ этих ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ понадобятся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ нас Π΅ΡΡ‚ΡŒ нСсколько ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ (ΠΈΠ»ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ) Π² зависимости ΠΎΡ‚ ситуации:

  • Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²: удаляйтС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π½Π΅ ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ – Ρ‡Π΅ΠΌ мСньшС Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‚Π΅ΠΌ быстрСС ΠΎΠ½ собираСтся ΠΈ копируСтся Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ хост ΠΏΠΎ сСти.
  • ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ User-ID: Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ sudo ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ особСнных userid для запуска своих ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².
  • ΠœΠ°Ρ€ΠΊΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹: Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎ врСмя выполнСния, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ EXPOSE – Π΄Ρ€ΡƒΠ³ΠΈΠΌ людям ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваши ΠΎΠ±Ρ€Π°Π·Ρ‹.
  • Π₯Ρ€Π°Π½ΠΈΡ‚Π΅ постоянныС Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Ρ‚ΠΎΠΌΠ°Ρ…: Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ послС уничтоТСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, слСдуСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ‚ΠΎΠΌΠ°.
  • ΠŸΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Π°: Ρ‚Π΅Π³ΠΈ, ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ использованиС ΠΎΠ±Ρ€Π°Π·ΠΎΠ² – Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π°ΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½Ρ‹.
  • Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ хост ΠΈ ΠΎΠ±Ρ€Π°Π·Ρ‹: для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ трСбуСтся синхронизации ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с хостом ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ врСмя ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.
  • Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ дСлимся шаблонами ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΌΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ эффСктивнСС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ пСрСчислСнныС Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹:
    www.slideshare.net/luebken/container-patterns
    docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices
    docs.projectatomic.io/container-best-practices
    docs.openshift.com/enterprise/3.0/creating_images/guidelines.html
    www.usenix.org/system/files/conference/hotcloud16/hotcloud16_burns.pdf
    leanpub.com/k8spatterns
    12factor.net

Π’Π΅Π±ΠΈΠ½Π°Ρ€ ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ вСрсии OpenShift Container Platform – 4
11 июня в 11.00

Π§Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅:

  • Immutable Red Hat Enterprise Linux CoreOS
  • OpenShift service mesh
  • Operator framework
  • Knative framework

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

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