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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ, прСвращался ΠΈΠ· большого ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° Π² Π½Π°Π±ΠΎΡ€ микросСрвисов.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°Ρ‡Π°Π» свою ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ довольно Π΄Π°Π²Π½ΠΎ, Π² Π½Π°Ρ‡Π°Π»Π΅ 2000. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ вСрсии Π±Ρ‹Π»ΠΈ написаны Π½Π° Visual Basic 6. Π‘ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ стало понятно, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π° этом языкС Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ слоТно ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ IDE ΠΈ сам язык Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ слабо. Π’ ΠΊΠΎΠ½Ρ†Π΅ 2000-Ρ… Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ пСрспСктивный C#. Новая вСрсия писалась ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ старой, постСпСнно всС большС ΠΊΠΎΠ΄Π° Π±Ρ‹Π»ΠΎ Π½Π° .NET. Backend Π½Π° C# ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ориСнтировался Π½Π° ΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ использовались ΠΎΠ±Ρ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, Π΄Π° ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ сСрвисы Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ процСссС. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π»ΠΈ «сСрвисный ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Β».

Одним ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… прСимущСств Ρ‚Π°ΠΊΠΎΠΉ связки являлась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сСрвисов Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° Ρ‡Π΅Ρ€Π΅Π· внСшний API. ИмСлись явныС прСдпосылки ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ, Π° Π² пСрспСктивС ΠΈ ΠΌΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ.

Бвою Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 2015 Π³ΠΎΠ΄Ρƒ. Пока Π΅Ρ‰Π΅ ΠΌΡ‹ Π½Π΅ достигли идСального состояния β€” ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ части большого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°ΠΌΠΈ, Π½ΠΎ ΠΈ Π½Π° микросСрвисы ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, прогрСсс сущСствСнный.
О Π½Π΅ΠΌ я ΠΈ расскаТу Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅.

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

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

АрхитСктура ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ


Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° выглядСла ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: UI β€” ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, монолитная Ρ‡Π°ΡΡ‚ΡŒ написана Π½Π° Visual Basic 6, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° .NET прСдставляло собой Π½Π°Π±ΠΎΡ€ связанных сСрвисов, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с достаточно большой Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

НСдостатки ΠΏΡ€Π΅ΠΆΠ½Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

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

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

ΠΠ΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС рСсурсов
ΠŸΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ сСрвисов Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ процСссС ΠΌΡ‹ всСгда ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΎΡ‚ сСрвСра ΠΊ сСрвСру. Нам Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ сСрвисы ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ рСсурсы Π²ΠΏΡƒΡΡ‚ΡƒΡŽ, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ нашСй схСмой развСртывания.

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

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π΄Π°Ρ‡ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° самая ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” ΠΌΡ‹ Π²Ρ‹Π΄Π°Π²Π°Π»ΠΈΡΡŒ Ρ€Π΅Π»ΠΈΠ·Π°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ Π΄Π²Π° мСсяца.
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· прСвращался Π² Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ катастрофу для Π±Π°Π½ΠΊΠ°, нСсмотря Π½Π° тСстированиС ΠΈ усилия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². БизнСс ΠΏΠΎΠ½ΠΈΠΌΠ°Π», Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ Π½Π΅Π΄Π΅Π»ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. А Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΆΠ΄Π΅Ρ‚ нСдСля ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ².
Π–Π΅Π»Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π±Ρ‹Π»ΠΎ Ρƒ всСх.

ОТидания ΠΎΡ‚ микросСрвисов


Π’Ρ‹Π΄Π°Ρ‡Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ готовности. Π’Ρ‹Π΄Π°Ρ‡Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ готовности благодаря Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ отдСлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… процСссов.

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

Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ сСрвисов Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссах. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…, Π½ΠΎ большоС количСство сСрвисов, написанных Π½Π° .NET Framework, запускаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ Windows. БСйчас ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ сСрвисы Π½Π° .NET Core, Π½ΠΎ ΠΈΡ… ΠΏΠΎΠΊΠ° ΠΌΠ°Π»ΠΎ.

Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ развСртывания. Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвисы Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΌ, Π° Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ заставляСт ΠΊΠΎΠ΄.

