SlideShare a Scribd company logo
Software Craftsmanship
meetup #4
Интеграция систем и очереди
сообщений
Павел Вейник
CTO @ Splitmetrics
CEO @ Hard & Soft Skills
Зачем митапы?
Поделиться с разработчиками Splitmetrics
Поделиться со всеми разработчиками
Обкатать новый курс для техлидов
Пообщаться
Для кого митапы?
Для разработчиков
Для тестировщиков
Для сочувствующих и интересующихся
Мы на новом месте
Зарегистрировались 89 человек
И на этот раз есть место для всех
Кто проводит митапы
Компания Splitmetrics
35 человек, все в офисе в Минске
2 продукта в области рекламы, 5 лет
Продажи SaaS из РБ на запад
Python, pg, Kafka, RabbitMq, Celery…
Кто проводит митапы
План митапов
1. Software Craftsmanship & Agile.
Как не делать говно?
2. Принципы хранения данных
3. Обзор баз данных
4. Очереди сообщений
5. Кэши и файловые хранилища
Software Craftsmanship
 Working software over
comprehensive documentation
 Responding to change over
following a plan
 Individuals and interactions
over processes and tools
 Customer collaboration over
contract negotiation
 Not only working software, but
also well-crafted software
 Not only responding to change,
but also steadily adding value
 Not only individuals and
interactions, but also a
community of professionals
 Not only customer collaboration,
but also productive
partnerships
Давай практику!
Запросы на «практические задачи»
Заканчиваются повторением ошибок, которые
пройдены уже лет 30-50 назад
И развитие останавливается
Знание одного принципа освобождает от
знания тысячи фактов
План этого митапа
1. Интеграция систем
2. Очереди сообщений
3. Производительность и детали
4. Задачки на архитектуру
Проблемы интеграции
Ненадежные сети
Медленные сети
Все приложения
разные
Изменения
неизбежны
Много верных
решений
Что верно, понятно
через много месяцев
Нет четких правил
Синхронные архитектуры интеграции
Синхронные децентрализованные
Прямолинейно – кому надо тот и вызывает
Не подходит для сложных потоков данных
Не подходит для часто изменяемых систем
Неудобно для highload
Синхронные оркестрированные
последовательные
Более гибкое управление – все на
оркестраторе
Грузит оркестратор, одна точка отказа
Подходит для системы с highload чтением
Синхронные оркестрированные
параллельные
Более эффективно, меньше время ответа
Сложнее управлять оркестрацией
Больше пропускная способность
Подходит для highload чтения
Недостатки синхронных подходов
 Отдельное управление мощностью каждого сервиса
 Возможны каскадные падения, эффект домино
 Сложнее балансировать
 Сложнее service discovery
 Высокая связность
Каждый знает API каждого
Трудно с версиями
Асинхронные архитектуры интеграции
Асинхронные choreographed события
 Каждый компонент в ответ шлет новое событие, которое
принимает следующий компонент
 Все еще сильная связность компонентов
 Хорошо для явных действий, таких как индексирование,
оповещения, обработка ошибок
 Хорошо масштабируется
 Трудно управлять потоком обработки
 Удобно для highload записи
Последовательные оркестрованные
асинхронные события
Одна точка отказа
Легко менять поток обработки
Хорошо для highload записи
Низкая связность, все только в оркестраторе
Гибридные с оркестрацией и хореографией
Оркестрация хороша для явного управления
потоком
Хореография прячет некоторые компоненты от
оркестратора
Недостатки асихронных архитектур
Вся система сложнее
Нужны асинхронные обертки для синхронных
потребителей сообщений
Недостатки асихронных архитектур
Оптимизация или только для чтения, или
только для записи для систем среднего
размера
Одна точка отказа
Eventual consistency – можем прочитать не
последние данные
Service Oriented Architecture SOA
 Основана на сервисах, отражающих бизнес-задачи
 Использует оркестрацию
 Высокие требования к инфраструктуре
 Реализация сервисов зависит от инфраструктуры, сервисы без
