πŸ—ΏπŸ”¨ Как ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΠ»ΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ Π½Π° малСнькиС кусочки ΠΈ Ρ‡Ρ‚ΠΎ ΠΈΠ· этого Π²Ρ‹ΡˆΠ»ΠΎ

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ подСлимся своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, расскаТСм ΠΎ прСимущСствах микросСрвисов ΠΈ Ρ€ΠΎΠ»ΠΈ Domain-Driven Design Π² этом процСссС.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ микросСрвисам ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠΌ компаниям Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ кастомизации ΠΈ Π»Π΅Π³Ρ‡Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ шагом для создания Π±ΠΎΠ»Π΅Π΅ конкурСнтоспособного ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Π’ Ρ‡Π΅ΠΌ ΠΆΠ΅ основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ΠΎΠ²? ΠŸΡ€ΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΌΡ‹ создаСм Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ. Π§Ρ‚ΠΎΠ±Ρ‹ внСсти измСнСния, приходится ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. Π­Ρ‚ΠΎ сниТаСт Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ всС части зависят Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, поэтому ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ слоТнСС, ΠΊΠ°ΠΊ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ.

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ микросСрвисная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ разбиваСтся Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ части. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис занимаСтся своСй Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния ΠΌΠΎΠΆΠ½ΠΎ быстро ΠΈ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу, ΠΊΠ°ΠΊ приняли Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅, ΠΈ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ, ΠΊΠ°ΠΊ ΠΊ Π½Π΅ΠΌΡƒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ исходной ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹

Π˜Ρ‚Π°ΠΊ, Π΄Π°Π½ΠΎ: ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π»ΠΎΡΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ β€” ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΡ‹ использовали Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΡƒΡŽ модСль. Основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ·-Π·Π° отсутствия Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ³ΠΎ проСктирования ΠΈ ΠΈΠ·-Π·Π° слоТной бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π² ΠΊΠΎΠ΄Π΅ Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ошибок. ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΎ это ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚Ρƒ ΠΈ постоянной смСнС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² бэкСнда.

Π‘Ρ‹Π»ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ слоТности:

1. БлоТности ΠΏΡ€ΠΈ внСсСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

Из-Π·Π° тСсной связанности всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π΄Π°ΠΆΠ΅ нСбольшиС измСнСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π»ΠΎΡΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒΡΡ Π² бэкСнд, вызывая сбои Π² Ρ€Π°Π±ΠΎΡ‚Π΅ всСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

2. Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ тСстирования

ВнСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹Π΅ систСмы Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… тСстов, это замСдляло процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ внСдрСния Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

3. Низкая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π² ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹Ρ… систСмах β€” Π·Π°Π΄Π°Ρ‡Π° нСпростая, Π° это влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ развития ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π² Ρ†Π΅Π»ΠΎΠΌ.

4. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ кастомизации

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π½ΡƒΠΆΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ бонусы Π·Π° Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π΄Ρ€ΡƒΠ·Π΅ΠΉ. Для этого Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ внСсти измСнСния Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π΅Ρ„Π΅Ρ€Π°Π»ΠΎΠ², Π½ΠΎ ΠΈ Π² ΠΊΠΎΠ΄ для расчСта бонусов, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс.

♾️ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° devops’а
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° devops’а»

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ, ΠΌΡ‹ занялись Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΎΠΉ β€” Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΡ†Π΅Π½ΠΈΠ»ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ бизнСса ΠΈ тСхнологичСского стСка. Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΎ Π² сСбя нСсколько этапов.

ΠŸΠ΅Ρ€Π΅Π΄ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ сформировали ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ соотносятся с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌΠΈ бизнСс-процСссами. Π—Π°Ρ‚Π΅ΠΌ Π±Ρ‹Π» Π²Ρ‹Π±ΠΎΡ€ инструмСнтов (инфраструктура: Docker, Kubernetes, Istio), внСшний API ΠΈ Ρ‚.Π΄.

ПослС этого ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΊ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ стСком. УбСдились, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Π½ΠΎΠ²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ с ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ стСком. И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ: распланировали ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ для внСдрСния микросСрвисов.

Π’Π΅ΡΡŒ процСсс ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π½Π° микросСрвисы занял ΠΎΠΊΠΎΠ»ΠΎ Π³ΠΎΠ΄Π°.

Domain-Driven Design ΠΈ микросСрвисы

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… Domain-Driven Design (DDD) ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования.

