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

Андрей Олейник "Проектируем приложения используя микросервисную архитектуру"

DotNetRu
October 05, 2019

Андрей Олейник "Проектируем приложения используя микросервисную архитектуру"

В этом докладе мы разберем:
- коротко о целесообразности применения по сравнению с монолитом
- инструменты и решения для разработки и внедрения (Azure DevOps, Swagger, Docker)
- как разделить приложение по микросервисам на примере простого заказа товаров (api & front app)
- как распределить данные не нарушая сути микросервисов, и как соблюдать целостность этих данных (СуБД, RabbitMQ, MassTransit)
- авторизация и права доступа (gateway, identity)

DotNetRu

October 05, 2019
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. o GANDIVA взгляд изнутри o Проблемы, потребности и новые задачи

    o Пути решения o Обзор инструментария Коротко о главном
  2. ДЛЯ БОССА Помогает сделать процесс управления компанией эффективным через оцифровку

    бизнеса и внедрение Кайдзен во все подразделения, особенно бэк-офис. ДЛЯ НАЧАЛЬНИКА ДЛЯ СОТРУДНИКА Инструмент планирования рабочего времени, управление рабочей загрузкой сотрудников, аналитика и прогнозы для принятия решений: оценка сотрудника, себестоимость решения, проекта, сервиса. Понимание объема поставленных задач, комфортное взаимодействие с постановщиком задачи, прозрачная мотивация по результатам, работа в единой системе по всем задачам.
  3. Проблемы, потребности и новые задачи 1. Отсутствие автоматизации при обновлении

    приложения. 2. Потребность создания приложения для возможности подключения мобильных устройств. Web only -> Web + API. 3. Потребность создания очередей отправки push сообщений. 4. Сложность написания новых доработок, связанная с поиском и исправлением условно случайных багов, возникающих в различных местах приложения при изменении кода. Увеличение времени тестирования и выпуска релизов. 5. Контрактная основа взаимодействия WEB и API приложений. 6. Потребность перехода к методологии specification first. 7. Потребность в контроле целостности данных в распределенных сервисах. 8. Инфраструктурная задача инкапсуляции сервисов в собственных контейнерах 9. Потребность в прозрачной организации работы с правами и ролями системы
  4. ПРОБЛЕМА: Отсутствие автоматизации при обновлении приложения РЕШЕНИЕ: Continuous Integration, Continuous

    Delivery Итеративное создание модулей системы Увеличенная скорость доставки Автоматизация всех процессов Тесты на нужных этапах развертывания
  5. ПОТРЕБНОСТЬ: РЕШЕНИЕ: Потребность создания приложения для возможности по дключения моб

    ильных устройств. Создание приложения на основе Web-Api, носитель бизнес логики Создание отдельного от бизнес логики Web-приложения Интеграции со сторонними ресурсами без доработок изнутри
  6. ПОТРЕБНОСТЬ: PUSH, Emails РЕШЕНИЕ: Сообщение может включать в себя любую

    информацию Асинхронная обработка событий Брокер сообщений за пределами приложения Мгновенная или отложенная доставка сообщений
  7. Поиск и исправление багов, возникающих в различных местах приложения при

    изменении кода => увеличение времени тестирования и выпуска релизов. ПРОБЛЕМА: РЕШЕНИЕ: Создание нового продукта с расширенной бизнес логикой. Разделение на независимые приложения.
  8. ПОТРЕБНОСТЬ: Единая точка входа в пул приложений РЕШЕНИЕ: Gateway на

    базе Ocelot Только разрешенные маршруты в json формате Автоматическая генерация маршрутов из спецификаций Единая точка аутентификации пользователя и обработки части специфических бизнес правил системы
  9. ЗАДАЧА: РЕШЕНИЕ: Инфраструктурная задача инкапсуляции сервисов в собственных контейнерах Процесс

    работает в минимальном окружении Обычные виртуальные машины эмулируют работу всей среды Готовые наборы базовых контейнеров на "все" случаи жизни Создание различных компоновок сервисов для тестирования и разработки
  10. ПОТРЕБНОСТЬ: Потребность в прозрачной организации работы с правами и ролями

    системы РЕШЕНИЕ: Создание сервиса управления правами и ролями пользователей Проверка прав пользователя в Gateway Фиксация прав пользователя в Swagger спецификации Создание сервиса управления правами и ролями пользователей
  11. Программные решения постоянно развиваются и эволюционируют. Мы все прекрасно понимаем,

    что какое бы отличное приложение мы не сделалили сегодня - менеджеры всегда найдут чем осложнить нам жизнь, подкинув новую интересную задачку. Истина где-то рядом... Я узнал, что у меня есть огромная семья! OpenApi, Ocelot, Massstransit и yaml код, Папа - Azur, мама - Corе, артефакты NuGet store. Всех люблю и всех ценю - микросервисов родню!