Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
SOA Service Oriented Architecture
как средство борьбы со
сложностью в веб-проекте
Тимур Каримбаев
Ютинет.Ру
Что такое SOA
Подход к разработке, основанный на представлении ПО в виде набора
слабо-связанных сервисов, общающихся друг ...
SOA в Enterprise
● Чаще применяется чем в вебе
● 2009 - SOA is Dead (Burton Group)
● Стандартные инструменты для реализаци...
SOA в Web
● Все чаще применяется
● Нестандартная реализация
● Восходящее внедрение
● Кастомные инструменты
● Самый известн...
Сложность
● качественная характеристика системы, для
которой нет единого формального метода оценки
● есть методы оценки на...
Сложность
основной способ борьбы - делить сложную систему на более простые,
а их в свою очередь на еще более простые
SOA -...
Веб-проект
Интернет-магазин
● Товары
● Клиенты
● Заказы
Веб-проект
Интернет-магазин
● Товары
● Клиенты
● Заказы
● Отзывы
● Рассылка
● Закупка
● Мониторинг цен
Веб-проект
Интернет-магазин
● Товары
● Клиенты
● Заказы
● Отзывы
● Рассылка
● Закупка
● Мониторинг цен
● CRM
● Форум
● Раб...
Монолитное приложение
Веб-обработчик
Сервер приложений
База данных
Посетитель
Интернет-магазин
● Товары
● Клиенты
● Заказы...
Монолитное приложение
Веб-обработчик
Сервер приложений
База данных
Модуль 1 Модуль 2 Модуль 3
Модуль 1 Модуль 2
Потребител...
Монолитное приложение
Веб-обработчик
Сервер приложений
База данных
Модуль 1 Модуль 2 Модуль 3
Модуль 1 Модуль 2
Декомпозиц...
Монолитное приложение
Веб-обработчик
Сервер приложений
Веб-обработчик
Сервер приложений
База данных
Веб-обработчик
Сервер ...
SOA приложение
ЗаказыТовары Клиенты
Сайт
Рассылка
CRMЗакупкаМониторинг
цен
SOA приложение
ЗаказыТовары Клиенты
Сайт
Рассылка
CRMЗакупкаМониторинг
цен
Отправка
писем
Хранение
файлов
SMS-сервис
Сервис 1
Обработчик
Логика
Данные
API
Сервис 2
Обработчик
Логика
Данные
API
Сервис 3
Обработчик
Логика
API
SOA приложение
...
SOA приложение
● Связи между компонентами
ограничены API
● Возможность развивать
компоненты по отдельности
● Возможность м...
Пример сервиса
Сбор обзоров и
отзывов
Граббер
Анализ сайтов
конкурентов
Скачивание
изображений
Граббер Граббер
Плюсы
● Мин...
Пример сервиса
Граббер
очередь
контент
Сбор обзоров и
отзывов
Анализ сайтов
конкурентов
Скачивание
изображений
Плюсы
● Все...
Сервис граббинга
Пример сервиса
Сбор обзоров и
отзывов
Анализ сайтов
конкурентов
Скачивание
изображений
Плюсы
● Нет дублир...
Прямой вызов
( SELECT и т.п.)
Потребитель База
Потребитель
База
Сервис
handler
логика
Оверхед на передаче данных
eCommerce платформа Ютинет
Ютинет
Торговые
компании
Товарные
эксперты
Пользователи
интернета
Другие сайтызнания о товарах
...
Карточка товара
1. определить регион пользователя
2. характеристики и свойства товара;
3. выбрать лучшее предложение от ТК...
Ширина: 364 мм
Высота 24.1мм
Вес: 2.56 кг
Процессор: i7-3615QM
Графика: Nvidia GeForce GT 650M
Компьютеры
Ноутбуки
Apple M...
Потребители
Каталог
Исходные
данные
Индексатор
Обсчёт
Storage
java
Storage
java
Storage
Хранение и
отдача
Storage
Хранение...
Потребители
Каталог
Исходные
данные
Индексатор
Обсчёт
Storage
java
Storage
java
Storage
Хранение и
отдача
Storage
Хранение...
Расчитанные
характеристики
Сайт
Совместимые
товары
Похожие
товары
Поиск
YML-генератор
Расчитанные
характеристики
Сайт
Совместимые
товары
Похожие
товары
Поиск
Цены
Выбор
предложения
URL
Мэтчер
Бидообразование
...
Локальное окружение
Боевой
репозиторийЛокальный
репозиторий
Характеристики Поиск ЦеныЗаказы
Клиенты
Заказы
Клиенты
Отправк...
Enterprise service bus - ESB
ESBПотребитель
Потребитель
Потребитель
Поставщик
Поставщик
● Роутинг сервисов - знает где
нах...
Каталог
192.168.0.1
Гео-сервис 1
192.168.0.2
Гео-сервис 2
192.168.0.3
Файловый сервис
files.services.utinet.ru
Потребитель...
Протоколы
SOAP - стандартный протокол для SOA-систем
Плюсы:
● поддерживается всем и вся
● schema и валидация
● позволяет т...
Протоколы
Apache Thrift
● создан в Facebook
● имеет реализации для многих
языков
● предоставляет транспортный
уровень
Goog...
Протоколы
Мы используем собственный протокол, основанный на JSON и 2 его
транспортных адаптера
Over HTTP:
● для php-сервис...
Наши правила организации
сервисов
1. Протокол сервиса должен быть stateless
2. В сервис выделяется часть функционала, имею...
Технологические моменты
● Чтобы вся эта схема работала эффективно - у разработчиков должны
быть простые механизмы создания...
Спасибо за внимание
Upcoming SlideShare
Loading in …5
×

Тимур Каримбаев (Ютинет.ру)

679 views

Published on

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Тимур Каримбаев (Ютинет.ру)

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

×