Forked from r3code/distributed-monolith-vs-microservices-ru.md
Created
February 9, 2025 12:10
-
-
Save z-sector/444fa249d3a9b13ede46e7376d71aa16 to your computer and use it in GitHub Desktop.
Revisions
-
r3code revised this gist
Oct 25, 2022 . 1 changed file with 4 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,6 @@ # Чеклист "Мои микросервисы - это распределенный монолит?" Из статьи [You're not actually building microservices](https://www.simplethread.com/youre-not-actually-building-microservices/) ## Проверка на симптомы @@ -36,7 +36,9 @@ По мере увеличения размера системы и количества разработчиков вы обнаружите, что разделение сервисов станет обычным делом. ### Из статьи [Segment's Goodbye Microservices](https://segment.com/blog/goodbye-microservices/) Некоторые проблемы с которыми вы столкнетесь в микросервисах по мере роста: > Чтобы облегчить бремя разработки и поддержки этих кодовых баз, мы создали общие библиотеки, чтобы упростить и сделать общими преобразования и функциональные возможности, такие как обработка HTTP-запросов, в местах использования проще и единообразнее. -
r3code revised this gist
Oct 25, 2022 . 1 changed file with 22 additions and 11 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,28 +1,39 @@ # Чеклист "Мои микросервисы - это распределенный монолит?" Из [You're not actually building microservices](https://www.simplethread.com/youre-not-actually-building-microservices/) ## Проверка на симптомы Итак, вы создаете микросервисы? Взгляните на некоторые из этих симптомов и проставьте галочки, где вы согласны: - [ ] Изменение одного микросервиса часто требует изменений в других микросервисах (сильная связанность) - [ ] Развертывание одного микросервиса требует одновременного развертывания других микросервисов - [ ] Наши микросервисы слишком болтливы (много общаются друг с другом) - [ ] Одни и те же разработчики работают с большим количеством микросервисов - [ ] Многие из наших микросервисов совместно используют хранилище данных - [ ] Наши микросервисы имеют один и тот же код или модели Если у вас есть хотябы одна галочка - у вас проблема... конечено, всегда есть исключения. Но по большей части, если вы киваете головой в некоторых из приведенных выше пунктов, возможно, вы не работаете с микросервисами. ## Как проверить пункты чеклиста Подробно в статье [Is your microservice a distributed monolith?](https://www.gremlin.com/blog/is-your-microservice-a-distributed-monolith/) (2020) Вкратце: попробовать пошатать систему с "Chraos Engenering" подходом. ## А если у меня уже есть монолит? Если вы начинаете с монолита, ваша цель должна быть в том, чтобы не дать ему стать чудовищем. Ключ к этому - просто слушать свое приложение! Я знаю, что легче сказать, чем сделать, но по мере роста вашего монолита задавайте себе несколько вопросов: - [ ] Есть ли что-нибудь, что масштабируется с иной скоростью, чем остальные части системы? - [ ] Есть ли что-нибудь, что кажется «привязанным» к внешней части системы? - [ ] Что-нибудь меняется намного быстрее, чем остальные части системы? - [ ] Есть ли в системе часть, требующая более частого развертывания, чем остальные части системы? - [ ] Есть ли в системе часть, внутри которой независимо работает один человек или небольшая команда? - [ ] Есть ли подмножество таблиц в хранилище данных, не связанных с остальными частями системы? По мере увеличения размера системы и количества разработчиков вы обнаружите, что разделение сервисов станет обычным делом. ### Из [Segment's Goodbye Microservices](https://segment.com/blog/goodbye-microservices/) -
r3code created this gist
Apr 29, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,43 @@ ### Из [You're not actually building microservices](https://www.simplethread.com/youre-not-actually-building-microservices/) Итак, вы создаете микросервисы? Взгляните на некоторые из этих симптомов и решите для себя: - [ ] Изменение одного микросервиса часто требует изменений в других микросервисах - [ ] Развертывание одного микросервиса требует одновременного развертывания других микросервисов - [ ] Наши микросервисы слишком болтливы (много общаются друг с другом) - [ ] Одни и те же разработчики работают с большим количеством микросервисов - [ ] Многие из наших микросервисов совместно используют хранилище данных - [ ] Наши микросервисы имеют один и тот же код или модели Сейчас, я не говорю, что если ваша реализация микросервисов соответствует одному из пунктов, у вас есть проблема... всегда есть исключения. Но по большей части, если вы киваете головой в некоторых из приведенных выше пунктов, возможно, вы не работаете с микросервисами. Как проверить? Chraos Engenering https://www.gremlin.com/blog/is-your-microservice-a-distributed-monolith/ ... Если вы начинаете с монолита, ваша цель должна в том, чтобы не дать ему перерасти в чудовище. Ключ к этому - просто слушать свое приложение! Я знаю, что легче сказать, чем сделать, но по мере роста вашего монолита задайте себе несколько вопросов: - [ ] Есть ли что-нибудь, что масштабируется с иной скоростью, чем отсальные части системы? - [ ] Есть ли что-нибудь, что кажется «привязанным» к внешней части системы? - [ ] Что-нибудь меняется намного быстрее, чем отсальные части системы? - [ ] Есть ли в системе часть, требующая более частого развертывания, чем отсальные части системы? - [ ] Есть ли в системе часть, внутри которой независимо работает один человек или небольшая команда? - [ ] Есть ли подмножество таблиц в хранилище данных, не связанных с остальными частями системы? По мере увеличения размера системы и количества разработчиков вы обнаружите, что разделение сервисов станет обычным делом. ### Из [Segment's Goodbye Microservices](https://segment.com/blog/goodbye-microservices/) > Чтобы облегчить бремя разработки и поддержки этих кодовых баз, мы создали общие библиотеки, чтобы упростить и сделать общими преобразования и функциональные возможности, такие как обработка HTTP-запросов, в местах использования проще и единообразнее. ... > Общие библиотеки ускорили создание новых направлений. Знакомство с единым набором общих функций сделало обслуживание менее проблемным. > Однако стала возникать новая проблема. Тестирование и развертывание изменений в этих общих библиотеках повлияло на все наши направления. На его обслуживание стали уходить много времени и усилий. Вносить изменения для улучшения наших библиотек, зная, что нам придется тестировать и развертывать десятки сервисов, было рискованным делом. При нехватке времени инженеры включали только обновленные версии этих библиотек в одном месте кода (single destination’s codebase). > Со временем версии этих общих библиотек начали расходиться в разных целевых базах кода. Огромное преимущество, которое мы когда-то получали, заключающееся в сокращении настройки каждой целевой кодовой базы, начало меняться. В конце концов, все они использовали разные версии этих общих библиотек. Мы могли бы создать инструменты для автоматизации развертывания изменений, но на этом этапе не только снизилась производительность труда разработчиков, но и мы начали сталкиваться с другими проблемами с микросервисной архитектуры. По моему опыту, самым большим преимуществом микросервисов является разделение команд. В монолитном приложении очень сложно поддерживать продуктивность разработчиков, поскольку количество разработчиков увеличивается, а унаследованный код накапливается. Разделение сервисов и предоставление каждой команде разработчиков контроля над собственными кодовыми базами позволяет им разрабатывать собственные продукты в своем собственном темпе. Если у вас всего одна команда разработчиков, микросервисы будут намного менее привлекательными. Тем не менее, все же есть некоторые преимущества, такие как возможность изолированного рефакторинга частей вашей кодовой базы (включая, возможно, переписывание их на разных языках) и возможность индивидуально настраивать масштаб времени выполнения различных частей вашей кодовой базы.