Содержание
- 2. О себе Руководитель разработки, архитектор Практикую: IT strategy Agile DevOps Микросервисы
- 3. О компании Финтех-проекты Платежные системы Крупные интеграции
- 4. О чем доклад? Вспомним кратко идею подхода Нужны ли вам микросервисы? Архитектура системы Паттерны/антипаттерны Проблемы и
- 5. Проблематика больших монолитных систем Плохое горизонтальное масштабирование Плохая отказоустойчивость Сложность внедрения новых технологий Сложность рефакторинга legacy
- 6. Суть микросервисоного подхода
- 7. Плюсы и минусы Плюсы Горизонтальное масштабирование Отказоустойчивость Масштабирование команд Переиспользование Гибкость стека Минусы Сложно Дорого Не
- 8. Вам не нужны микросервисы, если Вы делаете стартап (MVP) Нет или не предполагается рост нагрузки
- 9. Вам нужны микросервисы, если Высокая нагрузка Система растет Команда растет Нужна отказоустойчивость Необходимо сократить TTM
- 10. Разрез на сервисы OLAP OLTP
- 11. Разрез на сервисы Не разрезайте по слоям, разрезайте по бизнес-контекстам
- 12. Размер сервиса На основе бизнес-контекста На основе сетевых запросов На основе транзакций
- 13. Один VCS/CI/CD на сервис Один сервис – один репозиторий Один сервис – один CI-конвейер Один сервис
- 14. База данных Один сервис – одна база Выбор типа базы данных зависит от задачи
- 15. Events или RPC Events(AMQP, MSMQ и т.п) Асинхронное взаимодействие RPC(HTTP REST) Синхронное взаимодействие
- 16. Выбор протокола обмена сообщениями Специфические для платформы (JMS, MSMQ) Независимые от платформы стандарты (AMQP и прочие)
- 17. Брокер сообщений Брокер сообщений event
- 18. ApiGateway
- 19. ApiGateway Единая точка входа для клиента Нет логики Делается под клиента
- 20. ApiGateway API Gateway
- 21. BFF API Gateway
- 22. BFF Public API Private API Admin API
- 23. HTTP Proxy(Ocelot) https://github.com/ThreeMammals/Ocelot
- 24. HTTP Proxy(Ocelot) Public API Private API Admin API Card service [GET] api/v1/card/{id} [GET] api/v1/card/{id} [GET] api/v1/card/{id}
- 25. HTTP Proxy(Ocelot) Private API [GET] api/v1/card/{id} Card service [GET] api/v1/card/{id}
- 26. HTTP Proxy(Ocelot) Public API Private API Admin API Card service [GET] api/v1/card/{id} [GET] api/v1/card/{id} [GET] api/v1/card/{id}
- 27. Платеж с дефолтной карты Private API Card service Payment service Public API
- 28. Сильная связанность Private API Card service Payment service Public API
- 29. Aggregate Private API Card service Payment service Public API Payment aggregate
- 30. Архитектура сервиса
- 31. Умный - глупый CQS DDD Repository Domain events 30 строк кода прямо в Consumer Payment service
- 32. Структура умного сервиса Payment service REST API Consumers Command Query Domains Infrastructure
- 33. Структура простого сервиса Simple service REST API CRUD
- 34. Структура простого сервиса Simple service REST API Simple code Consumers
- 35. Умные и простые User service Payment service Autopayment service Reconciliation service Sms service Notification service Acceptcode
- 36. Переиспользуемые Сервис решает типовые задачи В идеале это контейнер
- 37. Пример User service Payment service Autopayment service Reconciliation service Sms service Notification service Acceptcode service Report
- 38. Конфигурация через окружение Система 1 Система 2 env: ip = smsc.ru env: ip = tele2.ru
- 39. Общий код Нарушение DRY – нормально Nuget для того, что фундаментально и не меняется
- 40. Общий код v1.0.2 v1.0.1 v2 v1.0.1 v1.0.1 v2 v1.0.2
- 41. Общий код
- 42. Проблемы и решения
- 43. Проблемы Брокер сообщений WebApi MobileApi
- 44. Несогласованность данных Нет ACID-транзакций Возможна несогласованность 0 +1 Брокер сообщений
- 45. Отложенная согласованность на событиях Брокер сообщений Local transaction +1 +1
- 46. Идемпотентность Повторы неизбежны Делайте методы идемпотентными Регистрируйте уже принятые ID событий Игнорируйте более давние события
- 47. Трассировка Единый ID на бизнес-запрос Можно использовать ActivityId Можно воспользоваться http://opentracing.io/
- 48. Трассировака Брокер сообщений ApiGateway ActivityId ActivityId
- 49. Трассировка
- 50. Версионирование Необходимо для поддержания обратной совместимости Позволяет развивать сервисы
- 51. Версионирование ApiGateway v1 v1 v2 v2 REST
- 52. Тестирование Unit Integration Unit Integration v1 v2
- 53. TestContainers Сервис 1 Код Unit Intergration
- 54. Развёртывание
- 55. Проблема Развертывать >25 сервисов А если с 6-кратным дублированием И 50 сборок в день А с
- 56. Решение DevOps DevOps И.. Конечно, DevOps
- 57. VM or Container VM Долго поднимается Инфраструктура настраивается Медленно «переезжает» Container Быстро поднимается Инфраструктура внутри Легко
- 58. VM или (Container + Оркестрация) VM AutoScaling – вручную AutoDescovery – вручную Supervising – вручную Blue/Green
- 59. Гибкость
- 61. Скачать презентацию