Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы: особСнности Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования, инструмСнты

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы: особСнности Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования, инструмСнты

АрхитСктурный ΡΡ‚ΠΈΠ»ΡŒ микросСрвисов β€” это ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ систСма строится ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ нСзависимых ΠΈ слабосвязанных сСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ языки программирования ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ хранСния Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ микросСрвисов позволяСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π°Π±ΡƒΡŽ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ сСрвисов Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ систСмой, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Low Coupling ΠΈ High Cohesion.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ β€” Π² Π²ΠΈΠ΄Π΅ΠΎ ΠΈ тСкстовой Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ΅ Π½ΠΈΠΆΠ΅.

ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚ vs микросСрвисы

ΠŸΡ€ΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ систСма ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ состоит ΠΈΠ· 3 Π±Π»ΠΎΠΊΠΎΠ²: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сСрвСрная Ρ‡Π°ΡΡ‚ΡŒ. БСрвСрная Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ запросы, выполняСт бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π‘Π”, заполняСт HTML-страницы. Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² систСмС ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ обновлСнию вСрсии сСрвСрной части прилоТСния.

Π’ случаС с микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ обновляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΉ сСрвис. Если измСнСния Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ интСрфСйс сСрвиса, это ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ всСх Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². ЦСль Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ β€” максимально ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ сСрвисов.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚

ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ β€” это формализация возмоТностСй взаимодСйствия с микросСрвисом. Π’ случаС с REST API эндпоинты сСрвиса ΠΈ схСма Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠΌ. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ β€” это дСкомпозиция систСмы Π½Π° слабосвязанныС сСрвисы, созданиС интСрфСйсов ΠΈ связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° цСлостности Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΠΎΠΌΠΎΡ‡ΡŒ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Tolerant Reader ΠΈ Consumer-Driven Contracts.

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°

Команда Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя большС людСй, Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‹Ρ‚ΠΈΡ‚ΡŒ двумя ΠΏΠΈΡ†Ρ†Π°ΠΌΠΈ. Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ использовала компания Amazon ΠΏΡ€ΠΈ распиливания своСго ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° Π² 2002 Π³ΠΎΠ΄Ρƒ. Π’ΠΏΠΎΠ»Π½Π΅ допустимо ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ developer per service, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° ΠΎΠ΄ΠΈΠ½ микросСрвис.

Когда большая систСма разбиваСтся, часто происходит Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° Π±Π°Π·Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ситуации ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π° Ρ‚Π΅Ρ… слоях систСмы, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠΌΠ΅ΡŽΡ‚ доступ. Π—Π°ΠΊΠΎΠ½ КонвСя Π² дСйствии:

Β«Π›ΡŽΠ±Π°Ρ организация, которая ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ систСму (Π² ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС) ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π΄ΠΈΠ·Π°ΠΉΠ½, Ρ‡ΡŒΡ структура ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ структуру ΠΊΠΎΠΌΠ°Π½Π΄ Π² этой ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈΒ»

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ систСмы Π½Π° сСрвисы ΠΏΠΎ бизнСс-трСбованиям. БСрвисы Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ: UI, storage, backend. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ созданию кросс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… достаточно ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΉ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… сСрвисов, ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… 100% бизнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° всС аспСкты ПО, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π΅Π³ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ 24/7. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡΠ½ΡƒΡ‚ΡŒΡΡ ΠΎΡ‚ Π·Π²ΠΎΠ½ΠΊΠ° Π² 3 часа Π½ΠΎΡ‡ΠΈ β€” это ΠΎΡ‡Π΅Π½ΡŒ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ стимул ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄.

Насколько большим Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ микросСрвис

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

АрхитСктура микросСрвиса Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ свободу Π² Π²Ρ‹Π±ΠΎΡ€Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ инструмСнария.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ микросСрвисов

Π’ процСссС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ сущСствСнным ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ использованиС систСм CI/CD, систСмы оркСстрации, Service Discovering, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ сбора Π»ΠΎΠ³ΠΎΠ².

