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

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

Feb 21, 2017

Download

Technology

Vitebsk DSC
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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

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