2. О чем доклад?
Что такое микросервисы и зачем они
нужны
SOA и MSOA: сходства и различия
Предусловия для перехода на (M)SOA
Как выделить микросервисы из монолита?
Бонус: что читать для погружения в тему
2
6. Отдельные «приложения» на разных
машинах?
«-»: Накладные расходы
«+»: Проще строить распределенные
системы
6
Автономные
7. Сервис должен уметь разворачиваться
самостоятельно вне зависимости от
наличия или отсутствия по соседству
других сервисов и без изменений в других
сервисах.
7
«Золотое правило»
8. Максимальная толерантность к
изменениям соседних сервисов
Слабая связанность
Коммуникация по сети
Использование разных технологий и
языков программирования
8
Взаимодействие
13. Зачем нужны микросервисы?
Быстро реализовать новую фичу
Быстро интегрировать ее в
существующую систему
Быстро протестировать
Быстро порелизить
13
14. Профит от сервиса как
отдельностоящего приложения
Не надо копаться в чужих задачах из
очереди на релиз
Меньше вероятности зааффектить
другие сервисы из-за глупых ошибок
Проще выделить зоны
ответственности конкретных людей за
конкретный код
14
16. Асинхронность и событийность
Не более одного синхронного действия за
один вызов
Реакция на события, генерируемые
другими микросервисами
16
17. Доступ к данным
Сервис не меняет данные другого
сервиса напрямую
Использование API для изменения
данных в соседнем сервисе
Использование очередей
17
19. Проектирование на отказ
(Design for failure)
Вся система в целом должна работать
так, как будто в любой момент любой из
микросервисов может оказаться не
доступен.
19
30. Пример про импорт данных
Основную информацию импортируем
синхронно из основного сервиса
Фотки загружает и импортирует
другой сервис
Анализом данных занимается третий
сервис
30
34. Начинать с монолита — проще!
Откалываем по кусочкам
Начинаем там, где от микросервисов
будет больше пользы
Уменьшаем количество коммуникаций
между модулями
34
Разбиваем монолит
38. Когда есть смысл переходить
на (микро-) сервисы
Команда разработчиков уже большая
или планируется ее расширение
Нужно реализовать много новых
крупных фич, в т.ч. новых сущностей
38
41. Необходимые инструменты
для перехода на микросервисы
или несколько слов на «авто-»
Автокопирование базовых файлов из шаблона
Авторазвервертвание (и автосвертывание)
микросервисов на боевых и любых окружениях
Автодокументация фронтендов
Автомониторинг фронтендов
Автоокументирование и автомониторинг
взаимодействия микросервисов между собой
41
43. Не ждите чуда, чудите сами
релизьте без тестирования
Релизьте сырое!
Релизьте с багами!
Релизьте то, что еще никто не
собирается использовать!
43
44. Другие важные темы
Как всё это тестировать?
Как разворачивать микросервисы на любом окружении?
Как масштабировать?
Как мониторить?
SLA и метрики на сервисы
Аутентификация и авторизация
44