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

  • View
    332

  • Download
    14

  • Category

    Internet

Preview:

Citation preview

SOA Service Oriented Architecture как средство борьбы со сложностью в веб-проекте

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

Что такое SOAПодход к разработке, основанный на представлении ПО в виде набора слабо-связанных сервисов, общающихся друг с другом по общему протоколу

SOA в Enterprise

● Чаще применяется чем в вебе

● 2009 - SOA is Dead (Burton Group)

● Стандартные инструменты для реализации от поставщиков (IBM - 66%, Oracle, Sun)

● Стандартное использование

● Нисходящее внедрение

SOA в Web

● Все чаще применяется

● Нестандартная реализация

● Восходящее внедрение

● Кастомные инструменты

● Самый известный пример: Amazon.com

Сложность

● качественная характеристика системы, для которой нет единого формального метода оценки

● есть методы оценки на основе количества элементов системы и взаимсосвязями между ними, или на основе количества состояний системы

Сложностьосновной способ борьбы - делить сложную систему на более простые, а их в свою очередь на еще более простые

SOA - это способ деления системы

Веб-проект

Интернет-магазин

● Товары● Клиенты● Заказы

Веб-проект

Интернет-магазин

● Товары● Клиенты● Заказы● Отзывы● Рассылка● Закупка● Мониторинг цен

Веб-проект

Интернет-магазин

● Товары● Клиенты● Заказы● Отзывы● Рассылка● Закупка● Мониторинг цен

● CRM● Форум● Работа с соцсетями

….

Монолитное приложение

Веб-обработчик

Сервер приложений

База данных

Посетитель

Интернет-магазин

● Товары● Клиенты● Заказы● Отзывы● Рассылка● Закупка● Мониторинг цен

● CRM● Форум● Соцсети

Монолитное приложение

Веб-обработчик

Сервер приложений

База данных

Модуль 1 Модуль 2 Модуль 3

Модуль 1 Модуль 2

Потребитель

Интернет-магазин

● Товары● Клиенты● Заказы● Отзывы● Рассылка● Закупка● Мониторинг цен

● CRM● Форум● Соцсети

Монолитное приложение

Веб-обработчик

Сервер приложений

База данных

Модуль 1 Модуль 2 Модуль 3

Модуль 1 Модуль 2

Декомпозиция

Интернет-магазин

● Товары● Клиенты● Заказы● Отзывы● Рассылка● Закупка● Мониторинг цен

● CRM● Форум● Соцсети

Монолитное приложение

Веб-обработчик

Сервер приложений

Веб-обработчик

Сервер приложений

База данных

Веб-обработчик

Сервер приложений

Файлы Прочие ресурсы

ПотребительМасштабирование

...

SOA приложение

ЗаказыТовары Клиенты

Сайт Рассылка

CRMЗакупкаМониторинг цен

SOA приложение

ЗаказыТовары Клиенты

Сайт Рассылка

CRMЗакупкаМониторинг цен

Отправка писем

Хранение файлов

SMS-сервис

Сервис 1

ОбработчикЛогикаДанные

API

Сервис 2

ОбработчикЛогикаДанные

API

Сервис 3

ОбработчикЛогика

API

SOA приложение

Потребитель

SOA приложение

● Связи между компонентами ограничены API

● Возможность развивать компоненты по отдельности

● Возможность масштабировать компоненты по отдельности

Пример сервисаСбор обзоров и отзывов

Граббер

Анализ сайтов конкурентов

Скачивание изображений

Граббер Граббер

Плюсы

● Минимум расходов на передачу данных

● Кастомные решения

Минусы

● Дублирование функционала

Пример сервиса

Граббер

очередь

контент

Сбор обзоров и отзывов

Анализ сайтов конкурентов

Скачивание изображений

Плюсы

● Все еще минимум расходов на передачу данных

● Нет дублирования

Минусы

● Зависимость от ресурсови размещения

прямое соединение

Сервис граббинга

Пример сервисаСбор обзоров и отзывов

Анализ сайтов конкурентов

Скачивание изображений

Плюсы

● Нет дублирования● Полная независимость от

размещения и реализации