контекста не имеют смысла
 Требуют строгости при реализации
Message Oriented Middleware MOM
 Шлем сообщения между распределенными системами
 Системы могут быть на разных технологиях, платформах
 Уменьшает сложность разработки
 Позволяют независимую разработку систем-участниц
Преимущества MOM
Хранить сообщения в буфере
Управлять потоком сообщений
Преобразовывать сообщения
Преимущества MOM – асинхронность
Если получатель или отправитель оффлайн –
все остальное работает
Бэкап сообщений
Падение одного не влияет на остальных
Получается низкая связность
Преимущества MOM – перенаправление
сообщений
Послать сообщение всем клиентам broadcast
Некоторым клиентам – multicast
И более сложные схемы направления
сообщений в зависимости от их содержания
или других параметров
Преимущества MOM – преобразование
сообщений
Возможно преобразование сообщения в
процессе передачи
Можно работать с разными форматами
данных, не меняя компоненты, преобразуя на
лету
Ниже связность между компонентами
Недостатки MOM
+1 компонент
Нужен дополнительный агент, которые
получает, передает, хранит, преобразовывает
сообщения
Компоненту нужна инфраструктура,
поддержка, конфигурирование, мониторинг
Система в целом сложнее
Недостатки MOM – проблемы с
синхронностью
Нельзя прямо реализовать синхронный вызов
Есть эмуляция синхронности
Между отправкой сообщения и его обработкой
может пройти много времени
Другие подходы к интеграции
Передача файлов
Разделяемая бд
RPC
Шаблоны проектирования
 Шаблоны – экстернализованный опыт других умных людей
 Наша задача – освоить опыт, о котором говорится в шаблоне
 Перевести опыт в интуицию
 Нельзя выбирать шаблоны людям с небольшим опытом
 Проще думать о том, чего нельзя делать в проектировании, чем помнить
все возможные варианты шаблонов
 Нет хуже подхода, чем «сделать – страдать – переделать»
 Желательно сначала подумать
Как выбирать шаблон проектирования?
Интуитивно
Рассмотреть несколько вариантов
Формального критерия нет
Есть корреляция между опытом архитектора и
качеством системы
Нет корреляции между формальными признаками и
качеством
Шаблон Message Bus
Какая архитектура позволяет системам работать
вместе, но так чтобы систему можно было добавить и
удалить, не влияя на другие системы?
По мере роста всего решения, как можно снизить
расходы на добавление или удаление систем?
Требования к интеграции систем
 Зависимости между системами должны быть минимальны
 Количество связей между системами (n*(n-1)/2 связей в
полном графе) должно быть небольшим
 Объем изменений в каждой системе должен быть небольшим
 Легкость добавления еще одной системы
Шаблон Message Bus – решение
Шаблон Message Bus – решение
Шина передает сообщения между приложениями
Ключевые элементы:
Набор схем данных для сообщений
Набор сообщений
Общая инфраструктура для отправки и получения
сообщений
Очереди сообщений
Всего примерно 40-50
queues.io
Бывают
Brokerless – p2p
Brokered – есть сервер
Популярные очереди
Nanomsg
ZeroMQ
ActiveMQ
NATS
Kafka
Kestrel
NSQ
RabbitMQ
Redis
ruby-nats
Производительность очередей
Latency
Время передачи одного сообщения
Throughput
Количество сообщений в секунду
Throughput
Throughput
Latency
Latency
Latency
Latency
Задача 1
Давайте придумаем, как сделать
Яндекс.Метрику )
Не только про очереди
А еще про много всякого
Задача
Предложите свои задачи
Не менять постановку после озвучивания
Только уточнять
Постановка – 5 предложений
Ссылки
 https://medium.com/@priyaaank/patterns-for-microservices-e57a2d71ff9e
 http://queues.io/
 https://medium.com/startlovingyourself/need-of-messaging-queues-in-microservices-architecture-
