![Page 1: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/1.jpg)
Микросервисы: опыт использования в нагруженном проектеВадим Мадисон М-Тех
![Page 2: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/2.jpg)
• Услуги системной интеграции, начиная от разработки технологических решений и заканчивая доставкой видео-сигнала до конечного пользователя
• Интернет-видеоплатформа для каналов МатчТВ и НТВ-ПЛЮС
• 300 000 одновременных пользователей
• > 1 000 000 уникальных посетителей в сутки
• Отдаем контента до 300 Тб/час
![Page 3: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/3.jpg)
Про что эта история?
![Page 4: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/4.jpg)
История про …• Рост проекта • Развитие • Переосмысление работы системы и отдельных компонентов
![Page 5: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/5.jpg)
История про …
Масштабирование
![Page 6: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/6.jpg)
Пройденный путь
![Page 7: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/7.jpg)
Начало времен• 2 сервера в docker-кластере • DB запускается на тех же машинах, в контейнерах • Выделенного хранилища как такового нет • Инфраструктура минимальна
![Page 8: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/8.jpg)
Docker TeamCity
![Page 9: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/9.jpg)
Середина пути• 80 серверов в docker-кластере • Хранилище на базе CEPH • DB запускается на отдельных серверах • Пересмотр взаимодействия между сервисами • Выделенный мониторинг
![Page 10: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/10.jpg)
Наши дни• Несколько сотен серверов в docker-кластере • Сотни запущенных микросервисов • Выделение сервисов в отдельные зоны • Кластеризация шин обмена сообщениями между сервисами
![Page 11: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/11.jpg)
![Page 12: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/12.jpg)
Транспорт
![Page 13: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/13.jpg)
Транспорт
protobuf → gRPC → JSON
![Page 14: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/14.jpg)
![Page 15: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/15.jpg)
protobufПлюсы • Достаточно компактен • Есть быстрые реализации • Условно типизирован
Минусы • протокол становится
“проприетарным” • требуется поддерживать в актуальном состоянии утилиты для обращению к сервису
![Page 16: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/16.jpg)
protobufПлюсы • Достаточно компактен • Есть быстрые реализации • Условно типизирован
Минусы • протокол становится
“проприетарным” • требуется поддерживать в актуальном состоянии утилиты для обращения к сервису
![Page 17: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/17.jpg)
Транспорт
protobuf → gRPC → JSON
![Page 18: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/18.jpg)
Docker TeamCity
![Page 19: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/19.jpg)
gRPCПлюсы • HTTP/2 • Эффективность передачи • Работает из коробки • Поддержка основных серверных языков • Поддержка основных клиентских языков
Минусы • Вещь в себе • Сложность реализации собственной логики • Доступ к логам через собственные обертки и парсеры • Сложность работы в динамичной среде
![Page 20: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/20.jpg)
gRPCПлюсы • HTTP/2 • Эффективность передачи • Работает из коробки • Поддержка основных серверных языков • Поддержка основных клиентских языков
Минусы • Вещь в себе • Сложность реализации собственной логики • Доступ к логам через собственные обертки и парсеры • Усиливает зависимости между сервисами • Сложно версионируется
![Page 21: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/21.jpg)
Транспорт
protobuf → gRPC → JSON
![Page 22: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/22.jpg)
Docker TeamCity JSON
![Page 23: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/23.jpg)
JSONПлюсы • “Можно” HTTP/2 • Есть очень быстрые реализации • Поддержка повсеместно • Не требуется разрабатывать дополнительный инструментарий • Позволяется работать с
“частью данных”
![Page 24: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/24.jpg)
JSONПлюсы • “Можно” HTTP/2 • Есть очень быстрые реализации • Поддержка повсеместно • Не требуется разрабатывать дополнительный инструментарий • Позволяется работать с
“частью данных”
Минусы • Не компактен • Не типизирован
![Page 25: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/25.jpg)
Версионирование протокола
![Page 26: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/26.jpg)
Версионирование протокола
V1,V2,… → V1 + schema
![Page 27: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/27.jpg)
Версионирование протокола
V1,V2,… → V1 + schema
/api/v1/content /api/v2/content → /api/v1/content + JSON Schema v1.X /api/v3/content
![Page 28: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/28.jpg)
{ "id": "507f1f77bcf86cd7994390", "projectId": "507f1f77bcf86cd7994390", "content": "broadcast", "name": "Жопоног - Газмяз", "date" : { "start": "2005-08-09T18:31:42-03:30", "end": "2005-08-09T18:31:42-03:30" }, "source": "http://.../playlist.m3u8", "extra": { "videoType": "хоккей", "description": "Чемпионат мира по гребной травле тараканов" }, "listeningStatus": "fail", "status": "enabled"}
![Page 29: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/29.jpg)
{ "id": "507f1f77bcf86cd7994390", "projectId": "507f1f77bcf86cd7994390", "content": "broadcast", "name": "Жопоног - Газмяз", "date" : { "start": "2005-08-09T18:31:42-03:30", "end": "2005-08-09T18:31:42-03:30" }, "source": "http://.../playlist.m3u8", "extra": { "videoType": "хоккей", "description": "Чемпионат мира по гребной травле тараканов ;)" }, "listeningStatus": "fail", "status": "enabled"}
{ "$schema": "…", "type": "object", "properties": { "id": { "type": "string" }, "content": { "type": "string" }, "date": { "type": "object", "properties": { "start": { "type": "string" }, "end": { "type": "string" } }, "required": ["start","end"] }, "source": { "type": "string" }, "status": { "type": "string" }, … }, "required": ["id", "content", "date", "status"]}
![Page 30: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/30.jpg)
{ "id": "507f1f77bcf86cd7994390", "content": "broadcast", "date" : { "start": "2005-08-09T18:31:42-03:30", "end": "2005-08-09T18:31:42-03:30" }, "status": "enabled"}
{ "$schema": "…", "type": "object", "properties": { "id": { "type": "string" }, "content": { "type": "string" }, "date": { "type": "object", "properties": { "start": { "type": "string" }, "end": { "type": "string" } }, "required": ["start","end"] }, "source": { "type": "string" }, "status": { "type": "string" }, … }, "required": ["id", "content", "date", "status"]}
![Page 31: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/31.jpg)
Стабильность работы
![Page 32: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/32.jpg)
![Page 33: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/33.jpg)
Docker TeamCity JSON Grafana
![Page 34: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/34.jpg)
Выводы• Основная проблема — частично работающий сервис • Мертвый сервис - хорошо! • Каждый сервис должен знать свой лимит (Rate limit)! • Защита - паттерн Circuit Breaker
![Page 35: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/35.jpg)
Выводы• Основная проблема — частично работающий сервис • Мертвый сервис — хорошо! • Каждый сервис должен знать свой лимит (Rate limit)! • Защита - паттерн Circuit Breaker
![Page 36: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/36.jpg)
Выводы• Основная проблема — частично работающий сервис • Мертвый сервис — хорошо! • Каждый сервис должен знать свой лимит (Rate limit)! • Защита - паттерн Circuit Breaker
![Page 37: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/37.jpg)
Выводы• Основная проблема — частично работающий сервис • Мертвый сервис — хорошо! • Каждый сервис должен знать свой лимит (Rate limit)! • Защита — паттерн Circuit Breaker
![Page 38: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/38.jpg)
Docker TeamCity JSON Grafana
Hystrix
![Page 39: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/39.jpg)
![Page 40: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/40.jpg)
![Page 41: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/41.jpg)
Исполнение запроса
![Page 42: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/42.jpg)
1 2 3
4 5
![Page 43: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/43.jpg)
![Page 44: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/44.jpg)
Docker TeamCity JSON Grafana
HystrixAppdash
![Page 45: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/45.jpg)
![Page 46: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/46.jpg)
Docker TeamCity JSON Grafana
Hystrix
![Page 47: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/47.jpg)
общее время
![Page 48: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/48.jpg)
общее время
Обращение к БДвнутри сервиса
![Page 49: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/49.jpg)
TraceID: 19502dcb3e187d615eacf73a0ba1bfe0
![Page 50: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/50.jpg)
Docker TeamCity JSON Grafana
HystrixOpentracing
![Page 51: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/51.jpg)
Логирование
![Page 52: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/52.jpg)
Docker TeamCity JSON Grafana
HystrixOpentracingElastic + Kibana
![Page 53: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/53.jpg)
Логирование: сбор логов
![Page 54: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/54.jpg)
Логирование• добавляем TraceID в логи • строим Dashboard фильтром по TraceID • динамический DEBUG MODE
![Page 55: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/55.jpg)
Логирование• добавляем TraceID в логи • строим Dashboard фильтром по TraceID • динамический DEBUG MODE
![Page 56: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/56.jpg)
Агрегирование ошибок
![Page 57: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/57.jpg)
Docker TeamCity JSON Grafana
HystrixOpentracingElastic + Kibana
Sentry
![Page 58: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/58.jpg)
Масштабирование
![Page 59: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/59.jpg)
Docker TeamCity JSON Grafana
HystrixOpentracingElastic + Kibana
Sentry Nomad
![Page 60: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/60.jpg)
Docker TeamCity JSON Grafana
HystrixOpentracingElastic + Kibana
Sentry Consul VaultNomad
![Page 61: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/61.jpg)
Docker TeamCity JSON Grafana
HystrixOpentracingElastic + Kibana
Sentry Consul VaultKubernetes
![Page 62: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/62.jpg)
Стандартизация: RAM-CPU-NET
![Page 63: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/63.jpg)
Стандартизация: R3-C2-N1
![Page 64: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/64.jpg)
Стандартизация: матрица размерностей
CPU RAM NET
C1 = 500 MHz R1 = 128 MB N1 = 10 Mb
C2 = 1000 MHz R2 = 256 MB N2 = 100 Mb
C3 = 3000 Mhz R3 = 512 MB N3 = 1 Gb
![Page 65: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/65.jpg)
Стандартизация
•N1C3R1 → [10 Mb] [3000 MHz] [128 MB] •N1C2R3 → [10 Mb] [1500 MHz] [1 GB]
![Page 66: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/66.jpg)
Стандартизация
•N1C3R1 → [10 Mb] [3000 MHz] [128 MB] •N1C2R3 → [10 Mb] [1000 MHz] [1 GB]
![Page 67: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/67.jpg)
Подготовка: тип масштабируемости• Сервис полностью независим → тестируем предел для одного инстанса → тестируем 2 инстанса, чтобы проверить линейность
• Масштабируемость зависит от внешних ресурсов → при нагрузочном тестировании проводим
несколько раундов тестирования с увеличением количества инстансов
• Масштабируемость ограничена определенным лимитом → порог указывается в точке конфигурирования сервиса
![Page 68: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/68.jpg)
Подготовка: тип масштабируемости• Сервис полностью независим → тестируем предел для одного инстанса → тестируем 2 инстанса, чтобы проверить линейность
• Масштабируемость зависит от внешних ресурсов → при нагрузочном тестировании проводим
несколько раундов тестирования с увеличением количества инстансов
• Масштабируемость ограничена определенным лимитом → порог указывается в точке конфигурирования сервиса
![Page 69: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/69.jpg)
Подготовка: тип масштабируемости• Сервис полностью независим → тестируем предел для одного инстанса → тестируем 2 инстанса, чтобы проверить линейность
• Масштабируемость зависит от внешних ресурсов → при нагрузочном тестировании проводим
несколько раундов тестирования с увеличением количества инстансов
• Масштабируемость ограничена определенным лимитом → порог указывается в точке конфигурирования сервиса
![Page 70: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/70.jpg)
Подготовка: нагрузочное тестирование
![Page 71: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/71.jpg)
![Page 72: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/72.jpg)
![Page 73: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/73.jpg)
![Page 74: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/74.jpg)
Docker JSON Grafana
HystrixOpentracingElastic + Kibana
Sentry Consul VaultKubernetes Gitlab CI
TeamCity
![Page 75: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/75.jpg)
Рекомендации• Начинайте разработку сразу с использованием системы оркестрации • В каждый момент времени помните, что каждого инстанса сервиса должно быть не меньше 2-х • Шина сообщений, блокировки и очереди - наше все • Не нужно пытаться поднять/починить сервис - нужно отстрелить его и потом попробовать понять, что не так • Собирайте метрики и работайте с ними • Выдавайте алерты только там, где требуется реакция
![Page 76: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/76.jpg)
Рекомендации• Начинайте разработку сразу с использованием системы оркестрации • В каждый момент времени помните, что каждого инстанса сервиса должно быть не меньше 2-х • Шина сообщений, блокировки и очереди - наше все • Не нужно пытаться поднять/починить сервис - нужно отстрелить его и потом попробовать понять, что не так • Собирайте метрики и работайте с ними • Выдавайте алерты только там, где требуется реакция
![Page 77: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/77.jpg)
Рекомендации• Начинайте разработку сразу с использованием системы оркестрации • В каждый момент времени помните, что каждого инстанса сервиса должно быть не меньше 2-х • Шина сообщений, блокировки и очереди — наше все • Не нужно пытаться поднять/починить сервис - нужно отстрелить его и потом попробовать понять, что не так • Собирайте метрики и работайте с ними • Выдавайте алерты только там, где требуется реакция
![Page 78: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/78.jpg)
Рекомендации• Начинайте разработку сразу с использованием системы оркестрации • В каждый момент времени помните, что каждого инстанса сервиса должно быть не меньше 2-х • Шина сообщений, блокировки и очереди — наше все • Не нужно пытаться поднять/починить сервис — нужно отстрелить его и потом попробовать понять, что не так • Собирайте метрики и работайте с ними • Выдавайте алерты только там, где требуется реакция
![Page 79: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/79.jpg)
Рекомендации• Начинайте разработку сразу с использованием системы оркестрации • В каждый момент времени помните, что каждого инстанса сервиса должно быть не меньше 2-х • Шина сообщений, блокировки и очереди — наше все • Не нужно пытаться поднять/починить сервис — нужно отстрелить его и потом попробовать понять, что не так • Собирайте метрики и работайте с ними • Выдавайте алерты только там, где требуется реакция
![Page 80: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/80.jpg)
Рекомендации• Начинайте разработку сразу с использованием системы оркестрации • В каждый момент времени помните, что каждого инстанса сервиса должно быть не меньше 2-х • Шина сообщений, блокировки и очереди — наше все • Не нужно пытаться поднять/починить сервис — нужно отстрелить его и потом попробовать понять, что не так • Собирайте метрики и работайте с ними • Выдавайте алерты только там, где требуется реакция
![Page 81: Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)](https://reader030.vdocuments.mx/reader030/viewer/2022013123/586f902f1a28ab54768b78af/html5/thumbnails/81.jpg)
Спасибо!Вадим Мадисон
М-Тех