НСобходимо Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Для этого Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ автоматичСскиС тСсты, ΠΏΡ€ΠΈ этом систСма разворачиваСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ срСдС (Automated Deployment).

Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° синхронных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² микросСрвисов ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ оТиданию ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΎΡ‚ всСх сСрвисов ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ «Один синхронный Π²Ρ‹Π·ΠΎΠ² Π½Π° ΠΎΠ΄ΠΈΠ½ запрос ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΒ», ΠΊΠ°ΠΊ это сдСлали Π² The Guardian, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ асинхронный API, ΠΊΠ°ΠΊ Π² Netflix. Один ΠΈΠ· способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ асинхронный API β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ систСму ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, RabbitMQ, Apache Kafka ΠΈΠ»ΠΈ ActiveMQ.

Π₯ΠΈΠ½Ρ‚ для программистов: Ссли Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ΡΡŒ Π½Π° сорСвнования Huawei Cup, Ρ‚ΠΎ бСсплатно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ доступ ΠΊ ΠΎΠ½Π»Π°ΠΉΠ½-школС для участников. МоТно ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ Π½Π°Π²Ρ‹ΠΊΠ°ΠΌ ΠΈ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ·Ρ‹ Π² самом сорСвновании.

ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ рСгистрации

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

ΠžΠ³Π»ΡΠ΄Ρ‹Π²Π°ΡΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° ΠΏΡΡ‚ΡŒ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, насколько сильно с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ измСнилось ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ микросСрвисов. ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ популярны. ПослС успСха Netflix, Amazon ΠΈ Gilt.com Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° микросСрвисов Π½Π΅ отличаСтся ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅ всС поняли, Ρ‡Ρ‚ΠΎ микросСрвисы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ· сСбя Π½ΠΎΠ²Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ эффСктивСн для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… случаях ΠΈΡ… слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΌΡ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ ΠΊ Π”ΠΆΠ΅ΠΉΠΌΠ΅ Π‘ΡƒΡΠ»ΡŒΡ‚Π° (Jaime Buelta), Π°Π²Ρ‚ΠΎΡ€Ρƒ ΠΊΠ½ΠΈΠ³ΠΈ Β«Hands-On Docker for Microservices with PythonΒ». Он рассказал ΠΎ прСимущСствах этой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ подСлился рСкомСндациями для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½Π΅Π΅ с ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ΠΎΠ².

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ риски

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

Π‘ΡƒΡΠ»ΡŒΡ‚Π° ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚: Β«ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° β€” это способ структурирования систСмы, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нСсколько нСзависимых сСрвисов ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это происходит с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ web-сСрвисов RESTful). ΠšΠ»ΡŽΡ‡Π΅Π²Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ микросСрвис способСн ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ нСзависимо ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…Β».
АрхитСктура микросСрвисов опрСдСляСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ создаСтС своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΈ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ваша ΠΊΠΎΠΌΠ°Π½Π΄Π°.

«Одна нСзависимая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° микросСрвис. Π­Ρ‚ΠΎ позволяСт организациям расти, Π½Π΅ сталкивая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌΒ», β€” ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Π‘ΡƒΡΠ»ΡŒΡ‚Π°.
Одно ΠΈΠ· основных прСимущСств микросСрвисов Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ нововвСдСния Π±Π΅Π· особого влияния Π½Π° систСму Π² Ρ†Π΅Π»ΠΎΠΌ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ микросСрвисов Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ вСсти ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

На вопрос ΠΎ рисках, связанных с микросСрвисами, Π‘ΡƒΡΠ»ΡŒΡ‚Π° ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»: «Главная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (особСнно ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ с ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°) Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² создании Π΄ΠΈΠ·Π°ΠΉΠ½Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сСрвисы Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ нСзависимыми. Если этого Π½Π΅ удастся Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, Ρ‚ΠΎ мСТсСрвисныС связи станут слоТнСС, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ расходам. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ профСссионалы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ направлСния развития Π² долгосрочной пСрспСктивС. Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ организациям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Ρ‚Π°ΠΊΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ отвСтствСнным Π·Π° Β«ΠΎΠ±Ρ‰ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΡƒΒ». На микросСрвисы Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΒ», β€” считаСт Π”ΠΆΠ΅ΠΉΠΌΠ΅.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° ΠΊ микросСрвисам

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

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

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π½Π° микросСрвисы