91de0db89120
 https://www.enterpriseintegrationpatterns.com/patterns/messaging/
 https://bravenewgeek.com/dissecting-message-queues/
 https://habr.com/ru/post/326880/
 https://nats.io/about/
 https://github.com/tylertreat/mq-benchmarking
 https://bravenewgeek.com/benchmarking-message-queue-latency/
 http://highload.guide/blog/queues-and-lock.html
Задайте мне вопрос

More Related Content

What's hot

Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)
Ontico
 
DevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииDevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииAndrey Rebrov
 
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOpsSECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON
 
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps_Fest
 
Евгений Кривошеев. Beyond DevOps
Евгений Кривошеев. Beyond DevOpsЕвгений Кривошеев. Beyond DevOps
Евгений Кривошеев. Beyond DevOps
ScrumTrek
 
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Ontico
 
Devops: от заката до рассвета
Devops: от заката до рассветаDevops: от заката до рассвета
Devops: от заката до рассвета
Alexander Titov
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
DevDay
 
Длинный путь к DevOps?
Длинный путь к DevOps?Длинный путь к DevOps?
Длинный путь к DevOps?
CEE-SEC(R)
 
Software craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellenceSoftware craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellence
Pavel Veinik
 
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по AgileКонстантин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
ScrumTrek
 
Практика DevOps в крупных организациях
Практика DevOps в крупных организацияхПрактика DevOps в крупных организациях
Практика DevOps в крупных организациях
Softmart
 
Как проекты приходят к DevOps?
Как проекты приходят к DevOps?Как проекты приходят к DevOps?
Как проекты приходят к DevOps?
SQALab
 
Методологии разработки ПО
Методологии разработки ПОМетодологии разработки ПО
Методологии разработки ПО
Vadim Lyakhovets
 
Дмитрий Грибов, Трава и грибы как средства управления разработкой
Дмитрий Грибов, Трава и грибы как средства управления разработкойДмитрий Грибов, Трава и грибы как средства управления разработкой
Дмитрий Грибов, Трава и грибы как средства управления разработкой
ScrumTrek
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, Erlyvideo
Badoo Development
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуAndrey Rebrov
 
вебинар 2601 эффективность интернет магазина
вебинар 2601 эффективность интернет магазинавебинар 2601 эффективность интернет магазина
вебинар 2601 эффективность интернет магазинаАндрей Степенко
 
Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего
Pavel Veinik
 
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
ScrumTrek
 

What's hot (20)

Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)
 
DevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииDevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюции
 
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOpsSECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
 
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
 
Евгений Кривошеев. Beyond DevOps
Евгений Кривошеев. Beyond DevOpsЕвгений Кривошеев. Beyond DevOps
Евгений Кривошеев. Beyond DevOps
 
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
 
Devops: от заката до рассвета
Devops: от заката до рассветаDevops: от заката до рассвета
Devops: от заката до рассвета
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
Длинный путь к DevOps?
Длинный путь к DevOps?Длинный путь к DevOps?
Длинный путь к DevOps?
 
Software craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellenceSoftware craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellence
 
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по AgileКонстантин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
 
Практика DevOps в крупных организациях
Практика DevOps в крупных организацияхПрактика DevOps в крупных организациях
Практика DevOps в крупных организациях
 
Как проекты приходят к DevOps?
Как проекты приходят к DevOps?Как проекты приходят к DevOps?
Как проекты приходят к DevOps?
 
Методологии разработки ПО
Методологии разработки ПОМетодологии разработки ПО
Методологии разработки ПО
 
Дмитрий Грибов, Трава и грибы как средства управления разработкой
Дмитрий Грибов, Трава и грибы как средства управления разработкойДмитрий Грибов, Трава и грибы как средства управления разработкой
Дмитрий Грибов, Трава и грибы как средства управления разработкой
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, Erlyvideo
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почему
 
вебинар 2601 эффективность интернет магазина
вебинар 2601 эффективность интернет магазинавебинар 2601 эффективность интернет магазина
вебинар 2601 эффективность интернет магазина
 
Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего
 
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
 