ИспользованиС Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Π­Ρ‚ΠΎ интСрСсно Π»ΡŽΠ±ΠΎΠΌΡƒ программисту.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°


ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли Π±Ρ‹ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Π½Π° микросСрвисы Π±Ρ‹Π»ΠΎ просто, ΠΎΠ± этом Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π° конфСрСнциях ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π’ этом процСссС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉ, ΠΎΠΏΠΈΡˆΡƒ основныС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ мСшали Π½Π°ΠΌ.

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

На ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π±Ρ‹Π»ΠΎ Π±ΠΎΠ»Π΅Π΅ 500 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π±ΠΎΠ»Π΅Π΅ 700 тыс. строк ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ достаточно большоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° микросСрвисы Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ»ΠΎΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ.

Π’Ρ€Π΅Ρ‚ΡŒΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” отсутствиС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ инфраструктуры. ЀактичСски ΠΌΡ‹ занимались Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ исходного ΠΊΠΎΠ΄Π° Π½Π° сСрвСры.

Как ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΎΡ‚ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° ΠΊ микросСрвисам


Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ микросСрвисов

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

КакиС ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ способы для выдСлСния микросСрвисов?

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ β€” Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΊΠ°ΠΊ сСрвисы. Π’ этом ΠΏΠ»Π°Π½Π΅ Π½Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ: ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Π΅ слуТбы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ WCF. Они Π±Ρ‹Π»ΠΈ разнСсСны ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ сборкам. ΠœΡ‹ пСрСносили ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, добавляя ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сборкС нСбольшой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ запуска. Он Π±Ρ‹Π» написан с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Topshelf, которая позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ°ΠΊ сСрвис, ΠΈ ΠΊΠ°ΠΊ консоль. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ трСбуСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ.

Π‘Π»ΡƒΠΆΠ±Ρ‹ Π±Ρ‹Π»ΠΈ связаны ΠΏΠΎ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ использовали ΠΎΠ±Ρ‰ΠΈΠ΅ сборки ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с ΠΎΠ±Ρ‰Π΅ΠΉ Π‘Π”. Π˜Ρ… Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ микросСрвисами Π² чистом Π²ΠΈΠ΄Π΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ эти сСрвисы Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Π² Ρ€Π°Π·Π½Ρ‹Ρ… процСссах. Π£ΠΆΠ΅ это позволяло ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ влияниС ΠΈΡ… Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΎΡ‚ΠΊΠ°Π·Π°.

Π‘Π±ΠΎΡ€ΠΊΠ° с хостом β€” это всСго ΠΎΠ΄Π½Π° строчка ΠΊΠΎΠ΄Π° Π² классС Program. Π Π°Π±ΠΎΡ‚Ρƒ с Topshelf ΠΌΡ‹ спрятали Π²ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс.

namespace RBA.Services.Accounts.Host
{
   internal class Program
   {
      private static void Main(string[] args)
      {
        HostRunner<Accounts>.Run("RBA.Services.Accounts.Host");

       }
    }
}

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ выдСлСния микросСрвисов: ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Если ΠΏΡ€ΠΈ этом ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Π½Π΅ растСт, это ΡƒΠΆΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ, Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΡ‹ двигаСмся Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΌΡ‹ ΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сСрвисы. Если Π±Ρ‹Π»Π° такая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ ΠΌΡ‹ создавали сСрвисы Π±ΠΎΠ»Π΅Π΅ Β«ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π½Ρ‹Π΅Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ своСй модСлью Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

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

Π’Ρ€Π΅Ρ‚ΠΈΠΉ способ выдСлСния микросСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ спСцифичСн для нас. Π­Ρ‚ΠΎ вынСсСниС бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈΠ· UI-слоя. Π£ нас основноС UI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ дСсктопноС, ΠΎΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈ backend, написано Π½Π° C#. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ пСриодичСски ошибались ΠΈ выносили Π½Π° UI части Π»ΠΎΠ³ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² backend ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

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

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

РСальной Π»ΠΎΠ³ΠΈΠΊΠΈ UI Ρ‚Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСдняя ΠΏΠ°Ρ€Π° строк. ΠœΡ‹ Π΅Π΅ пСрСносили Π½Π° сСрвСр для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚Π΅ΠΌ самым ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ UI ΠΈ добиваясь ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

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

ΠžΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сСрвисов с ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½ΠΎ связано с понятиСм ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ контСкста. Π­Ρ‚ΠΎ понятиС ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования. Оно ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ участок Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ языка ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹. Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ контСкста страховок ΠΈ счСтов. Π£ нас ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² страховках ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со счСтом. ΠœΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π°ΠΉΠ΄Π΅Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ сборкС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс Β«Π‘Ρ‡Π΅Ρ‚Β», сдСлаСт ссылку Π½Π° Π½Π΅Π³ΠΎ ΠΈΠ· класса Β«Π‘Ρ‚Ρ€Π°Ρ…ΠΎΠ²ΠΊΠ°Β», ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ DRY Π±ΡƒΠ΄Π΅Ρ‚ соблюдСн, Π·Π°Π΄Π°Ρ‡Π° Π·Π° счСт использования ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ сдСлана быстрСС.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ оказываСтся, Ρ‡Ρ‚ΠΎ контСксты счСтов ΠΈ страховок связаны. Когда появятся Π½ΠΎΠ²Ρ‹Π΅ трСбования, эта связь Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, увСличивая ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π· Ρ‚ΠΎΠ³ΠΎ слоТной бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½ΡƒΠΆΠ½ΠΎ Π² ΠΊΠΎΠ΄Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ контСкстами ΠΈ ΡƒΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΡ… Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. НапримСр, контСксту страховок, Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ достаточно 20-Π·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° счСта Π¦Π‘ ΠΈ Π΄Π°Ρ‚Ρ‹ открытия счСта.

Π§Ρ‚ΠΎΠ±Ρ‹ эти ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ контСксты ΠΎΡ‚Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ процСсс выдСлСния микросСрвисов ΠΈΠ· ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΌΡ‹ использовали Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠ°ΠΊ созданиС Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния Π²Π½Π΅ΡˆΠ½ΠΈΡ… API. Если ΠΌΡ‹ Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Π°Ρ‚ΡŒ микросСрвисом, ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… процСсса, Ρ‚ΠΎ ΠΌΡ‹ сразу ΠΆΠ΅ Π΄Π΅Π»Π°Π»ΠΈ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π»ΠΎΠ³ΠΈΠΊΠΈ, которая ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌΡƒ контСксту, Ρ‡Π΅Ρ€Π΅Π· внСшниС Π²Ρ‹Π·ΠΎΠ²Ρ‹. НапримСр, Ρ‡Π΅Ρ€Π΅Π· REST ΠΈΠ»ΠΈ WCF.

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

Рассмотрим ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π£ нас Π΅ΡΡ‚ΡŒ понятиС оркСстратора β€” ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ «заявки». Он ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ создаСт ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, счСт ΠΈ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ. Если ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ счСт созданы ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π° созданиС ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»ΠΎΡΡŒ, заявка Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² статус Β«ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΒ» ΠΈ остаСтся Π² статусС Β«ΠΊΠ°Ρ€Ρ‚Π° Π½Π΅ создана». Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ фоновая Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…Π²Π°Ρ‚ΠΈΡ‚ Π΅Π΅ ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚. БистСма Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя находится Π² состоянии нСсогласованности, Π½ΠΎ нас это, Π² Ρ†Π΅Π»ΠΎΠΌ, устраиваСт.

Π’ случаС Ссли всС ΠΆΠ΅ появится ситуация, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ согласованно ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΡ‹, скорСС всСго, ΠΏΠΎΠΉΠ΄Π΅ΠΌ Π½Π° ΡƒΠΊΡ€ΡƒΠΏΠ½Π΅Π½ΠΈΠ΅ сСрвиса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ это Π² ΠΎΠ΄Π½ΠΎΠΌ процСссС.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ выдСлСния микросСрвиса. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ бСзопасно довСсти Π΅Π³ΠΎ Π΄ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½? Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ систСмы β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π½ΠΎΠ³ΠΎ обслуТивания, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· участков ΠΊΠΎΠ΄Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ микросСрвисным.

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

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ создаСм микросСрвис, пСрСписывая ΠΊΠΎΠ΄. Π£Π»ΡƒΡ‡ΡˆΠ°Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нас Π½Π΅ устраивали. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π½ΠΎΠ²Ρ‹Π΅ бизнСс-трСбования ΠΎΡ‚ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°. ДобавляСм Π² связку ΠΌΠ΅ΠΆΠ΄Ρƒ UI ΠΈ бэкСндом API Gateway, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ проброс Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

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

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ выпускаСм эту ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ, Π½ΠΎ Π² состоянии ΠΏΠΈΠ»ΠΎΡ‚Π°. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρƒ нас ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со старыми бизнСс-процСссами. Для Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠ³ΠΎ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ этот процСсс ΡƒΠΆΠ΅ Π½Π΅ содСрТит. По сути Ρƒ нас Π² Π²ΠΈΠ΄Π΅ ΠΏΠΈΠ»ΠΎΡ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ связка ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° ΠΈ микросСрвиса.

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

ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΏΠΈΠ»ΠΎΡ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ новая конфигурация Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ работоспособна, ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· уравнСния старый ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π½Π° мСстС старого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

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

