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

Post on 21-Feb-2017

536 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

Transcript

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

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

на практике

2015

2

Agenda

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

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

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

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

Agenda

3

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

Монолитное

приложение

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

приложение

4

Монолит

APP

Налоги Emailing

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

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

5

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

company.com

Приложение

1

APP

Налоги Emailing

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

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

Издателей

Приложение

2

6

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

Налоги

Emailing

Отчеты

APP

Кредитки

Скидки

Справочник

Издателей

Postgre

SQL

Mongo

REST

7

За и Против

Плюсы

+ Протокол

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

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

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

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

8

За и Против

Минусы

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

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

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

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

9

Business Capabilities

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

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

• отчеты

• кредитки

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

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

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

10

Infrastructure

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

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

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

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

11

Infrastructure Automation

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

• Continuous Integration• Jenkins

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

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

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

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

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

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

• Chef

12

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

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

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

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

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

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

13

Decentralized Governance

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

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

• Фреймворки

• Базы Данных

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

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

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

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

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

14

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

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

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

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

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

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

15

Decentralized Data

PostgreSQL MongoDB

ROA СкидкиREST

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

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

• polyglot persistence

• MongoDB/PostgreSQL/Lucene

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

16

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

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

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

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

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

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

17

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

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

• REST

• Messaging

• JMS

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

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

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

18

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

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

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

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

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

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

19

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

•Найти отказ

• Мониторинг

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

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

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

• High Availability (Load balancing)

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

Design for failure

20

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

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

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

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

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

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

21

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

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

• Синхронное

• обычно R в CRUD

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

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

Сканировани

е документа

асинхЗаказ

документа

Чтение из БД

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

заказа

22

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

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

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

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

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

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

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

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

23

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

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

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

Запрос

Сохранение

Обработка

БД Клиента

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

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

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

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

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

24

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

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

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

Запрос

Сохранение

Обработка

БД Клиента

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

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

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

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

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

25

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

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

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

Запрос

Сохранение

Обработка

БД Клиента

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

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

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

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

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

26

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

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

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

Запрос

Сохранение

Обработка

БД Клиента

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

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

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

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

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

27

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

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

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

Запрос

Сохранение

Обработка

БД Клиента

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

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

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

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

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

28

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

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

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

Запрос

Сохранение

Обработка

БД Клиента

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

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

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

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

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

29

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

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

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

Запрос

Сохранение

Обработка

БД Клиента

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

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

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

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

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

30

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

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

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

Запрос

Сохранение

Обработка

БД Клиента

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

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

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

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

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

31

Отказы (Failures)

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

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

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

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

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

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

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

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

32

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

33

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

34

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

35

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

36

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

37

Redelivery & DLQ

Очередь1 Consumer

Повторная

доставка

(X попыток)

чтение

БрокерActiveMQ

DLQ

перемещение

Служба

поддержки

просмотр

исправление

запрос

38

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

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

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

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

39

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

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

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

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

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

40

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

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

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

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

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

ВЫВОДЫ

41

42

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

top related