ΠžΡ‚Π²Π΅Ρ‡Π°Ρ Π½Π° вопрос ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ практичСскиС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° микросСрвисы, Π‘ΡƒΡΠ»ΡŒΡ‚Π° заявил: Β«ΠšΠ»ΡŽΡ‡ΠΎΠΌ ΠΊ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ микросСрвисов являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ максимально нСзависим».
Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: «Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сСрвисы нСзависимыми?Β». Π›ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π²Π·Π°ΠΈΠΌΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ систСмы β€” ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Π½ΠΎΠ²Ρ‹Ρ… возмоТностях: «Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² лишь ΠΎΠ΄ΠΈΠ½ сСрвис? КакиС Π²ΠΈΠ΄Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… микросСрвисов? Они Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ часто ΠΈΠ»ΠΈ Ρ€Π΅Π΄ΠΊΠΎ? НСвозмоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½, Π½ΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ обоснованныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΒ», β€” ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Π‘ΡƒΡΠ»ΡŒΡ‚Π°.

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

«На Π΄Π΅Π»Π΅ основныС трудности связаны с людьми. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° микросСрвисы фактичСски мСняСт способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π—Π°Π΄Π°Ρ‡Π° Π½Π΅ ΠΈΠ· Π»Π΅Π³ΠΊΠΈΡ…!Β». Он добавляСт: Β«Π― Π»ΠΈΡ‡Π½ΠΎ сталкивался с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ. НапримСр, ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈ Π΄Π°Π²Π°Ρ‚ΡŒ совСты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. ОсобСнно Π²Π°ΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ измСнСния. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ людям ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ внСдрСния всСх Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΉΡ‚ΠΈΡΡŒ ΠΈΠΌ Π½Π΅ ΠΏΠΎ Π΄ΡƒΡˆΠ΅.

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

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π° Docker, Kubernetes ΠΈ Python Π² качСствС тСхнологичСского стСка

ΠœΡ‹ спросили Π‘ΡƒΡΠ»ΡŒΡ‚Ρƒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΠ½ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ для внСдрСния микросСрвисов. ΠšΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° языка ΠΎΡ‚Π²Π΅Ρ‚ оказался прост: Β«Python для мСня β€” Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Π­Ρ‚ΠΎ ΠΌΠΎΠΉ Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ язык программирования. Π­Ρ‚ΠΎΡ‚ язык Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для микросСрвисов. Π•Π³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Python ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ для Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎΠΉ экосистСмой сторонних ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для Π»ΡŽΠ±Ρ‹Ρ… потрСбностСй. К этим потрСбностям относится ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ систСмам, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, внСшним API ΠΈ Ρ‚.Π΄.Β».

Docker часто рСкламируСтся ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых Π²Π°ΠΆΠ½Ρ‹Ρ… инструмСнтов для микросСрвисов. Π‘ΡƒΡΠ»ΡŒΡ‚Π° объяснил, ΠΏΠΎΡ‡Π΅ΠΌΡƒ:

Β«Docker позволяСт ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… стандартизированных ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…. Π­Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ срСды. Π’Π°ΠΊΠΆΠ΅ это Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊ производству ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊΠΎ всСму, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ врСмя использования оборудования. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ нСсколько ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах (Π΄Π°ΠΆΠ΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах) Π² ΠΎΠ΄Π½ΠΎΠΉ физичСской ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ΅ ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС».

Β«Kubernetes позволяСт Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ нСсколько ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Docker, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… скоординированным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π­Ρ‚ΠΎ заставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ кластСризованно, помня ΠΎ производствСнной срСдС. Π’Π°ΠΊΠΆΠ΅ это позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ кластСр с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ развСртывания ΠΈΠ»ΠΈ измСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ»ΠΈΡΡŒ Π² Ρ„Π°ΠΉΠ»Π°Ρ…. ВсС это Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ GitOps (ΠΎ Π½ΠΈΡ… я писал Π² своСй ΠΊΠ½ΠΈΠ³Π΅), ΠΏΡ€ΠΈ этом сохраняя ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π² систСмС управлСния вСрсиями. КаТдоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ вносится ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΡ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ прСдставляСт ΠΈΠ· сСбя рСгулярноС git-слияниС. Благодаря этому ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ инфраструктуру».