Π˜Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ практичСски всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ раздСлСния исходного ΠΊΠΎΠ΄Π° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°. ВсС ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ частСй прилоТСния ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° Π½ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, дСлая Π±ΠΎΠ»Π΅Π΅ качСствСнный исходный ΠΊΠΎΠ΄.

Π Π°Π±ΠΎΡ‚Π° с Π‘Π”


Π‘Π” поддаСтся Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ исходный ΠΊΠΎΠ΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ содСрТит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ схСму, Π½ΠΎ ΠΈ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹Π΅ историчСскиС Π΄Π°Π½Π½Ρ‹Π΅.

Π£ нашСй Π‘Π”, ΠΊΠ°ΠΊ ΠΈ Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π±Ρ‹Π» Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½Ρ‹ΠΉ нСдостаток β€” ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π­Ρ‚Ρƒ Π‘Π” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π² соотвСтствии с Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°, ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… контСкстов накопились связи.

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

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ‚ΠΎ самоС Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ контСксты Π² ΠΊΠΎΠ΄Π΅. Оно, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ достаточно Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌΡƒ контСксту, Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

ΠœΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ Π΄Π²Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… способа раздСлСния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…: ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ.

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

ΠžΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° бизнСс-модСль сильно помСнялась, ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡƒΠΆΠ΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нас Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚.

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

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

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

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ участок ΠΊΠΎΠ΄Π°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с отдСляСмыми Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, с ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ микросСрвис ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ процСссС, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвис со связью с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° ΠΈ Ρ‚Π΅ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ относятся нСпосрСдствСнно ΠΊ Π½Π΅ΠΌΡƒ. ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚ Π΅Ρ‰Π΅ взаимодСйствуСт Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ с отдСляСмой Ρ‡Π°ΡΡ‚ΡŒΡŽ.

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

ПозднСС ΠΌΡ‹ ΡƒΠ±Π΅Ρ€Π΅ΠΌ эту связь, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠ³ΠΎ прилоТСния ΠΈΠ· отдСляСмых Ρ‚Π°Π±Π»ΠΈΡ† Ρ‚ΠΎΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅ΠΌ Π½Π° API.

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

Π”Π°Π»Π΅Π΅ Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ ΠΈΠ· ΠΎΠ±Ρ‰Π΅ΠΉ Π‘Π” Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠ²Ρ‹ΠΉ микросСрвис. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ вынСсти Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ схСму ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π‘Π”. ΠžΡΡ‚Π°Π»Π°ΡΡŒ связь Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ микросСрвисом ΠΈ Π‘Π” ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°, Π½ΠΎ Π² этом Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ, Π² Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΆΠΈΡ‚ΡŒ достаточно Π΄ΠΎΠ»Π³ΠΎ.

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

ПослСдний шаг β€” ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ всС связи. Π’ этом случаС Π½Π°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, потрСбуСтся миграция Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ основной Π±Π°Π·Ρ‹. Иногда ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°Π·Π°Ρ… ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… систСм Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ справочники. Π£ нас это пСриодичСски встрСчаСтся.

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

ΠžΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ΄Π΅Ρ‚ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. Π£ нас сразу ΠΆΠ΅ выдСляСтся новая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ микросСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ взаимодСйствуСт с ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· API. Но ΠΏΡ€ΠΈ этом остаСтся Π½Π°Π±ΠΎΡ€ Ρ‚Π°Π±Π»ΠΈΡ† Π‘Π”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. Он Π½Π°ΠΌ большС Π½Π΅ потрСбуСтся, Π² Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΡ‹ Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ.

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

Π§Ρ‚ΠΎΠ±Ρ‹ эта схСма Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°, Π½Π°ΠΌ, скорСС всСго, потрСбуСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄.

