42
ВИТАЛИЙ КВЯТКОВСКИЙ Микросервисы на практике 2015

Микросервисы на практике

Embed Size (px)

Citation preview

Page 1: Микросервисы на практике

ВИТАЛИЙ КВЯТКОВСКИЙ

Микросервисы

на практике

2015

Page 2: Микросервисы на практике

2

Agenda

• Что такое микросервисы?

• Ориентация на бизнес

• Инфраструктура

• Дизайн микросервисов

Agenda

Page 3: Микросервисы на практике

3

Тип Архитектуры

Монолитное

приложение

Микросервисное

приложение

Page 4: Микросервисы на практике

4

Монолит

APP

Налоги Emailing

ОтчетыКредитки

СкидкиСправочник

Page 5: Микросервисы на практике

5

СуперМонолит

company.com

Приложение

1

APP

Налоги Emailing

ОтчетыКредитки

СкидкиСправочник

Издателей

Приложение

2

Page 6: Микросервисы на практике

6

Микросервисы

Налоги

Emailing

Отчеты

APP

Кредитки

Скидки

Справочник

Издателей

Postgre

SQL

Mongo

REST

Page 7: Микросервисы на практике

7

За и Против

Плюсы

+ Протокол

+ Простота модуля

+ Скорость разработки

+ Независимость команд

+ Независимость технологий

Page 8: Микросервисы на практике

8

За и Против

Минусы

- Подверженность ошибкам

- Сложность системы

- Сложность разработки

- Нужно автоматизировать

Page 9: Микросервисы на практике

9

Business Capabilities

Организация вокруг потребностей бизнеса

• Разные сервисы под разные нужды

• отчеты

• кредитки

• Отдельные команды

• Поддержка на продакшене

• Создание вспомогательных утилит

Page 10: Микросервисы на практике

10

Infrastructure

• Абстрагироваться от инфраструктуры

• Выровнять инфраструктуру окружений

• Отдельные окружения (DEV/QA/PS/PROD)

• Автоматизация

Page 11: Микросервисы на практике

11

Infrastructure Automation

Автоматизация инфраструктуры

• Continuous Integration• Jenkins

• Выделенное окружение разработчика

• Развертывание одной кнопкой

• Эволюция Базы Данных

• Создание структур БД

• Миграция данных

• Автоматическое выполнение

• Chef

Page 12: Микросервисы на практике

12

Дизайн микросервисов

• Децентрализованное управление

• Децентрализованные данные

• Взаимодействие сервисов

• Проектирование под отказ

• Типы взаимодействия

Page 13: Микросервисы на практике

13

Decentralized Governance

Децентрализованное управление

•Разные технологии для разных целей

• Фреймворки

• Базы Данных

•Архитектурные решения

•Но единая платформа

• Система сборки Gradle

• Общие библиотеки (Guava)

• Стандарты кода

Page 14: Микросервисы на практике

14

Дизайн микросервисов

• Децентрализованное управление

• Децентрализованные данные

• Взаимодействие сервисов

• Проектирование под отказ

• Типы взаимодействия

Page 15: Микросервисы на практике

15

Decentralized Data

PostgreSQL MongoDB

ROA СкидкиREST

Децентрализованные данные

• Разные хранилища данных

• polyglot persistence

• MongoDB/PostgreSQL/Lucene

• Нет доступа к хранилищам других сервисов

Page 16: Микросервисы на практике

16

Дизайн микросервисов

• Децентрализованное управление

• Децентрализованные данные

• Взаимодействие сервисов

• Проектирование под отказ

• Типы взаимодействия

Page 17: Микросервисы на практике

17

Взаимодействие сервисов

•Протокол взаимодействия

• REST

• Messaging

• JMS

•Версионирование (X.Y.Z)

•Без состояния / Stateless

• Позволяет масштабироваться

Page 18: Микросервисы на практике

18

Дизайн микросервисов

• Децентрализованное управление

• Децентрализованные данные

• Взаимодействие сервисов

• Проектирование под отказ

• Типы взаимодействия

Page 19: Микросервисы на практике

19

Проектирование под отказ

•Найти отказ

• Мониторинг

• Исчерпывающее логгирование

•Быстрое исправление

• Автоматическое• Автоматическая повторная попытка (Redelivery)

