Микросервисная архитектура, подходы и технологии презентация

Содержание

Слайд 2

О себе Руководитель разработки, архитектор Практикую: IT strategy Agile DevOps Микросервисы

О себе

Руководитель разработки, архитектор
Практикую:
IT strategy
Agile
DevOps
Микросервисы

Слайд 3

О компании Финтех-проекты Платежные системы Крупные интеграции

О компании

Финтех-проекты
Платежные системы
Крупные интеграции

Слайд 4

О чем доклад? Вспомним кратко идею подхода Нужны ли вам

О чем доклад?

Вспомним кратко идею подхода
Нужны ли вам микросервисы?
Архитектура системы
Паттерны/антипаттерны
Проблемы и

решения
Развертывание и технологии
Слайд 5

Проблематика больших монолитных систем Плохое горизонтальное масштабирование Плохая отказоустойчивость Сложность

Проблематика больших монолитных систем

Плохое горизонтальное масштабирование
Плохая отказоустойчивость
Сложность внедрения новых технологий
Сложность рефакторинга

legacy
И т.п.…
Слайд 6

Суть микросервисоного подхода

Суть микросервисоного подхода

Слайд 7

Плюсы и минусы Плюсы Горизонтальное масштабирование Отказоустойчивость Масштабирование команд Переиспользование

Плюсы и минусы

Плюсы

Горизонтальное масштабирование
Отказоустойчивость
Масштабирование команд
Переиспользование
Гибкость стека

Минусы

Сложно
Дорого
Не согласованные данные

Слайд 8

Вам не нужны микросервисы, если Вы делаете стартап (MVP) Нет или не предполагается рост нагрузки

Вам не нужны микросервисы, если

Вы делаете стартап (MVP)
Нет или не предполагается

рост нагрузки
Слайд 9

Вам нужны микросервисы, если Высокая нагрузка Система растет Команда растет Нужна отказоустойчивость Необходимо сократить TTM

Вам нужны микросервисы, если

Высокая нагрузка
Система растет
Команда растет
Нужна отказоустойчивость
Необходимо сократить TTM

Слайд 10

Разрез на сервисы OLAP OLTP

Разрез на сервисы

OLAP

OLTP

Слайд 11

Разрез на сервисы Не разрезайте по слоям, разрезайте по бизнес-контекстам

Разрез на сервисы

Не разрезайте по слоям, разрезайте по бизнес-контекстам

Слайд 12

Размер сервиса На основе бизнес-контекста На основе сетевых запросов На основе транзакций

Размер сервиса

На основе бизнес-контекста
На основе сетевых запросов
На основе транзакций

Слайд 13

Один VCS/CI/CD на сервис Один сервис – один репозиторий Один

Один VCS/CI/CD на сервис

Один сервис – один репозиторий
Один сервис – один

CI-конвейер
Один сервис – один CD-конвейер
Слайд 14

База данных Один сервис – одна база Выбор типа базы данных зависит от задачи

База данных

Один сервис – одна база
Выбор типа базы данных зависит от

задачи
Слайд 15

Events или RPC Events(AMQP, MSMQ и т.п) Асинхронное взаимодействие RPC(HTTP REST) Синхронное взаимодействие

Events или RPC

Events(AMQP, MSMQ и т.п)

Асинхронное взаимодействие

RPC(HTTP REST)

Синхронное взаимодействие

Слайд 16

Выбор протокола обмена сообщениями Специфические для платформы (JMS, MSMQ) Независимые от платформы стандарты (AMQP и прочие)

Выбор протокола обмена сообщениями

Специфические для платформы (JMS, MSMQ)

Независимые от платформы стандарты

(AMQP и прочие)
Слайд 17

Брокер сообщений Брокер сообщений event

Брокер сообщений

Брокер сообщений

event

Слайд 18

ApiGateway

ApiGateway

Слайд 19

ApiGateway Единая точка входа для клиента Нет логики Делается под клиента

ApiGateway

Единая точка входа для клиента
Нет логики
Делается под клиента

Слайд 20

ApiGateway API Gateway

ApiGateway

API Gateway

Слайд 21

BFF API Gateway

BFF

API Gateway

Слайд 22

BFF Public API Private API Admin API

BFF

Public
API

Private
API

Admin
API

Слайд 23

HTTP Proxy(Ocelot) https://github.com/ThreeMammals/Ocelot

HTTP Proxy(Ocelot)

https://github.com/ThreeMammals/Ocelot

Слайд 24

HTTP Proxy(Ocelot) Public API Private API Admin API Card service

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}

[GET] api/v1/card/{id}

Слайд 25

HTTP Proxy(Ocelot) Private API [GET] api/v1/card/{id} Card service [GET] api/v1/card/{id}

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

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}

[GET] api/v1/card/{id}

Слайд 27

Платеж с дефолтной карты Private API Card service Payment service Public API

Платеж с дефолтной карты

Private
API

Card
service

Payment service

Public
API

Слайд 28

Сильная связанность Private API Card service Payment service Public API

Сильная связанность

Private
API

Card
service

Payment service

Public
API

Слайд 29

Aggregate Private API Card service Payment service Public API Payment aggregate

Aggregate

Private
API

Card
service

Payment service

Public
API

Payment aggregate

Слайд 30

Архитектура сервиса

Архитектура сервиса

Слайд 31

Умный - глупый CQS DDD Repository Domain events 30 строк

Умный - глупый

CQS
DDD
Repository
Domain events

30 строк кода
прямо в
Consumer