Π”Π°Π»Π΅Π΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

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

Π’Ρ‚ΠΎΡ€ΠΎΠΉ: раздСляСм Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ бизнСс-ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ. НапримСр, Ρƒ нас Π² систСмС Π±Ρ‹Π»ΠΎ 5 ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранятся Π² старой Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. ШСстой Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π½ΠΎΠ²ΠΎΠΉ бизнСс-Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² Π½ΠΎΠ²ΡƒΡŽ Π‘Π”. Но Π½Π°ΠΌ понадобится API Gateway, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ синхронизируСт эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΈ Ρ‡Ρ‚ΠΎ Π±Ρ€Π°Ρ‚ΡŒ.

Оба ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅, Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ Π² зависимости ΠΎΡ‚ ситуации.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ убСдимся, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ со старыми структурами Π‘Π”, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ.

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

ПослСдним шагом Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ старых структур Π΄Π°Π½Π½Ρ‹Ρ….

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

Подводя ΠΈΡ‚ΠΎΠ³ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ нас ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π‘Π”: слоТно с Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с исходным ΠΊΠΎΠ΄ΠΎΠΌ, Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ слоТнСС, Π½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½ΡƒΠΆΠ½ΠΎ. ΠœΡ‹ нашли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ это Π΄Π΅Π»Π°Ρ‚ΡŒ достаточно бСзопасно, всС ΠΆΠ΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ с исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Π Π°Π±ΠΎΡ‚Π° с исходным ΠΊΠΎΠ΄ΠΎΠΌ


Π’ΠΎΡ‚ Ρ‚Π°ΠΊ выглядСла схСма исходного ΠΊΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

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

Π•Π΅ условно ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° Ρ‚Ρ€ΠΈ слоя. Π­Ρ‚ΠΎ слой запускаСмых ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², сСрвисов ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… активностСй. ЀактичСски, это Π±Ρ‹Π»ΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. ВсС ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π½Π°ΠΌΠ΅Ρ€Ρ‚Π²ΠΎ скрСплСны слоСм Common. Π’ Π½Π΅ΠΌ Π±Ρ‹Π»Π° бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ°, которая использовалась сСрвисами совмСстно, ΠΈ мноТСство связСй. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ использовал Π΄ΠΎ 10 ΠΈ Π±ΠΎΠ»Π΅Π΅ common-сборок, Π² зависимости ΠΎΡ‚ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ совСсти Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Нам ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, Ρƒ нас Π±Ρ‹Π»ΠΈ инфраструктурныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

Иногда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° ситуация, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π‘ommon-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΠ»ΠΈΡΡŒ ΠΊ этому слою, Π° Π±Ρ‹Π»ΠΈ инфраструктурными Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Π»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ всСго бСспокойства Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ контСксты. Π‘Ρ‹Π²Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ 3-4 контСкста смСшивались Π² ΠΎΠ΄Π½ΠΎΠΉ сборкС Common ΠΈ использовали Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΈΡ… бизнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. НСобходимо Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π³Π΄Π΅ это ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌ, ΠΈ Ρ‡Ρ‚ΠΎ дальшС Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ΠΎΠΌ этого раздСлСния Π½Π° сборки исходного ΠΊΠΎΠ΄Π°.

ΠœΡ‹ сформулировали нСсколько ΠΏΡ€Π°Π²ΠΈΠ» для процСсса раздСлСния ΠΊΠΎΠ΄Π°.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅: ΠΌΡ‹ большС Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ совмСстного использования бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами, активностями ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ. Π₯ΠΎΡ‚Π΅Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ нСзависимой Π² Ρ€Π°ΠΌΠΊΠ°Ρ… микросСрвисов. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, микросСрвисы, Π² идСальном случаС, Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нСзависимо. Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ нСсколько расточитСлСн, Π΄Π° ΠΈ Π΄ΠΎΡΡ‚ΠΈΠ³Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ слоТно, вСдь, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сСрвисы Π½Π° C# Π±ΡƒΠ΄ΡƒΡ‚ Π² любом случаС соСдинСны стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. Наша систСма написана Π½Π° Π‘#, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠΎΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ сСбС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ тСхничСскиС сборки. Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½ΠΈΡ… Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ удобная ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° Π½Π°Π΄ ORM, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, Ρ‚ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΈΠ· сСрвиса Π² сСрвис ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΡ€ΠΎΠ³ΠΎ.

