Мы начали разработку через микросервисы когда это еще не было трендом, было не ясно - это реально работающий подход или просто очередная модная штука. Не было понимания как это делать правильно, где подводные камни и что за одним словом “микросервисы” по факту стоит куча всего, что придется узнать, изучить и понять.
Сейчас у нас большой парк микросервисов, но оперировать ими становится все проще - сказывается опыт.
В ходе доклада я поделюсь основными моментами в разработке микросервисов, расскажу как это делаем мы и что для этого используем.
2. • Услуги системной интеграции, начиная от разработки технологических
решений и заканчивая доставкой видео-сигнала до конечного пользователя
• Интернет-видеоплатформа для каналов МатчТВ и НТВ-ПЛЮС
• 300 000 одновременных пользователей
• > 1 000 000 уникальных посетителей в сутки
• Отдаем контента до 300 Тб/час
10. Плюсы микросервисов
• Независимая разработка
• Лучший контроль технического и технологического долга
• Скорость тестирования, доставки, запуска
• Упрощение масштабирования
11. Когда микросервисы не нужны / вредны?
• Небольшой проект
• Сжатые сроки разработки
• Короткий цикл поддержки
• Отсутствие CI / CD
• Нет команды, отвечающей за инфраструктуру
• Высокие требования к эффективности
12. Когда микросервисы “must have”?
• Большой проект
• Высокие нагрузки
• Долгий цикл разработки
• Длительный период жизни и поддержки
• Высокие требования к использованию оптимальных технологий
• Готовы к исследованиям, оптимизациям и новым технологиям
15. Сервис независим если…
• Возможно описать бизнес-задачу сервиса одним простым
предложением
• У сервиса больше одного потребителя
• Деплой сервиса не приводит к деплою других сервисов
16. Сервис независим если…
• Возможно описать бизнес-задачу сервиса одним простым
предложением
• У сервиса больше одного потребителя
• Деплой сервиса не приводит к деплою других сервисов
17. Сервис независим если…
• Возможно описать бизнес-задачу сервиса одним простым
предложением
• У сервиса больше одного потребителя
• Деплой сервиса не приводит к деплою других сервисов
19. Общие рекомендации
• Не использовать фреймворки
• Собирать проект из шаблона
• Не бояться “copy-paste”
• Обратить внимание на манифест
“12-факторное приложение”
20. Общие рекомендации
• Не использовать фреймворки
• Собирать проект из шаблона
• Не бояться “copy-paste”
• Обратить внимание на манифест
“12-факторное приложение”
21. Общие рекомендации
• Не использовать фреймворки
• Собирать проект из шаблона
• Не бояться “copy-paste”
• Обратить внимание на манифест
“12-факторное приложение”
22. Общие рекомендации
• Не использовать фреймворки
• Собирать проект из шаблона
• Не бояться “copy-paste”
• Обратить внимание на манифест
“12-факторное приложение”
https://12factor.net/ru/
24. Конфигурация
Что пробовали?
• файлы конфигурации при деплое разливать по всем целевым
машинам
• файлы конфигурации класть в контейнер
• выставлять переменные окружения
• при сборке контейнера (ENV DB=…)
• при запуске контейнера
25. Конфигурация
Что пробовали?
• файлы конфигурации при деплое разливать по всем целевым
машинам
• файлы конфигурации класть в контейнер
• выставлять переменные окружения
• при сборке контейнера (ENV DB=…)
• при запуске контейнера
26. Конфигурация
Что пробовали?
• файлы конфигурации при деплое разливать по всем целевым
машинам
• файлы конфигурации класть в контейнер
• выставлять переменные окружения
• при сборке контейнера (ENV DB=…)
• при запуске контейнера
32. Конфигурация
1. git2consul
• не используем отдельные проекты/бранчи в git для основных
параметров
• загружаем конфигурацию при деплое
• стартовый путь:
/conf/ms/<ИМЯ СЕРВИСА>/<BUILD NO>/
2. Vault
все секретное храним в отдельных проектах
38. В чем сложность?
• Корректность взаимодействия с другими сервисами
• Сервис назначения доступен, но:
• Отвечает очень медленно
• Отвечает эпизодически
• Отвечает некорректно
39. В чем сложность?
• Корректность взаимодействия с другими сервисами
• Сервис назначения доступен, но:
• Отвечает очень медленно
• Отвечает эпизодически
• Отвечает некорректно
40. В чем сложность?
• Корректность взаимодействия с другими сервисами
• Сервис назначения доступен, но:
• Отвечает очень медленно
• Отвечает эпизодически
• Отвечает некорректно
Circuit Breaker!
[Hystrix, Netflix]
41. В чем сложность?
• Корректность взаимодействия с другими сервисами
• Сервис назначения доступен, но:
• Отвечает очень медленно
• Отвечает эпизодически
• Отвечает некорректно
Circuit Breaker!
[Hystrix, Netflix]
59. Чек-лист
Как конфигурировать?
Как мониторить и считать метрики?
Как сервисы будут находить друг друга?
Как сервис будет взаимодействовать с остальными частями проекта?
Как тестировать сервис и систему целиком?
Как обрабатывать сбои связанных сервисов?
Как переезжать на новую версию?
Как масштабировать под нагрузкой?