Β«ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ΡΡ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Docker ΠΈ Kubernetes, Π½ΠΎ это Ρ‚ΠΎΠ³ΠΎ стоит. Оба инструмСнта ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΠΎΠ½ΠΈ ΠΏΠΎΠΎΡ‰Ρ€ΡΡŽΡ‚ вас Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ производствС», β€” считаСт Π‘ΡƒΡΠ»ΡŒΡ‚Π°.

ΠœΠ½ΠΎΠ³ΠΎΡΠ·Ρ‹Ρ‡Π½Ρ‹Π΅ микросСрвисы

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ микросСрвисов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ нСзависимая ΠΊΠΎΠΌΠ°Π½Π΄Π°. Π‘ΡƒΡΠ»ΡŒΡ‚Π° подСлился своим ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΎ многоязычных микросСрвисах: Β«ΠœΠ½ΠΎΠ³ΠΎΡΠ·Ρ‹Ρ‡Π½Ρ‹Π΅ микросСрвисы β€” это Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ! Π­Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· основных прСимущСств Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ многоязычного микросСрвиса β€” пСрСнос ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, написанного Π½Π° ΠΎΠ΄Π½ΠΎΠΌ языкС, Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ собой любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Ρ‚ΠΎΡ‚ ΠΆΠ΅ внСшний интСрфСйс. ΠŸΡ€ΠΈ этом Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½Ρ‹ΠΌ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, я ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠ» со старых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ PHP, замСняя ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ, написанными Π½Π° PythonΒ». Π”ΠΆΠ΅ΠΉΠΌΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»: Β«Π Π°Π±ΠΎΡ‚Π° с двумя ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π½ΠΈΡ… ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΈΡ… случаях ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΒ».

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

Об Π°Π²Ρ‚ΠΎΡ€Π΅

Π”ΠΆΠ΅ΠΉΠΌΠ΅ Π‘ΡƒΡΠ»ΡŒΡ‚Π° (Jaime Buelta) β€” ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ программист ΠΈ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π° свою ΠΌΠ½ΠΎΠ³ΠΎΠ»Π΅Ρ‚Π½ΡŽΡŽ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ познакомился со мноТСством Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Он Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… областСй ΠΈ отраслСй, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π°ΡΡ€ΠΎΠΊΠΎΡΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ, ΡΠ΅Ρ‚Π΅Π²ΡƒΡŽ ΠΈ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Π΅ систСмы SCADA, ΠΎΠ½Π»Π°ΠΉΠ½-сСрвисы для Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€ ΠΈ финансовыС сСрвисы.

Π’ составС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΎΠ½ ΠΈΠΌΠ΅Π» Π΄Π΅Π»ΠΎ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ областями, ΠΊΠ°ΠΊ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³, ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚, ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΈ Π³Π΅ΠΉΠΌΠ΄ΠΈΠ·Π°ΠΉΠ½. Π”ΠΆΠ΅ΠΉΠΌΠ΅ являСтся ярым сторонником Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ…ΠΎΡ‡Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всю Ρ‚ΡΠΆΠ΅Π»ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ выполняли ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ² людям ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… Π²Π΅Ρ‰Π°Ρ…. Π’ настоящСС врСмя ΠΎΠ½ ΠΆΠΈΠ²Π΅Ρ‚ Π² Π”ΡƒΠ±Π»ΠΈΠ½Π΅ ΠΈ рСгулярно выступаСт Π½Π° конфСрСнциях PyCon Π² Π˜Ρ€Π»Π°Π½Π΄ΠΈΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PHP для создания микросСрвиса?

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассказываСтся, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PHP для построСния Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ микросСрвисов. Π’Π°ΠΊ ΠΊΠ°ΠΊ PHP ΠΈΠ΄Π΅Ρ‚ Π² Π½ΠΎΠ³Ρƒ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΎΠ½ способСн ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ микросСрвисныС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСм.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° сСрвитизации