Наша ΠΊΠΎΠΌΠ°Π½Π΄Π° являСтся ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования, поэтому «луковая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Β» Π½Π°ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ подошла. Основой Π² Π½Π°ΡˆΠΈΡ… сСрвисах стал Π½Π΅ data access layer, Π° сборка с Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, которая содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ лишСна связСй с инфраструктурой. ΠŸΡ€ΠΈ этом ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ нСзависимо Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½Π½ΡƒΡŽ сборку для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанных с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ.

На этом этапС ΠΌΡ‹ встрСтили ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. БСрвис Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ Π΄ΠΎΠΌΠ΅Π½Π½ΡƒΡŽ сборку, Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСзависимой, ΠΈ Π½Π°ΠΌ Ρ‚ΡƒΡ‚ сильно мСшал ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ DRY. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ для избСТания дублирования ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы ΠΈΠ· сосСдних сборок, ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄ΠΎΠΌΠ΅Π½Ρ‹ снова Π½Π°Ρ‡Π°Π»ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ΠœΡ‹ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π»Π΅ΠΆΠΈΡ‚ Π΅Ρ‰Π΅ ΠΈ Π² области устройства Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° исходного ΠΊΠΎΠ΄Π°. Π£ нас имСлся большой Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π»Π΅ΠΆΠ°Π»ΠΈ всС исходныС ΠΊΠΎΠ΄Ρ‹. Solution для всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½Π° локальной машинС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для частСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° создавались ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ малСнькиС solution, ΠΈ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π» Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½ΠΈΡ… ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π‘ommon- ΠΈΠ»ΠΈ Π΄ΠΎΠΌΠ΅Π½Π½ΡƒΡŽ сборку ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ЕдинствСнный инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ позволял Π½Π°ΠΌ этого Π΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΊΠΎΠ΄ Ρ€Π΅Π²ΡŒΡŽ. Но ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ ΠΎΠ½ Π΄Π°Π²Π°Π» сбои.

Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° модСль с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ рСпозиториями. БизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° пСрСстала ΡƒΡ‚Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ· сСрвиса Π² сСрвис, Π΄ΠΎΠΌΠ΅Π½Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ стали нСзависимыми. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ контСксты ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ясно. Как ΠΏΡ€ΠΈ этом ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ инфраструктурныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ? ΠœΡ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π·Π°Ρ‚Π΅ΠΌ помСстили Π² Nuget-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ Π² Artifactory. ΠŸΡ€ΠΈ любом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ сборка ΠΈ публикация происходит автоматичСски.

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

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

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

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, работая Π½Π°Π΄ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ раздСляя Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ наши сСрвисы Π±ΠΎΠ»Π΅Π΅ нСзависимыми.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ инфраструктуры


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

Ручная установка Π² срСды

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° срСды ΠΌΡ‹ устанавливали Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот процСсс, ΠΌΡ‹ создали CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. Π’Ρ‹Π±Ρ€Π°Π»ΠΈ процСсс continuous delivery, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ continuous deployment для нас ΠΏΠΎΠΊΠ° Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния бизнСс-процСссов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅, Π° Π½Π° тСстированиС β€” автоматичСски.

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

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Atlassian, Bitbucket для хранСния исходных ΠΊΠΎΠ΄ΠΎΠ² ΠΈ Bamboo для сборки. Нам нравится ΠΏΠΈΡΠ°Ρ‚ΡŒ сборочныС скрипты Π½Π° Cake, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый C#. Π’ Artifactory приходят ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΈ Ansible автоматичСски ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° тСстовыС сСрвСры, послС Ρ‡Π΅Π³ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ сразу Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

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

РаздСльноС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅


Π’ своС врСмя, ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΈΠ΄Π΅ΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° Π±Ρ‹Π»ΠΎ обСспСчСниС совмСстного логирования. Нам Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π»ΠΎΠ³Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π½Π° дисках. Π›ΠΎΠ³ΠΈ Ρƒ нас ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹. ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартный ELK-стСк. НС стали ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ELK Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹, Π° Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ тСкстовыС Π»ΠΎΠ³ΠΈ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Π½ΠΈΡ… ID трассировки Π² Π²ΠΈΠ΄Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, добавляя имя сСрвиса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти Π»ΠΎΠ³ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ.

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

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Filebeat ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ наши Π»ΠΎΠ³ΠΈ с сСрвСров, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Kibana ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ запросы Π² UI ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ шСл Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами. Π’ этом сильно ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ID трассировки.