Минусы

● Оверхед на передачу данных● Более сложная разработка

API вызовы

Прямой вызов

( SELECT и т.п.)Потребитель База

Потребитель

База

Сервис

handler

логика

Оверхед на передаче данных

eCommerce платформа Ютинет

Ютинет

Торговые компании

Товарные эксперты

Пользователи интернета

Другие сайтызнания о товарах

предложения

заказызнания о товарах

знания о товарах

Основная задача платформыПредоставить человеку как можно больше информации о товаре

Карточка товара1. определить регион пользователя

2. характеристики и свойства товара;

3. выбрать лучшее предложение от ТК в регионе

4. подобрать сопутствующие товары;

5. отзывы и обзоры к этому товару;

6. баннеры

7. рекомендуемые товары с учетом статистики продаж

8. последние проданные товары;

9. выбрать похожие по характеристикам

товары

Ширина: 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 МТ/с

Потребители

Каталог

Исходные данные

Индексатор

Обсчёт

Storagejava

Storagejava

Storage

Хранение и отдача

Storage

Хранение и отдача

Потребители

Каталог

Исходные данные

Индексатор

Обсчёт

Storagejava

Storagejava

Storage

Хранение и отдача

Storage

Хранение и отдача

● Обновление данных● Garbage collector● Обновление сервисов● Перенос сервисов● Тестирование сервисов

Расчитанные характеристики

Сайт

Совместимыетовары

Похожиетовары Поиск

YML-генератор

Расчитанные характеристики

Сайт

Совместимыетовары

Похожиетовары Поиск

Цены

Выбор предложения

URL

Мэтчер

Бидообразование

YML-генератор

Локальное окружение

Боевой репозиторийЛокальный

репозиторий

Характеристики Поиск ЦеныЗаказыКлиенты

ЗаказыКлиенты

Отправка писем

Отправка писем

Файлы

Enterprise service bus - ESB

ESBПотребитель

Потребитель

Потребитель

Поставщик

Поставщик

● Роутинг сервисов - знает где находится тот или иной сервис

● Трансформация протоколов

● Сохранность сообщений

● Транзакционность запроса, в случае её необходимости

Каталог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

ПротоколыSOAP - стандартный протокол для SOA-систем

Плюсы:● поддерживается всем и вся● schema и валидация● позволяет типизировать передаваемые структуры

Минусы● очень большой оверхед по размеру● скорость

Протоколы

Apache Thrift

● создан в Facebook

● имеет реализации для многих языков

● предоставляет транспортный уровень

Google Protobuf

● создан в Google

● имеет компиляторы для C++, Java и Python

● От 20 до 100 раз быстрее, от 3 до 10 раз меньше XML

Протоколы межъязыкового взаимодействия

● Поддерживают бинарную передачу данных

● Генерируют код для разных языков из метаописания

ПротоколыМы используем собственный протокол, основанный на JSON и 2 его транспортных адаптера

Over HTTP:● для php-сервисов

Socket:● очень быстрый, практически без оверхеда по трафику● позволяет держать соединение открытым между запросами● не поддерживается php-сервисами (серверной частью)

Наши правила организации сервисов1. Протокол сервиса должен быть stateless

2. В сервис выделяется часть функционала, имеющая значение сама по себе

3. Сервис не должен знать ничего о своих клиентах

4. Если нужно пересекать между собой данные из двух сервисов - этим занимается потребитель - считывает данные из двух сервисов и пересекает. Если это нужно часто, или данных много - делается еще один сервис, который закачивает все данные (обращаясь к API обоих сервисов) и пересекает их уже внутри себя

5. Для случаев когда нужно пересекать данные особенно часто - поднимаются проксирующие сервисы;

6. Сервисы не имеют авторизации

Технологические моменты● Чтобы вся эта схема работала эффективно - у разработчиков должны

быть простые механизмы создания сервисов и подключения их к инфраструктуре

● В нашем случае инстанс сервиса чаще всего разворачивается в пределах одной виртуальной машины

● То что работает с первичными данными - это PHP + Postgresql, то что критично по времени ответа - Java ( Netty )

Спасибо за внимание

Recommended