ΠŸΡ€ΠΈ использовании traditional framework (laravel, yii, symfony) для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ микросСрвисов Π½Π° Php эффСкта ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ fpm, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ рСзидСнтная ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдоставлСна, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запрос Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с нуля, начиная с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ процСсса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ, добавляя ΠΌΠ½ΠΎΠ³ΠΎ бСсполСзных Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, соСдинСниС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈ Π½Π΅ защищаСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ fpm являСтся процСссно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, ΠΈ количСство процСссов fpm Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт ΠΈ число ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов. Π’Π°ΠΊΠΎΠ²Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ fpm.

Он нСдостаточно Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π΅Π½ ΠΊ микросСрвисным инструмСнтам, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ docker, ΠΈ полагаСтся Π½Π° nginx для прСдоставлСния услуг.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²ΠΎΡ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Java сСйчас Π±ΠΎΠ»Π΅Π΅ популярна ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с PHP. Помимо PHP non-memory resident, сущСствуСт мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Swoft ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ микросСрвис.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Swoft?

Swoft β€” это Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ для микросСрвисов PHP, основанный Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ Swoole. Как ΠΈ Go, Swoft ΠΈΠΌΠ΅Π΅Ρ‚ встроСнный Π²Π΅Π±-сСрвСр ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ для ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½, ΠΈ являСтся Ρ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π½Ρ‹ΠΌ Π² памяти, нСзависимым ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ PHP-FPM.

Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ Go-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ языковыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π³ΠΈΠ±ΠΊΠΈΠ΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡƒ Spring Cloud, ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для внСдрСния Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… зависимостСй, комплСксноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСрвисами, Π³ΠΈΠ±ΠΊΠΎΠ΅ ΠΈ ΠΌΠΎΡ‰Π½ΠΎΠ΅ AOP (Aspect Oriented Programming), стандартная рСализация спСцификации PSR (PHP Standards Recommendations) ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Swoft Github

Π§Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ для создания микросСрвиса?

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

РСгистрация ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ услуг

АвтоматичСскоС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ услуг

Π”Π°, Π² Swoft всС ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ

Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Swoft

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ прСимущСства Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ рСзидСнтная ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ инициализируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·; ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запросов, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ инициализируСтся Π² памяти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС для Ρ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π½ΠΎΠΉ памяти

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ соСдинСний; Ссли ΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΡƒΠ» соСдинСний, Ρ‚ΠΎΠ³Π΄Π° ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ созданиС соСдинСний для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса, этого Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ использованию рСсурсов бэкСнда. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основных сСрвисов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Redis, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, соСдинСния ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ дорогостоящим расходом рСсурсов.

Π˜Ρ‚Π°ΠΊ, Π΅ΡΡ‚ΡŒ Π»ΠΈ подходящСС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅? ΠžΡ‚Π²Π΅Ρ‚ β€” Π΄Π°, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Swoft. Swoft β€” это RPC (Remote Procedure Call)-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Service Governance. Swoft β€” это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„ΡƒΠ»Π»-стСк PHP-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Ρ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π½Ρ‹ΠΉ Π² памяти, ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹ΠΉ, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΡΡ Π½Π° основной ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Spring Boot согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ соглашСниС Π²Π°ΠΆΠ½Π΅Π΅ Ρ‡Π΅ΠΌ конфигурация.

Swoft обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ элСгантный способ использования RPC-сСрвисов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Dubbo, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡΡ…ΠΎΠΆΡƒΡŽ с Golang. Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ стрСсс-тСста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Swoft Π½Π° ΠΌΠΎΠ΅ΠΌ PC.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² стрСсс-тСстС ab ΠΎΡ‡Π΅Π½ΡŒ впСчатляСт. Π‘ процСссором i7 generation 8 ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ 16GB Π½Π° 100000 запросов ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ всСго 5s. Π’Π°ΠΊΠΎΠ³ΠΎ быстродСйствия практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ fpm.

Π”Π°Π½Π½ΠΎΠ³ΠΎ тСста Ρ‚Π°ΠΊΠΆΠ΅ достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Swoft.