Similar to Software craftsmanship meetup #4

О чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных системО чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных систем
Artem Volftrub
 
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...CodeFest
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование системMedia Gorod
 
บริหารเวลา
บริหารเวลาบริหารเวลา
บริหารเวลาtoomtam
 
Управление &#1087...
Управление &#1087...Управление &#1087...
Управление &#1087...akor
 
Alfresco как система для СЭД
Alfresco как система для СЭДAlfresco как система для СЭД
Alfresco как система для СЭД
Sergey Gorobets
 
Что вас ждет на пути реализации Soa (Битрикс отступает)
Что вас ждет на пути реализации Soa (Битрикс отступает)Что вас ждет на пути реализации Soa (Битрикс отступает)
Что вас ждет на пути реализации Soa (Битрикс отступает)
Василий Савунов
 
Проблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектовПроблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектов
Агентство AlterEGO
 
презентация.1
презентация.1презентация.1
презентация.1
Ivan Mashkantsev
 
Модель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработкиМодель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработки
CUSTIS
 
Как веб-студии себе СУП выбирали
Как веб-студии себе СУП выбиралиКак веб-студии себе СУП выбирали
Как веб-студии себе СУП выбиралиMedia Gorod
 
Pedalim vacancy IT HR
Pedalim vacancy IT HRPedalim vacancy IT HR
Pedalim vacancy IT HR
IT-HR Club
 
Training Labs (www.cmcons.com)
Training Labs (www.cmcons.com)Training Labs (www.cmcons.com)
Training Labs (www.cmcons.com)
Alexander Novichkov
 
Консалтинг высоконагруженных web систем
Консалтинг высоконагруженных web системКонсалтинг высоконагруженных web систем
Консалтинг высоконагруженных web системMedia Gorod
 
How to assess the company's readiness to intelligent automation of office pro...
How to assess the company's readiness to intelligent automation of office pro...How to assess the company's readiness to intelligent automation of office pro...
How to assess the company's readiness to intelligent automation of office pro...
Alexandre Prozoroff
 
LanDocs Business Suite
LanDocs Business SuiteLanDocs Business Suite
LanDocs Business Suite
Alexey Fitiskin
 
New тенденции рынка что заменит сэд в самом ближайшем будущем
New тенденции рынка что заменит сэд в самом ближайшем будущемNew тенденции рынка что заменит сэд в самом ближайшем будущем
New тенденции рынка что заменит сэд в самом ближайшем будущем
Pavel Eyges (1900+)
 
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
Software craftsmanship meetup #9. Логирование, мониторинг, оповещениеSoftware craftsmanship meetup #9. Логирование, мониторинг, оповещение
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
Pavel Veinik
 
TAdviser. СЭД-ECM-EDI - 2016. Mакаров
TAdviser. СЭД-ECM-EDI - 2016. MакаровTAdviser. СЭД-ECM-EDI - 2016. Mакаров
TAdviser. СЭД-ECM-EDI - 2016. Mакаров
Stanislav Makarov
 
Платформа SmartActors
Платформа SmartActorsПлатформа SmartActors
Платформа SmartActors
etyumentcev
 

Similar to Software craftsmanship meetup #4 (20)

О чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных системО чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных систем
 
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование систем
 
บริหารเวลา
บริหารเวลาบริหารเวลา
บริหารเวลา
 
Управление &#1087...
Управление &#1087...Управление &#1087...
Управление &#1087...
 
Alfresco как система для СЭД
Alfresco как система для СЭДAlfresco как система для СЭД
Alfresco как система для СЭД
 
Что вас ждет на пути реализации Soa (Битрикс отступает)
Что вас ждет на пути реализации Soa (Битрикс отступает)Что вас ждет на пути реализации Soa (Битрикс отступает)
Что вас ждет на пути реализации Soa (Битрикс отступает)
 
Проблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектовПроблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектов
 
презентация.1
презентация.1презентация.1
презентация.1
 
Модель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработкиМодель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработки
 
Как веб-студии себе СУП выбирали
Как веб-студии себе СУП выбиралиКак веб-студии себе СУП выбирали
Как веб-студии себе СУП выбирали
 
Pedalim vacancy IT HR
Pedalim vacancy IT HRPedalim vacancy IT HR
Pedalim vacancy IT HR
 
Training Labs (www.cmcons.com)
Training Labs (www.cmcons.com)Training Labs (www.cmcons.com)
Training Labs (www.cmcons.com)
 
Консалтинг высоконагруженных web систем
Консалтинг высоконагруженных web системКонсалтинг высоконагруженных web систем
Консалтинг высоконагруженных web систем
 
How to assess the company's readiness to intelligent automation of office pro...
How to assess the company's readiness to intelligent automation of office pro...How to assess the company's readiness to intelligent automation of office pro...
How to assess the company's readiness to intelligent automation of office pro...
 
LanDocs Business Suite
LanDocs Business SuiteLanDocs Business Suite
LanDocs Business Suite
 
New тенденции рынка что заменит сэд в самом ближайшем будущем
New тенденции рынка что заменит сэд в самом ближайшем будущемNew тенденции рынка что заменит сэд в самом ближайшем будущем
New тенденции рынка что заменит сэд в самом ближайшем будущем
 
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
Software craftsmanship meetup #9. Логирование, мониторинг, оповещениеSoftware craftsmanship meetup #9. Логирование, мониторинг, оповещение
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
 
TAdviser. СЭД-ECM-EDI - 2016. Mакаров
TAdviser. СЭД-ECM-EDI - 2016. MакаровTAdviser. СЭД-ECM-EDI - 2016. Mакаров
TAdviser. СЭД-ECM-EDI - 2016. Mакаров
 
Платформа SmartActors
Платформа SmartActorsПлатформа SmartActors
Платформа SmartActors
 

More from Pavel Veinik

Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Pavel Veinik
 
System Engineering Webinar
System Engineering WebinarSystem Engineering Webinar
System Engineering Webinar
Pavel Veinik
 
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Pavel Veinik
 
Software craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interactionSoftware craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interaction
Pavel Veinik
 
Software craftsmanship 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and ResiliencySoftware craftsmanship 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and Resiliency
Pavel Veinik
 
Software craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the MonolithSoftware craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the Monolith
Pavel Veinik
 
Software craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsSoftware craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systems
Pavel Veinik
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Pavel Veinik
 
Software craftsmanship 3
Software craftsmanship 3Software craftsmanship 3
Software craftsmanship 3
Pavel Veinik
 
Women in technology_week-women_leadership
Women in technology_week-women_leadershipWomen in technology_week-women_leadership
Women in technology_week-women_leadership
Pavel Veinik
 
Career day 2019
Career day 2019Career day 2019
Career day 2019
Pavel Veinik
 
Программирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстовПрограммирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстов
Pavel Veinik
 
Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.
Pavel Veinik
 

More from Pavel Veinik (13)

Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
 
System Engineering Webinar
System Engineering WebinarSystem Engineering Webinar
System Engineering Webinar
 
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
 
Software craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interactionSoftware craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interaction
 
Software craftsmanship 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and ResiliencySoftware craftsmanship 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and Resiliency
 
Software craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the MonolithSoftware craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the Monolith
 
Software craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsSoftware craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systems
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчика
 
Software craftsmanship 3
Software craftsmanship 3Software craftsmanship 3
Software craftsmanship 3
 
Women in technology_week-women_leadership
Women in technology_week-women_leadershipWomen in technology_week-women_leadership
Women in technology_week-women_leadership
 
Career day 2019
Career day 2019Career day 2019
Career day 2019
 
Программирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстовПрограммирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстов
 
Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.
 