Payment
service

Sms
service

Слайд 32

Структура умного сервиса Payment service REST API Consumers Command Query Domains Infrastructure

Структура умного сервиса

Payment
service

REST API

Consumers

Command

Query

Domains

Infrastructure

Слайд 33

Структура простого сервиса Simple service REST API CRUD

Структура простого сервиса

Simple
service

REST API

CRUD

Слайд 34

Структура простого сервиса Simple service REST API Simple code Consumers

Структура простого сервиса

Simple
service

REST API

Simple code

Consumers

Слайд 35

Умные и простые User service Payment service Autopayment service Reconciliation

Умные и простые

User
service

Payment
service

Autopayment
service

Reconciliation
service

Sms
service

Notification
service

Acceptcode
service

Report
service

Quartz
service

Identification
service

Слайд 36

Переиспользуемые Сервис решает типовые задачи В идеале это контейнер

Переиспользуемые

Сервис решает типовые задачи
В идеале это контейнер

Слайд 37

Пример User service Payment service Autopayment service Reconciliation service Sms

Пример

User
service

Payment
service

Autopayment
service

Reconciliation
service

Sms
service

Notification
service

Acceptcode
service

Report
service

Quartz
service

Filebeat
service

Identification
service

Ocelot
API

Push
service

Слайд 38

Конфигурация через окружение Система 1 Система 2 env: ip = smsc.ru env: ip = tele2.ru

Конфигурация через окружение

Система 1
Система 2

env: ip = smsc.ru

env: ip = tele2.ru

Слайд 39

Общий код Нарушение DRY – нормально Nuget для того, что фундаментально и не меняется

Общий код

Нарушение DRY – нормально
Nuget для того, что фундаментально и не

меняется
Слайд 40

Общий код v1.0.2 v1.0.1 v2 v1.0.1 v1.0.1 v2 v1.0.2

Общий код

v1.0.2

v1.0.1

v2

v1.0.1

v1.0.1

v2

v1.0.2

Слайд 41

Общий код

Общий код

Слайд 42

Проблемы и решения

Проблемы и решения

Слайд 43

Проблемы Брокер сообщений WebApi MobileApi

Проблемы

Брокер сообщений

WebApi

MobileApi

Слайд 44

Несогласованность данных Нет ACID-транзакций Возможна несогласованность 0 +1 Брокер сообщений

Несогласованность данных

Нет ACID-транзакций
Возможна несогласованность

0

+1

Брокер сообщений

Слайд 45

Отложенная согласованность на событиях Брокер сообщений Local transaction +1 +1

Отложенная согласованность на событиях

Брокер сообщений

Local transaction

+1

+1

Слайд 46

Идемпотентность Повторы неизбежны Делайте методы идемпотентными Регистрируйте уже принятые ID событий Игнорируйте более давние события

Идемпотентность

Повторы неизбежны
Делайте методы идемпотентными
Регистрируйте уже принятые ID событий
Игнорируйте более давние события

Слайд 47

Трассировка Единый ID на бизнес-запрос Можно использовать ActivityId Можно воспользоваться http://opentracing.io/

Трассировка

Единый ID на бизнес-запрос
Можно использовать ActivityId
Можно воспользоваться http://opentracing.io/

Слайд 48

Трассировака Брокер сообщений ApiGateway ActivityId ActivityId

Трассировака

Брокер сообщений

ApiGateway

ActivityId

ActivityId

Слайд 49

Трассировка

Трассировка

Слайд 50

Версионирование Необходимо для поддержания обратной совместимости Позволяет развивать сервисы

Версионирование

Необходимо для поддержания обратной совместимости
Позволяет развивать сервисы

Слайд 51

Версионирование ApiGateway v1 v1 v2 v2 REST

Версионирование

ApiGateway

v1

v1

v2

v2

REST

Слайд 52

Тестирование Unit Integration Unit Integration v1 v2

Тестирование

Unit

Integration

Unit

Integration

v1

v2

Слайд 53

TestContainers Сервис 1 Код Unit Intergration

TestContainers

Сервис 1

Код

Unit

Intergration

Слайд 54

Развёртывание

Развёртывание

Слайд 55

Проблема Развертывать >25 сервисов А если с 6-кратным дублированием И

Проблема

Развертывать >25 сервисов
А если с 6-кратным дублированием
И 50 сборок в день
А

с тестированием что?
Релизы >1 релиза в день
Слайд 56

Решение DevOps DevOps И.. Конечно, DevOps

Решение

DevOps
DevOps
И..
Конечно, DevOps

Слайд 57

VM or Container VM Долго поднимается Инфраструктура настраивается Медленно «переезжает»

VM or Container

VM

Долго поднимается
Инфраструктура настраивается
Медленно «переезжает»

Container

Быстро поднимается
Инфраструктура внутри
Легко «переезжает»

Слайд 58

VM или (Container + Оркестрация) VM AutoScaling – вручную AutoDescovery

VM или (Container + Оркестрация)

VM

AutoScaling – вручную
AutoDescovery – вручную
Supervising – вручную
Blue/Green

deploy – вручную
Балансировка – в ручную

Container + оркестрация (k8s)

AutoScaling – из коробки
AutoDescovery – из коробки
Supervising – из коробки
Blue/Green deploy – из коробки
Балансировка – из коробки*

Слайд 59

Гибкость

Гибкость

Имя файла: Микросервисная-архитектура,-подходы-и-технологии.pptx
Количество просмотров: 75
Количество скачиваний: 0