Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Как понять, действительно ли нам так нужны эти ...

Как понять, действительно ли нам так нужны эти микросервисы?

В настоящий момент Микросервисная Архитектура является самый популярным подходом в Web-разработке. Но являются ли Микросервисы серебряной пулей, которая решит все ваши проблемы? В ходе доклада обсудим, действительно ли так нужны микросервисы в нашем проекте, и, если да, то с какими сложностями мы столкнемся. Мы сравним Микросервисную Архитектуру с Монолитным Приложением и разберемся, когда следует переходить на Микросервисы, а когда оставить все как есть.

Avatar for Romanov Alexey

Romanov Alexey

March 30, 2025
Tweet

More Decks by Romanov Alexey

Other Decks in Programming

Transcript

  1. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 ПЛАН ДОКЛАДА Что нам дают микросервисы? Что такое Монолитное Приложение и Микросервисная Архитектура. У нас есть небольшое приложение, мы начинаем масштабировать разработку. Какие проблемы у нас возникают? Сравним типовые проблемы при росте проекта по критериям: стоимость, сроки и перспективы развития. Какие у нас появятся проблемы, если мы останемся на монолите? Какие у нас появятся проблемы, если мы выберем микросервисы? Вместо выводов: разберемся, когда следует использовать 
 Микросервисы, а когда оставаться на Монолите. 2
  2. 12+ лет Java/Kotlin. 7+ лет в роли TeamLead/Архитектора. 6 лет

    опыт DevOps. Co-founder EdTech стартапа IT-Enduro. Работаю в роли Software Архитектора. Мы с вами встречались на других конференциях :) РОМАНОВ АЛЕКСЕЙ
  3. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 ЧТО НАМ ДАЮТ МИКРОСЕРВИСЫ? Высокая стабильность, т.к. падение одного сервиса не приводит к недоступности всей системы. Разнообразие технологий. Меньшая стоимость ошибок, т.к. если мы плохо написали один сервис, мы просто его выкинули и написали заново. Для выкатки новой функциональности требуется обновить лишь часть приложения, что уменьшает Time-2-Market. Возможность масштабировать разработку, т.к. каждая 
 команда отвечает за свои сервисы. Высокая стабильность, т.к. падение одного сервиса не приводит к недоступности всей системы. Разнообразие технологий. Меньшая стоимость ошибок, т.к. если мы плохо написали один сервис, мы просто его выкинули и написали заново. Для выкатки новой функциональности требуется обновить лишь часть приложения, что уменьшает Time-2-Market. Возможность масштабировать разработку, т.к. каждая 
 команда отвечает за свои сервисы. 4
  4. Все оценки, которые я даю в этом докладе субъективны и

    основаны на моем личном опыте и опыте моих коллег. В зависимости от специфики проекта и построения процесса разработки оценки могут быть другие и это нормально.
  5. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 МОНОЛИТНОЕ ПРИЛОЖЕНИЕ Монолитное приложение – различные компоненты приложения объединяются в одну программу на одной платформе, все части ПО унифицированы, все функции управляются в одном месте. 6
  6. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 МИКРОСЕРВИСНАЯ АРХИТЕКТУРА Микросервисная Архитектура – модульный подход к разработке ПО, основанный на использовании слабо связанных заменяемых компонентов, взаимодействующих по стандартизированным протоколам. Другими словами – это несколько сервисов, взаимодействующих друг с другом по синхронным или асинхронным протоколам. 7
  7. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 200к строк кода, хорошо написанный Монолит на Java, Postgres, SPA 2 команды разработки, тестировщики, админы 
 2х недельные спринты и деплой по пятницам Backlog расписан на полгода вперед Стремительный рост проекта КАКИЕ ПРОБЛЕМЫ ВОЗНИКАЮТ ПРИ РОСТЕ ПРИЛОЖЕНИЯ? 9
  8. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 Стремительный рост проекта КАКИЕ ПРОБЛЕМЫ ВОЗНИКАЮТ ПРИ РОСТЕ ПРИЛОЖЕНИЯ? Увеличение нагрузки на сервера Увеличение количества задач Рост количества команд разработки Увеличение аудитории 10
  9. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 МОНОЛИТНОЕ ПРИЛОЖЕНИЕ 11
  10. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 МИКРОСЕРВИСНАЯ АРХИТЕКТУРА 12
  11. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 КАКИЕ ПРОБЛЕМЫ ВОЗНИКАЮТ ПРИ РОСТЕ ПРИЛОЖЕНИЯ? Рефакторинг и разнообразие технологий. Масштабирование. Масштабирование Базы данных. Отказоустойчивость. Консистентность данных. Скорость доставки обновлений. Коммуникация между командами. Поддержание правильной архитектуры. 13
  12. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 РЕФАКТОРИНГ И РАЗНООБРАЗИЕ ТЕХНОЛОГИЙ МОНОЛИТ МИКРОСЕРВИСЫ Время 🕐 🕐 🕐 🕐 🕐 🕐 Деньги 💲 💲 💲 💲 💲 💲 14
  13. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 МАСШТАБИРОВАНИЕ МОНОЛИТ МИКРОСЕРВИСЫ Время 🕐 🕐 🕐 🕐 Деньги 💲 💲 💲 💲 💲 💲 💲 15
  14. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 МАСШТАБИРОВАНИЕ БАЗЫ ДАННЫХ МОНОЛИТ МИКРОСЕРВИСЫ Время 🕐 🕐 🕐 🕐 Деньги 💲 💲 💲 💲 💲 💲 💲 16
  15. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 ОТКАЗОУСТОЙЧИВОСТЬ МОНОЛИТ МИКРОСЕРВИСЫ Время 🕐 🕐 🕐 🕐 Деньги 💲 💲 💲 💲 💲 17
  16. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 КОНСИСТЕНТНОСТЬ ДАННЫХ МОНОЛИТ МИКРОСЕРВИСЫ Время 🕐 🕐 🕐 🕐 Деньги 💲 💲 💲 💲 18
  17. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 СКОРОСТЬ ДОСТАВКИ ОБНОВЛЕНИЙ МОНОЛИТ МИКРОСЕРВИСЫ Время T2M 🕐 🕐 🕐 🕐 🕐 Время настройки 🕐 🕐 🕐 🕐 🕐 Деньги 💲 💲 💲 💲 19
  18. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 ПОДДЕРЖАНИЕ ПРАВИЛЬНОЙ АРХИТЕКТУРЫ МОНОЛИТ МИКРОСЕРВИСЫ Время 🕐 🕐 🕐 🕐 🕐 🕐 🕐 Деньги 💲 💲 20
  19. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 ПОДДЕРЖКА И ЭКСПЛУАТАЦИЯ МОНОЛИТ МИКРОСЕРВИСЫ Время 🕐 🕐 🕐 Деньги 💲 💲 💲 💲 21
  20. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 ОСТАТЬСЯ НА МОНОЛИТЕ? С ростом проекта увеличивается сложность приложения. Следовательно, усложняется тестирование и поддержка. Требуются мощные аппаратные ресурсы для поддержания необходимой производительности. Сложность рефакторинга и внедрения новых технологий. Любые изменения требуют полного повторного тестирования и развертывания. 22
  21. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 ПЕРЕЕХАТЬ К МОРЮ НА МИКРОСЕРВИСЫ Часто становится очень трудно разбить систему на сервисы из-за сильной связанности данных. Требуется вручную поддерживать консистентность данных. Требуется автоматизация деплоя и смежных процессов. Теперь любая большая задача должна проходить не только через груминг, но и через согласование API между различными командами. Требуется высокий уровень автоматизации тестирования. Части системы становятся более атомарны и нужен кто-то, 
 кто будет знать всю систему целиком, чтобы правильно вписать в нее доработки. 23
  22. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 КРИТЕРИИ ВЫБОРА АРХИТЕКТУРЫ МОНОЛИТ МИКРОСЕРВИСЫ MVP, Proof Of Concept. Есть четкое понимание, как будет развиваться приложение, какая функциональность потребуется в дальнейшем. Нет понимания, в какую сторону будет расти приложение. Есть понимание, какая будет нагрузка на приложение, какие части системы будут наиболее нагружены. Разработка ведется силами маленькой команды, нет достаточной компетенции в DevOps и других процессах. Какие-то части системы делаются как временное решение, которые будут заменены в дальнейшем. Размер приложения небольшой, но критически важна консистентность данных. Планируется хранение большого объема данных. 24
  23. © IT Enduro «Как понять, действительно ли нам так нужны

    эти микросервисы?», 2024 БЛАГОДАРЮ ЗА ВНИМАНИЕ @romanow romanowalex @it_enduro it-endu.ro ВАШИ ЛАЙКИ ПОДПИСКА И КОЛОКОЛЬЧИК 25