Коммуникационная платформа Microsoft для медицинских организаций Тимур Баязитов
Тимур Каримбаев (Ютинет.ру)
Transcript of Тимур Каримбаев (Ютинет.ру)
![Page 1: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/1.jpg)
SOA Service Oriented Architecture как средство борьбы со сложностью в веб-проекте
Тимур КаримбаевЮтинет.Ру
![Page 2: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/2.jpg)
Что такое SOAПодход к разработке, основанный на представлении ПО в виде набора слабо-связанных сервисов, общающихся друг с другом по общему протоколу
![Page 3: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/3.jpg)
SOA в Enterprise
● Чаще применяется чем в вебе
● 2009 - SOA is Dead (Burton Group)
● Стандартные инструменты для реализации от поставщиков (IBM - 66%, Oracle, Sun)
● Стандартное использование
● Нисходящее внедрение
![Page 4: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/4.jpg)
SOA в Web
● Все чаще применяется
● Нестандартная реализация
● Восходящее внедрение
● Кастомные инструменты
● Самый известный пример: Amazon.com
![Page 5: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/5.jpg)
Сложность
● качественная характеристика системы, для которой нет единого формального метода оценки
● есть методы оценки на основе количества элементов системы и взаимсосвязями между ними, или на основе количества состояний системы
![Page 6: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/6.jpg)
Сложностьосновной способ борьбы - делить сложную систему на более простые, а их в свою очередь на еще более простые
SOA - это способ деления системы
![Page 7: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/7.jpg)
Веб-проект
Интернет-магазин
● Товары● Клиенты● Заказы
![Page 8: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/8.jpg)
Веб-проект
Интернет-магазин
● Товары● Клиенты● Заказы● Отзывы● Рассылка● Закупка● Мониторинг цен
![Page 9: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/9.jpg)
Веб-проект
Интернет-магазин
● Товары● Клиенты● Заказы● Отзывы● Рассылка● Закупка● Мониторинг цен
● CRM● Форум● Работа с соцсетями
….
![Page 10: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/10.jpg)
Монолитное приложение
Веб-обработчик
Сервер приложений
База данных
Посетитель
Интернет-магазин
● Товары● Клиенты● Заказы● Отзывы● Рассылка● Закупка● Мониторинг цен
● CRM● Форум● Соцсети
![Page 11: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/11.jpg)
Монолитное приложение
Веб-обработчик
Сервер приложений
База данных
Модуль 1 Модуль 2 Модуль 3
Модуль 1 Модуль 2
Потребитель
Интернет-магазин
● Товары● Клиенты● Заказы● Отзывы● Рассылка● Закупка● Мониторинг цен
● CRM● Форум● Соцсети
![Page 12: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/12.jpg)
Монолитное приложение
Веб-обработчик
Сервер приложений
База данных
Модуль 1 Модуль 2 Модуль 3
Модуль 1 Модуль 2
Декомпозиция
Интернет-магазин
● Товары● Клиенты● Заказы● Отзывы● Рассылка● Закупка● Мониторинг цен
● CRM● Форум● Соцсети
![Page 13: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/13.jpg)
Монолитное приложение
Веб-обработчик
Сервер приложений
Веб-обработчик
Сервер приложений
База данных
Веб-обработчик
Сервер приложений
Файлы Прочие ресурсы
ПотребительМасштабирование
...
![Page 14: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/14.jpg)
SOA приложение
ЗаказыТовары Клиенты
Сайт Рассылка
CRMЗакупкаМониторинг цен
![Page 15: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/15.jpg)
SOA приложение
ЗаказыТовары Клиенты
Сайт Рассылка
CRMЗакупкаМониторинг цен
Отправка писем
Хранение файлов
SMS-сервис
![Page 16: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/16.jpg)
Сервис 1
ОбработчикЛогикаДанные
API
Сервис 2
ОбработчикЛогикаДанные
API
Сервис 3
ОбработчикЛогика
API
SOA приложение
Потребитель
![Page 17: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/17.jpg)
SOA приложение
● Связи между компонентами ограничены API
● Возможность развивать компоненты по отдельности
● Возможность масштабировать компоненты по отдельности
![Page 18: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/18.jpg)
Пример сервисаСбор обзоров и отзывов
Граббер
Анализ сайтов конкурентов
Скачивание изображений
Граббер Граббер
Плюсы
● Минимум расходов на передачу данных
● Кастомные решения
Минусы
● Дублирование функционала
![Page 19: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/19.jpg)
Пример сервиса
Граббер
очередь
контент
Сбор обзоров и отзывов
Анализ сайтов конкурентов
Скачивание изображений
Плюсы
● Все еще минимум расходов на передачу данных
● Нет дублирования
Минусы
● Зависимость от ресурсови размещения
прямое соединение
![Page 20: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/20.jpg)
Сервис граббинга
Пример сервисаСбор обзоров и отзывов
Анализ сайтов конкурентов
Скачивание изображений
Плюсы
● Нет дублирования● Полная независимость от
размещения и реализации
Минусы
● Оверхед на передачу данных● Более сложная разработка
API вызовы
![Page 21: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/21.jpg)
Прямой вызов
( SELECT и т.п.)Потребитель База
Потребитель
База
Сервис
handler
логика
Оверхед на передаче данных
![Page 22: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/22.jpg)
eCommerce платформа Ютинет
Ютинет
Торговые компании
Товарные эксперты
Пользователи интернета
Другие сайтызнания о товарах
предложения
заказызнания о товарах
знания о товарах
Основная задача платформыПредоставить человеку как можно больше информации о товаре
![Page 23: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/23.jpg)
Карточка товара1. определить регион пользователя
2. характеристики и свойства товара;
3. выбрать лучшее предложение от ТК в регионе
4. подобрать сопутствующие товары;
5. отзывы и обзоры к этому товару;
6. баннеры
7. рекомендуемые товары с учетом статистики продаж
8. последние проданные товары;
9. выбрать похожие по характеристикам
товары
![Page 24: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/24.jpg)
Ширина: 364 ммВысота 24.1ммВес: 2.56 кг
Процессор: i7-3615QM
Графика: Nvidia GeForce GT 650M
Компьютеры
Ноутбуки
Apple MacBook ProMid 2012 MD103RS/A
Процессоры
Intel Core i7-3615QM, 2300 МГц
Intel
Графические процессоры
NVIDIA GeForce GT 650M
Nvidia
Частота: 2300 Мгц
Количество ядер: 4 шт.
Частота шины: 5000 МТ/с
![Page 25: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/25.jpg)
Потребители
Каталог
Исходные данные
Индексатор
Обсчёт
Storagejava
Storagejava
Storage
Хранение и отдача
Storage
Хранение и отдача
![Page 26: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/26.jpg)
Потребители
Каталог
Исходные данные
Индексатор
Обсчёт
Storagejava
Storagejava
Storage
Хранение и отдача
Storage
Хранение и отдача
● Обновление данных● Garbage collector● Обновление сервисов● Перенос сервисов● Тестирование сервисов
![Page 27: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/27.jpg)
Расчитанные характеристики
Сайт
Совместимыетовары
Похожиетовары Поиск
YML-генератор
![Page 28: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/28.jpg)
Расчитанные характеристики
Сайт
Совместимыетовары
Похожиетовары Поиск
Цены
Выбор предложения
URL
Мэтчер
Бидообразование
YML-генератор
![Page 29: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/29.jpg)
Локальное окружение
Боевой репозиторийЛокальный
репозиторий
Характеристики Поиск ЦеныЗаказыКлиенты
ЗаказыКлиенты
Отправка писем
Отправка писем
Файлы
![Page 30: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/30.jpg)
Enterprise service bus - ESB
ESBПотребитель
Потребитель
Потребитель
Поставщик
Поставщик
● Роутинг сервисов - знает где находится тот или иной сервис
● Трансформация протоколов
● Сохранность сообщений
● Транзакционность запроса, в случае её необходимости
![Page 31: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/31.jpg)
Каталог192.168.0.1
Гео-сервис 1192.168.0.2
Гео-сервис 2192.168.0.3
Файловый сервисfiles.services.utinet.ru
Потребитель
Потребитель
catalog192.168.0.1
geo192.168.0.2192.168.0.3
filesfiles.utinet.ru
...
Репозиторий сервисов
catalog192.168.0.1
geo192.168.0.2192.168.0.3
filesfiles.utinet.ru
...
Zookeeper
![Page 32: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/32.jpg)
ПротоколыSOAP - стандартный протокол для SOA-систем
Плюсы:● поддерживается всем и вся● schema и валидация● позволяет типизировать передаваемые структуры
Минусы● очень большой оверхед по размеру● скорость
![Page 33: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/33.jpg)
Протоколы
Apache Thrift
● создан в Facebook
● имеет реализации для многих языков
● предоставляет транспортный уровень
Google Protobuf
● создан в Google
● имеет компиляторы для C++, Java и Python
● От 20 до 100 раз быстрее, от 3 до 10 раз меньше XML
Протоколы межъязыкового взаимодействия
● Поддерживают бинарную передачу данных
● Генерируют код для разных языков из метаописания
![Page 34: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/34.jpg)
ПротоколыМы используем собственный протокол, основанный на JSON и 2 его транспортных адаптера
Over HTTP:● для php-сервисов
Socket:● очень быстрый, практически без оверхеда по трафику● позволяет держать соединение открытым между запросами● не поддерживается php-сервисами (серверной частью)
![Page 35: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/35.jpg)
Наши правила организации сервисов1. Протокол сервиса должен быть stateless
2. В сервис выделяется часть функционала, имеющая значение сама по себе
3. Сервис не должен знать ничего о своих клиентах
4. Если нужно пересекать между собой данные из двух сервисов - этим занимается потребитель - считывает данные из двух сервисов и пересекает. Если это нужно часто, или данных много - делается еще один сервис, который закачивает все данные (обращаясь к API обоих сервисов) и пересекает их уже внутри себя
5. Для случаев когда нужно пересекать данные особенно часто - поднимаются проксирующие сервисы;
6. Сервисы не имеют авторизации
![Page 36: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/36.jpg)
Технологические моменты● Чтобы вся эта схема работала эффективно - у разработчиков должны
быть простые механизмы создания сервисов и подключения их к инфраструктуре
● В нашем случае инстанс сервиса чаще всего разворачивается в пределах одной виртуальной машины
● То что работает с первичными данными - это PHP + Postgresql, то что критично по времени ответа - Java ( Netty )
![Page 37: Тимур Каримбаев (Ютинет.ру)](https://reader033.fdocuments.net/reader033/viewer/2022052601/5596527e1a28ab55678b4584/html5/thumbnails/37.jpg)
Спасибо за внимание