Π’ процСссС управлСния микросСрвисами часто трСбуСтся рСгистрация сСрвисов, ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° сторонних кластСрах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ consul/etcd. Π’ этой Π³Π»Π°Π²Π΅ для осущСствлСния рСгистрации ΠΈ обнаруТСния сСрвисов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ swoft-consul Π² составС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Swoft.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php

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

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

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ микросСрвисы php

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°, автоматичСский Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ, ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ уровня обслуТивания Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½Ρ‹. Когда услуга Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π°. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° β€” это инструмСнт самозащиты. Если Π½Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° самозащиты ΠΈ соСдинСния ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ нСзависимо ΠΎΡ‚ ΠΈΡ… количСства, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‡Π΅Π½ΡŒ большом Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ΅ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ зависнСт, Π° бэкСнд Π½Π΅ смоТСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ всС соСдинСния.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° β€” это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ числа ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… запросов ΠΈ количСства запросов ΠΏΡ€ΠΈ доступС ΠΊ Π΄Π΅Ρ„ΠΈΡ†ΠΈΡ‚Π½Ρ‹ΠΌ рСсурсам, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π½Π° Ρ„Π»ΡΡˆ-распродаТС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эффСктивно ΡΡ€Π΅Π·Π°Ρ‚ΡŒ ΠΏΠΈΠΊΠΎΠ²Ρ‹Π΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΡΠ³Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΊΡ€ΠΈΠ²ΡƒΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠ°.

ЦСль ограничСния ΠΏΠΎΡ‚ΠΎΠΊΠ° β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ доступа ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… запросов, ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ запроса Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ систСмы. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄Π΅Π» скорости достигнут ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½, запросы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½Ρ‹ ΠΈΠ»ΠΈ поставлСны Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° Swoft Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹, ΠΎΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² любом Π±ΠΈΠ½Π΅ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ доступа ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. НиТС приводится ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ объяснСниСм.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Он Π½Π°ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌ. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ динамичСски ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π’ΠΎΡ‚ Ρ‡ΡŒΡ-Ρ‚ΠΎ Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΎΠ± этом:

ДинамичСская Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎΠ»Π΅Ρ‚Π° систСмы Π²ΠΎ врСмя выполнСния

Для Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ вСрсии ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ (Ρ„Π°ΠΉΠ»ΠΎΠΌ); для распрСдСлСнной кластСрной систСмы ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (систСмой);

Π’ этой Π³Π»Π°Π²Π΅ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Apollo для извлСчСния сСрвисов ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ бСзопасного пСрСзапуска ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Если Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Apollo, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сначала ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Apollo Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Swoft ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Apollo.

Π’ этой Π³Π»Π°Π²Π΅ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Apollo Π² Swoft. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Apollo пСрСзапуститС слуТбу ( http-server / rpc-server / ws-server ). НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π³Π΅Π½Ρ‚Π°:

Π’Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ способ настройки Apollo, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Swoft-Apollo прСдоставляСт большС способов использования.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ наш простой Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ микросСрвисов Π±Ρ‹Π» построСн. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ PHP-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, этого Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ ΠΎΡ‡Π΅Π½ΡŒ слоТно. Но с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Swoft всС Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅.

ВсСх ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ Π½Π° Π΄Π²ΡƒΡ…Π΄Π½Π΅Π²Π½Ρ‹ΠΉ ΠΎΠ½Π»Π°ΠΉΠ½-интСнсив «ПишСм микросСрвисный бэкСнд Π½Π° PHPΒ». На занятии:
— Познакомимся с понятиСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Docker ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ;
— Π‘Π»ΠΎΠΆΠΈΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° микросСрвис ΠΈ построим инфраструктуру для прилоТСния, состоящСго ΠΈΠ· Π΄Π²ΡƒΡ… микросСрвисов;
— Π£Π·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Nginx ΠΈ PHP-FPM Π² связкС ΠΈ Π²Π½Π΅Π΄Ρ€ΠΈΠΌ ΠΈΡ… Π² созданныС микросСрвисы.
>> Π Π•Π“Π˜Π‘Π’Π ΠΠ¦Π˜Π―

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹ Π² соврСмСнной Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ это Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠ³ΠΎ прилоТСния Π½Π° нСзависимыС систСмныС (linux) процСссы. ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ становится слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ синхронного процСсса, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ тянСт слишком ΠΌΠ½ΠΎΠ³ΠΎ зависимостСй ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ риск Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ Π² этой Π΄Π»ΠΈΠ½Π½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

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

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ взаимодСйствия

ΠžΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ:

1. Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎ β€” сСрвис Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ явно ΠΊΠ°ΠΊ Π²Π΅Π±-сСрвис ΠΏΠΎ HTTP/REST, дСлая Ρ€Π°Π±ΠΎΡ‚Ρƒ синхронно ΠΏΠΎ-старинкС, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π²Π΅Π±-сСрвСру, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΆΠ΄Ρ‘Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ajax)

2. Асинхронно β€” cСрвис Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ явно ΠΏΠΎ HTTP/REST, рСгистрируСтся Π·Π°Π΄Π°Ρ‡Π° ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ‚ΡƒΡ‚ ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ job ID. ΠšΠ»ΠΈΠ΅Π½Ρ‚ обязан сам ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ состояниС Π·Π°Π΄Π°Ρ‡ΠΈ, пСриодичСски ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ Ρƒ сСрвиса (polling, aws transcoder)

3. Асинхронно β€” сСрвис ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ (Π΄Π΅ΠΌΠΎΠ½) Π±Π΅Π· ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ доступа. Π‘Π»ΡƒΡˆΠ°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ рСсурс ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ

4. Асинхронно, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ MQ, рСгистрируСт ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ Π² сСбС ΠΈ сам Π·Π½Π°Π΅Ρ‚ ΠΊ ΠΊΠΎΠΌΡƒ ΠΊΡƒΠ΄Π° ΡΡ‚ΡƒΡ‡Π°Ρ‚ΡŒ

Π“Π»Π°Π²Π½ΠΎΠ΅ Ρ‡Ρ‚ΠΎ-Π±Ρ‹ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π±Ρ‹Π» Π΅Π΄ΠΈΠ½Ρ‹ΠΉ, с прСдсказуСмым Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… (JSON, protobuf, thrift, messagepack).Для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Π΄Ρ€ΡƒΠΆΠ±Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами, Π½Π°Π΄ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Consul, ETCDΠΈΠ»ΠΈ ZooKeeper β€” ΠΎΠ½ΠΈ позволят Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… IP адрСсов ΠΈ PID процСссов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

НапримСр ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ прилоТСния ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹.ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„Π°ΠΉΠ»Π° ΠΎΡ‡Π΅Π½ΡŒ тяТёлая ΠΏΠΎ CPU, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ нСсколько Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ·-Π·Π° Π΄ΠΎΠ»Π³ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… сСтСвых запросов ΠΏΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Допустим эта синхронная опСрация upload+resize+store Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 20 сСкунд Π² ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π’ микросСрвисном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²Ρ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сСрвис ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Π° для ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ сначала создаётС Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΡƒ Π² Π‘Π”. ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, это Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сСрвис ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈ Π½Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ основной сайт. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ практичСскиС вопросы β€” ΠΊΠ°ΠΊ это всё ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ? ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ, Ссли Ρ€Π°Π½ΡŒΡˆΠ΅ Π² ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ слои прилоТСния провСряли всё Π·Π° вас, Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‡ΡƒΡ‚ΡŒ Π»ΠΈ Π½Π΅ всС Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ классы Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сСрвисы Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ сам рСсайз ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ.

Π’Π΅Π±-сСрвис Π½Π° PHP

Если ваш сСрвис Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Π΅Π±-интСрфСйс, ΠΏΡ€ΠΎΡ‰Π΅ всСго Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ php Π² качСствС сСрвСра ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΈ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ запросу Π΄Ρ‘Ρ€Π³Π°Ρ‚ΡŒΡΡ. Π’ΡƒΡ‚ пригодятся ΠΌΠΈΠΊΡ€ΠΎ-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Ρ‚ΠΈΠΏΠ° Silex, SlimΠΈΠ»ΠΈ Lumen

Π”Π΅ΠΌΠΎΠ½-Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ Π½Π° PHP

Π₯отя php ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ разрабатывался ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ html Ρ„Π°ΠΉΠ»ΠΎΠ², соврСмСнный php ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² постоянном Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠ°ΠΊ сСрвис Ссли Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π² CLI Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, php Π΄Π΅ΠΌΠΎΠ½Ρ‹ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ ΠΈΠ·-Π·Π° ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти ΠΈ Π½Π΅ Ρ‚Π°ΠΊ эффСктивны ΠΏΠΎ скорости ΠΊΠ°ΠΊ сСрвисы Π½Π° nodejs ΠΈΠ»ΠΈ go. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π΅ΠΌΠΎΠ½ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки..

