ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°

p{ "title": "ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°: практичСскоС руководство для Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°", "keywords": "микросСрвисная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ vs микросСрвисы, API Gateway, Docker, Kubernetes, Π±Ρ€ΠΎΠΊΠ΅Ρ€Ρ‹ сообщСний, RabbitMQ, Kafka, Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅", "description": "Π“Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ Ρ€Π°Π·Π±ΠΎΡ€ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹: ΠΎΡ‚ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ распрСдСлённой систСмы. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, тСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ, стандарты ΠΈ практичСскиС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².", "html_content": "

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ ΡΡ‚Ρ€ΠΎΠΈΡˆΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½. Π’ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ β€” это ΠΎΠ΄ΠΈΠ½ гигантский Β«ΠΊΠΎΠΌΠ±Π°ΠΉΠ½Β»: ΠΊΠΎΡ€Π·ΠΈΠ½Π°, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ ΠΈ авторизация β€” всё Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ β€” ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ вСсь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. А ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ 10 000 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ ΠΏΠ°Π΄Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π°Ρ‡Π°Π» ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ всю ΠΏΠ°ΠΌΡΡ‚ΡŒ.

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹ β€” это ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ бизнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» становится ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ, нСзависимым сСрвисом: свой ΠΊΠΎΠ΄, своя Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, свой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. НиТС Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈ с Ρ‡Π΅ΠΌ придётся ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ.

πŸ”§ Π§Π΅ΠΌ микросСрвисы ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° β€” тСхничСски

Π“Π»Π°Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ β€” Π² способС развёртывания ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. Π’ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π΅ всё ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€” ΠΎΠ΄ΠΈΠ½ процСсс (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Java WAR-Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Node.js с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ). Π”Π°ΠΆΠ΅ простой Π±Π°Π³ Π² Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€ΡƒΡˆΠΈΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ‘ΠΆΠ½Ρ‹ΠΉ шлюз.

Π’ микросСрвисах ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис β€” свой процСсс со своим ΠΏΠΎΡ€Ρ‚ΠΎΠΌ, часто Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сСрвис Β«ΠšΠΎΡ€Π·ΠΈΠ½Π°Β» ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎ 20 инстансов, Π° Β«ΠšΠ°Ρ‚Π°Π»ΠΎΠ³Β» ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π° 3 β€” Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½Π°, ΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ просто Π½Π΅ способСн Π½Π° Ρ‚Π°ΠΊΠΎΠ΅. Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” стСк Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ: для ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСрвиса ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ Python ΠΈ FastAPI, для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ β€” Golang, Ссли Ρ‚Π°ΠΌ Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ парсинга, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ β€” Π½Π° Ruby for quick CRUD.

πŸ“¦ ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ β€” Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ микросСрвисов

Никакой микросСрвис Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сам ΠΏΠΎ сСбС β€” Π½ΡƒΠΆΠ΅Π½ Π»Ρ‘Π³ΠΊΠΈΠΉ ΠΈ воспроизводимый способ Π΅Π³ΠΎ запуска. Docker здСсь стал стандартом Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис пакуСтся Π² ΠΎΠ±Ρ€Π°Π·, Π³Π΄Π΅ зафиксирована вСрсия Python, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚. ΠžΠ±Ρ€Π°Π· Π½Π΅ зависит ΠΎΡ‚ хост-систСмы.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ β€” ΠΎΠ±Ρ€Π°Π· вСсит ΠΏΠΎΠ΄ 2 Π“Π‘, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‡ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСсборки гигантского Dockerfile. А Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для микросСрвиса «УвСдомлСния»:

Π‘Ρ€Π°Π²Π½ΠΈ с ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² 3 Π“Π‘. Π Π°Π·Π½ΠΈΡ†Π° Π² скорости поставки β€” Π² Ρ€Π°Π·Ρ‹. Kubernetes (k8s) управляСт оркСстрациСй: ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, слСдит Π·Π° Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅ΠΌ, пСрСзапускаСт ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ, балансируСт Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Π‘ΠΎΠ»Π΅Π΅ 70% производствСнных микросСрвисных систСм Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ… k8s.

πŸ—£ ΠšΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами β€” синхронная ΠΈ асинхронная

Когда Ρƒ тСбя 15 микросСрвисов, ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ. Π•ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, ΠΈ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ ΠΈΡ… β€” Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Π°Ρ ошибка.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: сСрвис Β«ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΡ€Π΅Π΄ΠΈΡ‚Π°Β» Π² Ρ„ΠΈΠ½Ρ‚Π΅Ρ…Π΅. Π”Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Kafka-Ρ‚ΠΎΠΏΠΈΠΊ, Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ модСлью скоринга. ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ ΠΆΠ΄Ρ‘Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° β€” ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· 10–15 ΠΌΠΈΠ½ΡƒΡ‚. Π­Ρ‚ΠΎ Π½Π΅ Π±Π°Π³, это Ρ„ΠΈΡ‡Π° β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ Β«loading...Β». БрСдняя Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π΅ β€” 35 мс ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΎΠΏΠΈΠΊΠ°ΠΌΠΈ.

πŸ›‘ API Gateway β€” «входная Π΄Π²Π΅Ρ€ΡŒΒ» для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²

Если ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ микросСрвис Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π°Ρ€ΡƒΠΆΡƒ, Π±ΡƒΠ΄Π΅ΡˆΡŒ ΠΌΠ΅Π½ΡΡ‚ΡŒ API Ρƒ 10 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСрвиса ΠΈ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ 3 дня Π½Π° согласования. Π­Ρ‚Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ API Gateway β€” Сдиная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° для Π²Π΅Π±-прилоТСния ΠΈΠ»ΠΈ мобильного ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Gateway ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ запросы: /api/users -> UserService, /api/catalog -> CatalogService. Он ΠΆΠ΅ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅: вмСсто 5 запросов ΠΎΡ‚ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° β€” ΠΎΠ΄ΠΈΠ½. Π’ΠΈΠΏΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: Kong, NGINX Plus, Ambassador. Ngixn with Lua β€” 2–5 мс Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ. Kong добавляСт ΠΎΠΊΠΎΠ»ΠΎ 3 мс Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ (авторизация, Π»ΠΈΠΌΠΈΡ‚Ρ‹, Π»ΠΎΠ³ΠΈ).

Бтатистика послС внСдрСния API Gateway: Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ β€” ~8 мс, Π° вмСсто 30 Ρ€Π°Π·Π½Ρ‹Ρ… API-ΠΊΠ»ΡŽΡ‡Π΅ΠΉ β€” ΠΎΠ΄ΠΈΠ½. Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΎΡ‰Π΅ β€” всС ΠΏΡ€Π°Π²ΠΈΠ»Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ собраны Π² ΠΎΠ΄Π½ΠΎΠΌ слоС.

βš™οΈ Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ распрСдСлённыС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Π’ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π΅ β€” ΠΎΠ΄Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, join β€” ΠΈ ΠΎΠΊ. Π’ микросСрвисах β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис ΠΈΠΌΠ΅Π΅Ρ‚ свою Π±Π°Π·Ρƒ: UserService β€” PostgreSQL, OrderService β€” MongoDB, NotificationService β€” Redis (для кэша). Π­Ρ‚ΠΎ называСтся Database-per-service. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ получится просто SELECT order.*, user.name JOIN β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· API-запрос ΠΊ сСрвису ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

По трСбованиям ACID (Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ, изоляция, Π΄ΠΎΠ»Π³ΠΎΠ²Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ) β€” Ρ‡Π°Ρ‰Π΅ ΠΆΠ΅Ρ€Ρ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ доступности (Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ° CAP). На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅: вмСсто Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½ΠΎΠΉ фиксации (2PC) β€” Eventual consistency (ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ). Π­Ρ‚ΠΎ Π½Π΅ ΠΊΠΎΡΡ‚Ρ‹Π»ΡŒ, Π° осознанный компромисс: Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ обязан ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

πŸ“‰ Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ β€” ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ

НС Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ банальноС «слСди Π·Π° CPUΒ». Для микросСрвисов ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

НапримСр, Π² финансовом ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ послС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° "P99 latency" Π½Π°Ρ‚ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π½Π° SQL-запрос Π±Π΅Π· индСкса Π² Mongo, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполнялся 1.2 сСкунды. ИндСкс сократил Π΄ΠΎ 4 мс β€” P99 ΡƒΠΏΠ°Π» с 1100 мс Π΄ΠΎ 85 мс. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈ эффСктивно.

πŸ€” Когда микросСрвисы Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ β€” ΠΈ чСстный Ρ€Π°Π·Π±ΠΎΡ€ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²

Нарратив «микросСрвисы β€” Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для любого стартапа» β€” Π²Ρ€Π΅Π΄Π½Ρ‹ΠΉ ΠΌΠΈΡ„. Если Ρƒ тСбя Π΄ΠΎ 50 000 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ β€” ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅, дСшСвлС ΠΈ быстрСС. Π’ΠΎΡ‚ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ микросСрвисы:

1. Команда мСньшС 6 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° 10 сСрвисов с CI/CD ΠΈ Kafka Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. 2. Π”Π΅ΠΏΠ»ΠΎΠΉ Π½Π° СдинствСнный сСрвСр (VPS) β€” Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄ Π½Π° network-Π»Π°Ρ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ. 3. Частота ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ низкая (2 Ρ€Π΅Π»ΠΈΠ·Π°/мСсяц) β€” микросСрвисы для Π³ΠΈΠ±ΠΊΠΎΠΉ поставки Π½Π΅ пригодятся. 4. НСт ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-ΠΎΠΏΡ‹Ρ‚Π° с Docker/k8s β€” Π½Π°Ρ‡Π°Π»ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ.

ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ β€” Ρ‡Ρ‘Ρ‚ΠΊΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎ ΠΏΠ°ΠΏΠΊΠ°ΠΌ/ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌ систСмам (namespace Π² Go, packages Π² Python). Когда ΠΌΠΎΠ΄ΡƒΠ»ΠΈ сильно растут β€” сплит Π½Π° сСрвисы с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ измСнСниями схСмы. Π­Ρ‚ΠΎ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ evolutionary architecture β€” Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° развиваСтся вмСстС с бизнСсом, Π° Π½Π΅ проСктируСтся сразу ΠΏΠΎΠ΄ 100 ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… сотрудников.

Основной Π²Ρ‹Π²ΠΎΠ΄: микросСрвисы Π΄Π°ΡŽΡ‚ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΡƒΡŽ ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ β€” Π½ΠΎ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° это ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, инфраструктурой ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ. Если Ρ‚Ρ‹ Π³ΠΎΡ‚ΠΎΠ² ΠΏΠΈΡΠ°Ρ‚ΡŒ компСнсационныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ kafka rebalance ΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ Jaeger β€” это Ρ‚Π²ΠΎΠΉ инструмСнт. Если Π½Π΅Ρ‚ β€” Π½Π°Ρ‡Π½ΠΈ с ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ дСшСвлС.

" }

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ: 23.04.2026