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

Андрей Матвеев «Основные принципы микросервисов и их реализации»

Андрей Матвеев «Основные принципы микросервисов и их реализации»

Разговор пойдет о том, что скрывается за модным buzzword’ом, будут рассмотрены обещанные плюсы и найдены минусы, о которых умалчивают. Зачем нужны микросервисы, пора ли отказываться от монолита и как же их делать.

DotNetRu

April 20, 2017
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. Определение микросервисов Набор независимых, но связанных между собой сервисов Построены

    вокруг бизнес-потребностей Развертываются независимо Имеют минимум централизованного управления 1 2 3 4
  2. X axis – horizontal duplication Scale by cloning Y axis

    – functional decomposition Scale by splitting different things Z axis – data partitioning Scale by splitting sim ilar things
  3. X axis – horizontal duplication Scale by cloning Y axis

    – functional decomposition Scale by splitting different things Z axis – data partitioning Scale by splitting sim ilar things
  4. X axis – horizontal duplication Scale by cloning Y axis

    – functional decomposition Scale by splitting different things Z axis – data partitioning Scale by splitting sim ilar things
  5. X axis – horizontal duplication Scale by cloning Y axis

    – functional decomposition Scale by splitting different things Z axis – data partitioning Scale by splitting sim ilar things
  6. Обещания микросервисов Инкапсуляция бизнес-логики Независимость в выборе технологий Независимость в

    развертывании отдельного сервиса Независимое внесение изменений Меньшее значение Time To Market Быстрая адаптация к изменениям 1 2 3 4 5 6
  7. Тестируемость, монолит module #1 module #1 module #2 module #3

    module #4 module #5 module #2 module #3 module #4 module #5
  8. Тестируемость, микросервисы service #1 service #2 service #3 service #4

    service #5 service #1 service #2 service #3 service #4 service #5 ?
  9. service #1 service #2 service #3 service #1 service #2

    service #3 service #1 service #2 service #1 Масштабируемость, микросервисы
  10. Простота разработки, монолит application module #1 module #2 module #3

    module #4 module #5 module #1 module #2 module #3 module #4 module #5
  11. ?service #1 service #2 service #3 service #4 service #5

    Производительность module #1 module #2 module #3 module #4 module #5
  12. Когда их использовать less complex higher volume (”internet-scale”) domain scalability

    complexity lower volume (”enterprise-scale”) more complex micro services modular monoliths
  13. Когда еще их использовать Необходимо выпускать новый функционал часто Можно

    получить большие преимущества при написании разных частей системы на разных языках Есть необходимость использовать разные базы данных для разных задач 1 2 3
  14. Как строить микросервисы Функциональная декомпозиция Взаимодействие с пользователями системы Взаимодействие

    между сервисами Обеспечение согласованности данных Service discovery Тестирование Логирование 1 2 3 4 5 6 7
  15. HTTP Akka.netе, MS Orleans WCF Protobuf Apache Thrift Linkerd 1

    2 3 4 5 6 Синхронные запросы
  16. Обеспечение согласованности данных После совершения пользователем операции в одном из

    сервисов изменились данные и нужно эти изменения отправить в другой сервис. Нам необходимо построить отчет по неким показателям, данные для составления отчета распределены по нескольким микросервисам. 1 2
  17. Использование таймаутов при запросах Частое переиспользование кода Статичные контракты Недоступность

    целого из-за отказа части Микролитизация 1 2 3 4 5 Распространенные ошибки
  18. Объединение запросов Запрос на списание получен. ID: xxxx-xxxx-xxxx-xxxx Списание прошло

    успешно. ID: xxxx-xxxx-xxxx-xxxx Средства переведены клиенту. ID: xxxx-xxxx-xxxx-xxxx
  19. acquiring landing POS landing SST landing acquiring endpoint POS endpoint

    SST endpoint acquiring service POS service SST service applicant service web ui CRM service message bus processing service backoffice service external systems Итоговая архитектура web ui
  20. Pros&Сons Распределенная система Гибкая разработка Легко масштабируются Низкий TTM для

    нового функционала + + + + Распределенная система Сложное проектирование Проблемы при тестировании - - -
  21. You shouldn't start a new project with microservices, even if

    you're sure your application will be big enough to make it worthwhile Martin Fowler