ВСстированиС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° связанных сСрвисов


Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, ΠΊΠ°ΠΊ Π½Π°ΠΌ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ сСрвисы. Π‘ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ΠΎΠΌ всС Π±Ρ‹Π»ΠΎ просто, ΠΌΡ‹ запускали Π΅Π³ΠΎ Π½Π° локальной машинС. Π‘Π½Π°Ρ‡Π°Π»Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ с микросСрвисами, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ запуска ΠΎΠ΄Π½ΠΎΠ³ΠΎ микросСрвиса Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π° это Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ΠœΡ‹ поняли, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ оставляСм Π½Π° локальной машинС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСрвис Π»ΠΈΠ±ΠΎ сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ сСрвисы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ с сСрвСров, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с prod. ПослС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΏΡ€ΠΈ тСстировании, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° тСстовый сСрвСр Π²Ρ‹Π΄Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ сСрвисы. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, тСстируСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ окаТСтся Π½Π° ΠΏΡ€ΠΎΠ΄Π΅.

Π•ΡΡ‚ΡŒ сСрвСры, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стоят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ production-вСрсии сСрвисов. Π­Ρ‚ΠΈ сСрвСры Π½ΡƒΠΆΠ½Ρ‹ Π½Π° случай ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ², для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ поставки ΠΏΠ΅Ρ€Π΅Π΄ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ ΠΈ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΉ.

Π£ нас добавился процСсс автоматичСского тСстирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ популярной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Specflow. ВСсты Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ автоматичСски с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ NUnit сразу послС развСртывания ΠΈΠ· Ansible. Если ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ автоматичСскоС, Ρ‚ΠΎ Π½Π΅Ρ‚ нСобходимости Π² Ρ€ΡƒΡ‡Π½ΠΎΠΌ тСстировании. Π₯отя ΠΈΠ½ΠΎΠ³Π΄Π° всС-Ρ‚Π°ΠΊΠΈ трСбуСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€ΡƒΡ‡Π½ΠΎΠ΅ тСстированиС. Для опрСдСлСния, ΠΊΠ°ΠΊΠΈΠ΅ тСсты Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π΅Π³ΠΈ Π² Jira.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ выросла ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠΌ тСстировании, Ρ€Π°Π½Π΅Π΅ ΠΎΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях. Для запуска тСстов ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ JMeter, для ΠΈΡ… хранСния β€” InfluxDB, Π° для построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² процСсса β€” Grafana.

Π§Π΅Π³ΠΎ ΠΌΡ‹ добились?


Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ избавились ΠΎΡ‚ понятия Β«Ρ€Π΅Π»ΠΈΠ·Β». Π˜ΡΡ‡Π΅Π·Π»ΠΈ двухмСсячныС монструозныС Ρ€Π΅Π»ΠΈΠ·Ρ‹, ΠΊΠΎΠ³Π΄Π° эта ΠΌΠ°Ρ…ΠΈΠ½Π° Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ Π² production-срСдС, ломая Π½Π° врСмя бизнСс-процСссы. БСйчас ΠΌΡ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ сСрвисы Π² срСднСм ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 1,5 дня, группируя ΠΈΡ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ ΠΎΠ½ΠΈ выходят послС согласования.

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

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ схСмой развСртывания. МоТно Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ сСрвисов ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ссли Π² этом Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ сущСствСнно ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с большой ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΡŽ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ. Π£ нас появились ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Ρ‡Π°ΡΡ‚ΡŒΡŽ сСрвисов нСзависимо. Π’ΡƒΡ‚ ΡƒΠΆΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Scrum-процСсс. Π£ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π»Π°Π΄Π΅Π»Π΅Ρ† ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ставит Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

РСзюмС

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

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

    P.S. Π‘ΠΎΠ»Π΅Π΅ ΡΠΌΠΎΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ рассказ (ΠΈ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π»ΠΈΡ‡Π½ΠΎ Π²Π°ΠΌ) – ΠΏΠΎ ссылкС.
    Π—Π΄Π΅ΡΡŒ полная вСрсия Π΄ΠΎΠΊΠ»Π°Π΄Π°.

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

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