• High Availability (Load balancing)

• Ручное• Проверка email

Design for failure

Page 20: Микросервисы на практике

20

Дизайн микросервисов

• Децентрализованное управление

• Децентрализованные данные

• Взаимодействие сервисов

• Проектирование под отказ

• Типы взаимодействия

Page 21: Микросервисы на практике

21

Типы взаимодействия

Взаимодействие между сервисами

• Синхронное

• обычно R в CRUD

• Асинхронное

•может быть CUD в CRUD

Сканировани

е документа

асинхЗаказ

документа

Чтение из БД

синхПросмотр

заказа

Page 22: Микросервисы на практике

22

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

• Максимально быстро• Все что требует внимания пользователя

Иначе асинхронное

• Использовать кэш• Внутрипроцессный кэш Guava

Для небольших данных

Сохранение заказа

Снятие денегСоздание лицензии

синхсинх асинх

Page 23: Микросервисы на практике

23

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

Клиент Микросервис

БД Микросервиса

Запрос

Сохранение

Обработка

БД Клиента

Возврат ID запроса

Сохранение + ID

Обновление статуса

Запрос статуса

Сообщение о завершении

Page 24: Микросервисы на практике

24

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

Клиент Микросервис

БД Микросервиса

Запрос

Сохранение

Обработка

БД Клиента

Возврат ID запроса

Сохранение + ID

Обновление статуса

Запрос статуса

Сообщение о завершении

Page 25: Микросервисы на практике

25

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

Клиент Микросервис

БД Микросервиса

Запрос

Сохранение

Обработка

БД Клиента

Возврат ID запроса

Сохранение + ID

Обновление статуса

Запрос статуса

Сообщение о завершении

Page 26: Микросервисы на практике

26

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

Клиент Микросервис

БД Микросервиса

Запрос

Сохранение

Обработка

БД Клиента

Возврат ID запроса

Сохранение + ID

Обновление статуса

Запрос статуса

Сообщение о завершении

Page 27: Микросервисы на практике

27

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

Клиент Микросервис

БД Микросервиса

Запрос

Сохранение

Обработка

БД Клиента

Возврат ID запроса

Сохранение + ID

Обновление статуса

Запрос статуса

Сообщение о завершении

Page 28: Микросервисы на практике

28

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

Клиент Микросервис

БД Микросервиса

Запрос

Сохранение

Обработка

БД Клиента

Возврат ID запроса

Сохранение + ID

Обновление статуса

Запрос статуса

Сообщение о завершении

Page 29: Микросервисы на практике

29

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

Клиент Микросервис

БД Микросервиса

Запрос

Сохранение

Обработка

БД Клиента

Возврат ID запроса

Сохранение + ID

Обновление статуса

Запрос статуса

Сообщение о завершении

Page 30: Микросервисы на практике

30

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

Клиент Микросервис

БД Микросервиса

Запрос

Сохранение

Обработка

БД Клиента

Возврат ID запроса

Сохранение + ID

Обновление статуса

Запрос статуса

Сообщение о завершении

Page 31: Микросервисы на практике

31

Отказы (Failures)

• Быть готовым к отказу

• Быть готовым к восстановлению

• Найти точки отказа

• Определить как восстанавливать

• Синхронное- на стороне клиента

• ответственный: пользователь

• Асинхронное- на стороне сервера

• ответственный: разработчик

Page 32: Микросервисы на практике

32

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

Page 33: Микросервисы на практике

33

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

Page 34: Микросервисы на практике

34

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

Page 35: Микросервисы на практике

35

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

Page 36: Микросервисы на практике

36

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

Page 37: Микросервисы на практике

37

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

Page 38: Микросервисы на практике

38

Когда использовать монолиты?

• Первая версия

• Система достаточно понятна

• Система достаточно размыта

Page 39: Микросервисы на практике

39

Когда использовать микросервисы?

• Система слишком большая

• Команда слишком большая

• Система слишком сложная

• Система слишком новая

Page 40: Микросервисы на практике

40

•Микросервисы

• Не серебряная пуля

• Упрощают понимание

• Упрощают масштабирование

• Нужный инструмент для каждой цели

ВЫВОДЫ

Page 41: Микросервисы на практике

41

Page 42: Микросервисы на практике

42

Спасибо за внимание!