Software craftsmanship meetup #4

  • 1. Software Craftsmanship meetup #4 Интеграция систем и очереди сообщений Павел Вейник CTO @ Splitmetrics CEO @ Hard & Soft Skills
  • 2. Зачем митапы? Поделиться с разработчиками Splitmetrics Поделиться со всеми разработчиками Обкатать новый курс для техлидов Пообщаться
  • 3. Для кого митапы? Для разработчиков Для тестировщиков Для сочувствующих и интересующихся
  • 4. Мы на новом месте Зарегистрировались 89 человек И на этот раз есть место для всех
  • 5. Кто проводит митапы Компания Splitmetrics 35 человек, все в офисе в Минске 2 продукта в области рекламы, 5 лет Продажи SaaS из РБ на запад Python, pg, Kafka, RabbitMq, Celery…
  • 7. План митапов 1. Software Craftsmanship & Agile. Как не делать говно? 2. Принципы хранения данных 3. Обзор баз данных 4. Очереди сообщений 5. Кэши и файловые хранилища
  • 8. Software Craftsmanship  Working software over comprehensive documentation  Responding to change over following a plan  Individuals and interactions over processes and tools  Customer collaboration over contract negotiation  Not only working software, but also well-crafted software  Not only responding to change, but also steadily adding value  Not only individuals and interactions, but also a community of professionals  Not only customer collaboration, but also productive partnerships
  • 9. Давай практику! Запросы на «практические задачи» Заканчиваются повторением ошибок, которые пройдены уже лет 30-50 назад И развитие останавливается Знание одного принципа освобождает от знания тысячи фактов
  • 10. План этого митапа 1. Интеграция систем 2. Очереди сообщений 3. Производительность и детали 4. Задачки на архитектуру
  • 11. Проблемы интеграции Ненадежные сети Медленные сети Все приложения разные Изменения неизбежны Много верных решений Что верно, понятно через много месяцев Нет четких правил
  • 13. Синхронные децентрализованные Прямолинейно – кому надо тот и вызывает Не подходит для сложных потоков данных Не подходит для часто изменяемых систем Неудобно для highload
  • 14.
  • 15. Синхронные оркестрированные последовательные Более гибкое управление – все на оркестраторе Грузит оркестратор, одна точка отказа Подходит для системы с highload чтением
  • 16.
  • 17. Синхронные оркестрированные параллельные Более эффективно, меньше время ответа Сложнее управлять оркестрацией Больше пропускная способность Подходит для highload чтения
  • 18. Недостатки синхронных подходов  Отдельное управление мощностью каждого сервиса  Возможны каскадные падения, эффект домино  Сложнее балансировать  Сложнее service discovery  Высокая связность Каждый знает API каждого Трудно с версиями
  • 20. Асинхронные choreographed события  Каждый компонент в ответ шлет новое событие, которое принимает следующий компонент  Все еще сильная связность компонентов  Хорошо для явных действий, таких как индексирование, оповещения, обработка ошибок  Хорошо масштабируется  Трудно управлять потоком обработки  Удобно для highload записи
  • 21.
  • 22. Последовательные оркестрованные асинхронные события Одна точка отказа Легко менять поток обработки Хорошо для highload записи Низкая связность, все только в оркестраторе
  • 23. Гибридные с оркестрацией и хореографией Оркестрация хороша для явного управления потоком Хореография прячет некоторые компоненты от оркестратора
  • 24. Недостатки асихронных архитектур Вся система сложнее Нужны асинхронные обертки для синхронных потребителей сообщений
  • 25. Недостатки асихронных архитектур Оптимизация или только для чтения, или только для записи для систем среднего размера Одна точка отказа Eventual consistency – можем прочитать не последние данные
  • 26. Service Oriented Architecture SOA  Основана на сервисах, отражающих бизнес-задачи  Использует оркестрацию  Высокие требования к инфраструктуре  Реализация сервисов зависит от инфраструктуры, сервисы без контекста не имеют смысла  Требуют строгости при реализации
  • 27. Message Oriented Middleware MOM  Шлем сообщения между распределенными системами  Системы могут быть на разных технологиях, платформах  Уменьшает сложность разработки  Позволяют независимую разработку систем-участниц
  • 28. Преимущества MOM Хранить сообщения в буфере Управлять потоком сообщений Преобразовывать сообщения
  • 29. Преимущества MOM – асинхронность Если получатель или отправитель оффлайн – все остальное работает Бэкап сообщений Падение одного не влияет на остальных Получается низкая связность
  • 30. Преимущества MOM – перенаправление сообщений Послать сообщение всем клиентам broadcast Некоторым клиентам – multicast И более сложные схемы направления сообщений в зависимости от их содержания или других параметров
  • 31. Преимущества MOM – преобразование сообщений Возможно преобразование сообщения в процессе передачи Можно работать с разными форматами данных, не меняя компоненты, преобразуя на лету Ниже связность между компонентами
  • 32. Недостатки MOM +1 компонент Нужен дополнительный агент, которые получает, передает, хранит, преобразовывает сообщения Компоненту нужна инфраструктура, поддержка, конфигурирование, мониторинг Система в целом сложнее
  • 33. Недостатки MOM – проблемы с синхронностью Нельзя прямо реализовать синхронный вызов Есть эмуляция синхронности Между отправкой сообщения и его обработкой может пройти много времени
  • 34. Другие подходы к интеграции Передача файлов Разделяемая бд RPC
  • 35. Шаблоны проектирования  Шаблоны – экстернализованный опыт других умных людей  Наша задача – освоить опыт, о котором говорится в шаблоне  Перевести опыт в интуицию  Нельзя выбирать шаблоны людям с небольшим опытом  Проще думать о том, чего нельзя делать в проектировании, чем помнить все возможные варианты шаблонов  Нет хуже подхода, чем «сделать – страдать – переделать»  Желательно сначала подумать
  • 36. Как выбирать шаблон проектирования? Интуитивно Рассмотреть несколько вариантов Формального критерия нет Есть корреляция между опытом архитектора и качеством системы Нет корреляции между формальными признаками и качеством
  • 37. Шаблон Message Bus Какая архитектура позволяет системам работать вместе, но так чтобы систему можно было добавить и удалить, не влияя на другие системы? По мере роста всего решения, как можно снизить расходы на добавление или удаление систем?
  • 38. Требования к интеграции систем  Зависимости между системами должны быть минимальны  Количество связей между системами (n*(n-1)/2 связей в полном графе) должно быть небольшим  Объем изменений в каждой системе должен быть небольшим  Легкость добавления еще одной системы
  • 39. Шаблон Message Bus – решение
  • 40. Шаблон Message Bus – решение Шина передает сообщения между приложениями Ключевые элементы: Набор схем данных для сообщений Набор сообщений Общая инфраструктура для отправки и получения сообщений
  • 41. Очереди сообщений Всего примерно 40-50 queues.io Бывают Brokerless – p2p Brokered – есть сервер
  • 43. Производительность очередей Latency Время передачи одного сообщения Throughput Количество сообщений в секунду
  • 50. Задача 1 Давайте придумаем, как сделать Яндекс.Метрику ) Не только про очереди А еще про много всякого
  • 51. Задача Предложите свои задачи Не менять постановку после озвучивания Только уточнять Постановка – 5 предложений
  • 52. Ссылки  https://medium.com/@priyaaank/patterns-for-microservices-e57a2d71ff9e  http://queues.io/  https://medium.com/startlovingyourself/need-of-messaging-queues-in-microservices-architecture- 91de0db89120  https://www.enterpriseintegrationpatterns.com/patterns/messaging/  https://bravenewgeek.com/dissecting-message-queues/  https://habr.com/ru/post/326880/  https://nats.io/about/  https://github.com/tylertreat/mq-benchmarking  https://bravenewgeek.com/benchmarking-message-queue-latency/  http://highload.guide/blog/queues-and-lock.html