Π‘ Π΄Π΅ΠΌΠΎΠ½Π°ΠΌΠΈ Π΅ΡΡ‚ΡŒ нСсколько особСнностСй

Π£ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько экзСмпляров (instance) ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π΄Π΅ΠΌΠΎΠ½Π° Π² Π²ΠΈΠ΄Π΅ Ρ€Π°Π·Π½Ρ‹Ρ… процСссов. Π’ΠΎΠ³Π΄Π° ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ многопоточности β€” Π΄Π΅Π΄Π»ΠΎΠΊΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, запись Π² ΠΎΠ΄ΠΈΠ½ log Ρ„Π°ΠΉΠ» ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ задания. Обо всём этом Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅..

А ΠΏΠΎΠΊΠ°, Π²ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с бСсконСчным Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈ псСвдо-ΠΊΠΎΠ΄ΠΎΠΌ:

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссами

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° Π£Π–Π• Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅ΠΌΠΎΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ bash, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ самого php с использованиСм экзотичСских Ρ„Π»Π°Π³ΠΎΠ² Π² Π±Π°Π·Π΅, Ρ„Π»Π°Π³ΠΎΠ² Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ доступ ΠΊ shell. Π‘ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ, ΠΊΠΎΠΌΠΌΠ°Π½Π΄Ρƒ ΠΌΠΎΠΆΠ½ΠΎ смСло ΠΊΠ»Π°ΡΡ‚ΡŒ Π² cron ΠΈ Π΄Π΅ΠΌΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ (Ρ€Π°Π· Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ)

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π΅ΠΌΠΎΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈΠ· шСлла..

Для Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ³ΡƒΡ‡Π΅Π³ΠΎ nodejs, сущСствуСт ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ process manager, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈ php-Π΄Π΅ΠΌΠΎΠ½Π°ΠΌΠΈ! Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ сразу Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ процСссы Π΄Π΅ΠΌΠΎΠ½ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ:

ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΡ‰Π΅ β€” forever ΠΈ guvnor

ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ RabbitMQ

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

Для PHP-Π΄Π΅ΠΌΠΎΠ½ΠΎΠ², ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ rabbitMQ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ php-amqplib Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ бСсконСчный Ρ†ΠΈΠΊΠ» Π² этом случаС Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅Ρ‘..

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ сСрвис Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ†Π΅Π½Π½Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ сСрвисы Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сообщСния ΠΌΠΎΠΆΠ½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ сСрвису. НапримСр Ссли ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎΡΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π°Π΄ΠΎ ΠΎΠΏΠΎΠ²Π΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ UI.

ΠŸΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Ρ‹

Π‘ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ сСрвисы ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π° nodejs, Π° Π»ΡƒΡ‡ΡˆΠ΅ Π½Π° Go.

Π“Ρ€ΡƒΠ±ΠΎ говоря, Ссли ΠΏΡ€ΠΎΠ³Π½Π°Ρ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ тСст, Ρ‚ΠΎ с PHP Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ 300 req/s, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ с node 7000 req/s, Π° с go 9000 req/s.

Π‘ Go ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠ°Ρ‚ΡŒ Π² сторону go-micro




Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

Как Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΡƒΡ€Ρ‹ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ дня? МоТно Π»ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΎΠΏΠ°Π·Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ дня? МоТно Π»ΠΈ чатится Π²ΠΎ врСмя…

Π’Π°ΠΌ нравится, ΠΊΠΎΠ³Π΄Π° Ρƒ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³Π° ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆ развязаны Ρ€ΡƒΠΊΠΈ? Когда ΠΎΠ½ΠΈ ΠΆΠ³ΡƒΡ‚ ΠΏΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΏΡ€ΡƒΡ‚? Когда цСлСвая аудитория…

МногиС Π² курсС Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… запросах ΠΎΡ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΊ сСрвСру, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ стараСтся ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ число Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… запросов (ΠΏΠΎ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

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

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *