SlideShare a Scribd company logo
SOA: строим свой service mesh
Иван Круглов | 08.11.2017
SOA: строим свой service mesh / Иван Круглов (Booking.com)
Повестка дня
• Проблема
• Решения
• Практика эксплуатации
• Заключение
монолит
монолит
сервис
сервис
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
data
bus
RPC ≠ PC*
* PC – procedure call
RPC ≠ PC*
* PC – procedure call
application
transport transport
provider
client library server
service consumer service provider
transport transport
load balancingdiscovery
retrytimeouts
circuit breakerback-off
authtracing/monitoring
queue timeouts
chaos monkeyprioritization
rate limiting
service consumer service provider
client library server
auth
...
SOA: послать запрос на сервер? Что может быть проще?!
https://www.youtube.com/watch?v=WASm5325GQg
http://junior.highload.ru/2017/abstracts/2577.html
SOA: строим свой service mesh / Иван Круглов (Booking.com)
Perl
Java
Go
Python
5 млн
main.git
4.5ГБ
7 мин
bare metal
Решения
Подход №1: умная библиотека
• библиотеки:
• Perl: in-house
• Java: finagle, histryx, grpc
• Go: go-kit, grpc
• плюсы:
• понятно
• готовые решения
• минусы:
• различия в инструментах и подходах
• сложный апгрейд версий
• сложная интеграция со старым кодом
• опциональное использование
load balancingdiscovery
authtimeouts
circuit breakerretry
tracing/monitoringback-off
SOA: строим свой service mesh / Иван Круглов (Booking.com)
Подход №2: локальный прокси
• плюсы:
• решение для любого стека
• консистентное поведение
• контролируемый апгрейд
• хорошая интеграция со старым кодом
• минусы:
• накладные расходы
• сложный сетап
application
127.0.0.1
proxy
service mesh
application provider
proxy proxy
service consumer service provider
control plane
data plane
control plane
1. listen
2. routing policy
3. failure handling policy
4. server discovery
5. …
• Java (based on Finagle)
• L7 proxy
• features:
• HTTP 1/2, gRPC
• ingress/egress
• load balancing
• retries and deadlines
• circuit breaker
• service discovery
• request routing
• dynamic configuration
• instrumentation
• C++
• L4/L7 proxy
• features:
• HTTP 1/2, gRPC
• ingress/egress
• load balancing
• retries and timeouts
• circuit breaker
• service discovery
• request routing
• dynamic configuration
• instrumentation
no graceful
restart
HTTP only
proxy
application provider
proxy proxy
service consumer service provider
control plane
data plane
control plane
application provider
proxy nginx
service consumer service provider
control plane
data plane
control plane
application provider
proxy nginx
service consumer service provider
control plane
data plane
control plane
application
envoy
provider
nginx
127.0.0.1:9211
GET / HTTP/1.1
Host: search.srv
route
discovery
cluster
discovery
server
discoverydomain: search.srv
cluster: search.srv.ams
timeout_ms: 2000
retry_on: 5xx
max_retries: 3
cluster: search.srv.ams
lb_type: random
connect_timeout_ms: 500
cluster: search.srv.ams
hosts: [ 10.1.1.1:443, 10.1.1.2:443 ]
GET / HTTP/1.1
Host: search.srvHTTP/1.1 200 OK
HTTP/1.1 500
HTTP/1.1 200 OK
service consumer service provider
control plane
HTTPS
application
envoy
provider
nginx
127.0.0.1:9211
GET / HTTP/1.1
Host: search.srv
route
discovery
cluster
discovery
server
discoverydomain: search.srv
cluster: search.srv.ams
timeout_ms: 2000
retry_on: 5xx
max_retries: 3
cluster: search.srv.ams
lb_type: random
connect_timeout_ms: 500
cluster: search.srv.ams
hosts: [ 10.1.1.1:443, 10.1.1.2:443 ]
GET / HTTP/1.1
Host: search.srvHTTP/1.1 200 OK
HTTP/1.1 200 OK
service consumer service provider
control plane
HTTPS
application provider
proxy nginx
service consumer service provider
control plane
data plane
control plane
route
discovery
cluster
discovery
server
discovery
ZooKeeper
control plane
Kubernetes
envoy
REST API
5 сек
istio.io
• control plane от Google
• очень умная
• но сложная
• production ready до конца 2017
• интеграция с:
• envoy, linkerd, nginx (nginmesh)
Istio
Production
envoy: практика
• ~1000 серверов
• сложности:
• HTTP заголовки в нижнем регистре
• много метрик
• проверено:
• рестарт не обрывает соединения
• умершая «control plane» не влияет на коммуникации
• timeout/retry/backoff/circuit breaker работают
p50
p75 p90
p95
p99
HTTP
perceived latency
0ms
5ms
10ms
15ms
+ 1ms
HTTPS
perceived latency
p50
p75 p90
p95
p99
10ms
+ 1ms
15ms
20ms
25ms
30ms
40ms
HTTPS 2K RPS
Заключение
• положительный опыт c service mesh и envoy
• в середине пути
• унификация и наличие из коробки:
• управления трафиком
• механизмов надёжности
• мониторинга и трейсинга
• большие планы
Заключение (продолжение)
• уделяйте внимание взаимодействию сервисов
• retry, backoff, таумауты, клиентский мониторинг, трейсинг, chaos monkey, …
• go-kit, histryx, finagle, grpc – если:
• гомогенная инфраструктура
• небольшая компания
• сильная культура
• нужна высокая производительность
• прокси – если:
• крупная компания
• гетерогенный стек
• следите за Istio
А как делаете вы?
Спасибо!
Иван Круглов
ivan.kruglov@booking.com
Ссылки
https://www.envoyproxy.io
https://linkerd.io/
https://istio.io/
https://github.com/nginmesh/nginmesh
https://github.com/go-kit/kit
https://github.com/twitter/finagle
https://github.com/Netflix/Hystrix
https://grpc.io/
Acknowledgement:
Peter Bourgon for the idea of monoliths -> SOA -> microservices slides.

More Related Content

PPTX
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
PDF
Реализация восстановления после аварий / Сергей Бурладян (Avito)
PDF
Anton Turetckii "What does it take to build a host?"
PDF
Современная операционная система: что надо знать разработчику / Александр Кри...
PDF
Консольные приложения на Go
PDF
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
PDF
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
PDF
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Anton Turetckii "What does it take to build a host?"
Современная операционная система: что надо знать разработчику / Александр Кри...
Консольные приложения на Go
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»

What's hot (20)

PPTX
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
PDF
Twisted Framework - сетевые приложения в Python
PPTX
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
PDF
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
PPTX
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
PDF
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
PPTX
Технологии хранения для больших проектов / Сергей Платонов (RAIDIX)
PPTX
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
PPTX
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
PDF
Юрий Насретдинов, Badoo
PPTX
Docker в работе: взгляд на использование в Badoo через год
PDF
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
PPTX
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
PDF
Архитектура хранения фотографий в Badoo
PPTX
Антон Турецкий
PDF
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
PDF
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
PDF
Семь тысяч Rps, один go
PDF
Механика DDoS (Александр Крижановский)
PDF
Анатомия веб сервиса (HighLoad-2014)
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Twisted Framework - сетевые приложения в Python
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
Технологии хранения для больших проектов / Сергей Платонов (RAIDIX)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Юрий Насретдинов, Badoo
Docker в работе: взгляд на использование в Badoo через год
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Архитектура хранения фотографий в Badoo
Антон Турецкий
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Семь тысяч Rps, один go
Механика DDoS (Александр Крижановский)
Анатомия веб сервиса (HighLoad-2014)
Ad

Similar to SOA: строим свой service mesh / Иван Круглов (Booking.com) (20)

PPTX
Service mesh для микросервисов
PPSX
SOA: послать запрос на сервер? Что может быть проще?!
PDF
Как превратить приложение в платформу
PPTX
SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...
PDF
Интеграция сервисных устройств в сеть ЦОД: интеграция сервисов 4-7 уровня
PDF
Рефакторинг монолита в микросервисы на Go
PDF
Рефакторинг монолита в микросервисы на Go / Refactoring of Monolithe to Micro...
PDF
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
PDF
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
PPTX
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
PDF
Сетевые решения Cisco для построения интеллектуальных облачных сетей
PPTX
Использование haproxy/iptables + etcd + confd для автоматического service-dis...
PDF
Использование haproxy/iptables+etcd+confd для автоматического service discove...
PPTX
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
PDF
Тимур Каримбаев (Ютинет.ру)
PPTX
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
PPTX
gRPC в продакшне для мобильных приложений
PDF
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
PDF
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
PDF
Автоматизация: технологии и средства
Service mesh для микросервисов
SOA: послать запрос на сервер? Что может быть проще?!
Как превратить приложение в платформу
SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...
Интеграция сервисных устройств в сеть ЦОД: интеграция сервисов 4-7 уровня
Рефакторинг монолита в микросервисы на Go
Рефакторинг монолита в микросервисы на Go / Refactoring of Monolithe to Micro...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Сетевые решения Cisco для построения интеллектуальных облачных сетей
Использование haproxy/iptables + etcd + confd для автоматического service-dis...
Использование haproxy/iptables+etcd+confd для автоматического service discove...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Тимур Каримбаев (Ютинет.ру)
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
gRPC в продакшне для мобильных приложений
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
Автоматизация: технологии и средства
Ad

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...

SOA: строим свой service mesh / Иван Круглов (Booking.com)