Π’ Domain-Driven Design, экспСрты ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, вСдь ΠΎΠ½ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ всСх ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Π΅ бизнСс-процСссы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдстоит ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² процСссС общСния экспСртов ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² формируСтся, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ, ubiquitous language. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ обсуТдСниС происходит Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅, понятного всСм языка. Π’Π— ΠΈ ΠΊΠΎΠ΄ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π° Π½Π΅ΠΌ ΠΆΠ΅.

ΠšΡ€ΠΎΠΌΠ΅ использования Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ языка, DDD Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΈ, это использованиС Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Π² ΠΊΠΎΠ΄Π΅, Π·Π°Ρ‰ΠΈΡ‚Π° нСзависимости ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… областСй, тСхничСских аспСктов ΠΈ Ρ‚. Π΄.

Π£ DDD Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ прСимущСств. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. Благодаря ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ ubiquitous language, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ общСпринятыС ΠΈ понятныС всСм Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹.

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

ДомСнная модСль ΠΈ ubiquitous language ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ контСкстом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Domain-Driven Design называСтся bounded context. Он ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎΠΌΠ΅Π½Π½ΡƒΡŽ модСль Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС понятия Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ Π±Ρ‹Π»ΠΈ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΌΠΈ, ΠΈ всС ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, ΠΎ Ρ‡Ρ‘ΠΌ ΠΈΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ.

ИспользованиС DDD ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π·ΠΎΠ½Ρ‹ отвСтствСнности ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ

Π˜Ρ‚Π°ΠΊ, послС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΈ планирования, ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ. НиТС шаги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ прСдприняли, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° микросСрвисы с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… Π³Ρ€Π°Π½ΠΈΡ† ΠΈ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ.

Врудности ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡΠ΅Ρ€Π²ΠΈΡΡ‹

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

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, это ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»Π½ΠΎΠΉ Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒΡŽ микросСрвисов ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°. Π’Π°ΠΆΠ½ΠΎ Π½Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π° Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ всС микросСрвисы Π½Π°Ρ‡Π°Π»ΠΈ ΠΎΡ‚Π»Π°ΠΆΠ΅Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈ прСимущСства ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°

НСсмотря Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ, миграция Π±Ρ‹Π»Π° нСпростая, Π° трудности, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π»ΠΈ, достойны ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅ хочСтся Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Π˜Ρ‚Π°ΠΊ, Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ добились Π² ΠΈΡ‚ΠΎΠ³Π΅:

1. Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ

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

2. ΠŸΠΎΠ²Ρ‹ΡΠΈΠ»ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ микросСрвис ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ нСзависимо, это Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивно Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ запросов.

3. Упростили обслуТивания систСмы

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

4. Π‘ΠΎΠ·Π΄Π°Π»ΠΈ ΠΈ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ стандарты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ΠœΡ‹ создали ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для бизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠ², Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ DevOps-​​инТСнСров. Для этого использовали Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ASCII doc, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Plantuml. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ "докумСнтация ΠΊΠ°ΠΊ ΠΊΠΎΠ΄", докумСнтация остаСтся ΠΆΠΈΠ²Ρ‹ΠΌ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠΌ Π½Π° протяТСнии всСго Ρ†ΠΈΠΊΠ»Π° ΠΆΠΈΠ·Π½ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

5. Π£Π»ΡƒΡ‡ΡˆΠΈΠ»ΠΈ качСство ΠΊΠΎΠ΄Π°

Благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ стандарты, Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² появилось Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, отступы, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, объявлСния, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. Код стал Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Ρ‡ΠΈΡ‰Π΅ ΠΈ понятнСй.

6. УмСньшили Ρ‚Π΅ΠΊΡƒΡ‡ΠΊΡƒ ΠΊΠ°Π΄Ρ€ΠΎΠ²

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ большС свободы ΠΈ отвСтствСнности ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, это Ρ…ΠΎΡ€ΠΎΡˆΠΎ повлияло Π½Π° ΠΌΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΡŽ ΠΈ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄.

ΠšΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, ΠΌΡ‹ ускорили Ρ€Π΅Π»ΠΈΠ· Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΡ‡ ΠΈ повысили CSI (Customer Satisfaction Index).

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

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

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
12 июля 2017

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Docker, ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассказываСм

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎ косточкам, вСдь Docker – это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈ...
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
07 июля 2017

4 Π»ΡƒΡ‡ΡˆΠΈΡ… бСсплатных ΠΊΠ½ΠΈΠ³ ΠΏΠΎ C#

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ самых ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… бСсплатных ΠΊΠ½ΠΈΠ³ ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅...
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
28 ΠΌΠ°Ρ€Ρ‚Π° 2017

3 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΊΠ°ΠΊ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎ...