2. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Мифы об enterprise-разработке
Enterprise or not to enterprise
• Все медленно
• Скучно и однообразно
• Используются устаревшие технологии
• Никто не следит за качеством кода
• В основе всегда лежат проприетарные компоненты
• На кодирование уходит меньше времени, чем на
“бюрократию”
• Это сплошной багфиксинг!
2
3. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Пример проекта класса enterprise
Enterprise or not to enterprise
• > 1 миллиона строк кода
• > 1 террабайта данных
• 20+ компонентов
• 50+ разработчиков Java
• 10+ разработчиков баз данных
• 30+ QA-инженеров
• География: Лондон, Бангалор, Москва, Киев, Одесса
• Пользователи во всех крупных странах мира
• Набор “тяжелых” коммерческих компонентов: IBM Websphere, IBM ILOG JRules,
Oracle Database, Oracle GoldenGate, Informatica PowerCenter, Informatica Master
Data Management, Tibco EMS, CA SiteMinder, Business Objects reporting
3
4. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Особенности разработки в enterprise
Enterprise or not to enterprise
• Большое количество внешних зависимостей
– Необходимость интеграции с существующими системами (в том числе и legacy)
– Зависимость на внешние сервисы (виртуальные машины, сетевая инфраструктура,
сервера приложений)
– Зависимости на внешние команды (поддержка, аналитика)
• Приоритет клиента – стабильность
– Ограничение на выбор технологий при построении новых компонентов
– Длительные фазы SIT и UAT
• Специфика бизнес-домена
– Ограничение доступа к данным
– Фиксированные даты выпуска нового функционала
4
5. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Типы приложений
Enterprise or not to enterprise
• Хранилище мастер-данных
• Система распространения данных
• Интеграция с внешними поставщиками данных
• Автоматизация длительных бизнес-процессов
5
6. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Хранилище мастер-данных: enterprise
Enterprise or not to enterprise
• Развертывание только на WebSphere
• Раздельное версионирование и сборка
модулей (EJB, WebApp, WS)
• Установка и конфигурирование
приложения в dev-среде занимает 2 часа
• Потребление памяти при запуске 2 Гб
• Время старта приложения 3-4 минуты
• Жесткое требование Oracle Database EE
(VPD)
• Необходимость использования
распределенных транзакций
6
7. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Хранилище мастер-данных: not enterprise
Enterprise or not to enterprise
• Нет необходимости использовать раздельное версионирование модулей
• WSANT + Jenkins = 100% автоматизация сборки и развертывания
• DEV profile
– Переход на Jetty + WS EJB client позволило сократить потребление памяти до 500 Мб
– Создание Spring LazуBeanPostProcessor позволило динамически менять “ленивость”
бинов. Это позволило сократить время старта приложения до 15 секунд
• Переход на Tomcat позволит значительно сократить расходы на инфраструктуру
• Альтернатива Oracle VPD – Hibernate filter
• Альтернатива XA-транзакции между Oracle и Sybase - ChainedTransactionManager
7
8. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Система распространения данных
Enterprise or not to enterprise
Функциональность
• публикация в JMS очередь
• Передача сообщения по
запросу
• Передача срезов
– Обновления за последние
сутки
– Полная выгрузка
– Выгрузка по условию
8
9. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Система распространения данных
Enterprise or not to enterprise
V1 V2
Протоколы
• Фиксирют формат
сообщений
• Могут меняться со
временем
• Папаллельно публикуем
несколько версий одного
протокола
9
10. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Система распространения данных
Enterprise or not to enterprise
Потребители данных
• Нормальные – никаких
проблем
• Неповоротливые –
ограничивают скорость
публикации
• Ленивые – не хотят
обновляться на свежие
версии протоколов
10
11. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Система распространения данных: enterprise
Enterprise or not to enterprise
• Развертывание сервера приложений
• Приложение распространяется в виде ear
• Используем распределенные транзакции
• Меппинг с помощью Apache Dozer (xml)
• OpenAdaptor в качестве интеграционного фреймворка
• HyperJAXB для генерации объектной модели и схемы БД
11
12. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Система распространения данных: not enterprise
Enterprise or not to enterprise
• Нет необходимости в сервере приложений
• Полная автоматизация конфигурпирования и установки
• Автоматический f2b-тест системы после установки
• Локальная транзакция
• Маппинг на Groovy
• Plain java workflow
• Xml + аттрибуты, по которым идет выборка
• Версионирование схемы БД
12
13. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Интеграция с внешними поставщиками данных: enterprise
Enterprise or not to enterprise
• Необходимость использования распределенных транзакций
• Необходимость консолидирования данных от нескольких поставщиков с учетом
уровня доверия по каждому из аттрибутов
• Необходимость осуществления слияния нескольких объектов в случае, если они
являются дупликатами
13
14. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Автоматизация длительных бизнес-процессов: enterprise
Enterprise or not to enterprise
• Если бизнес-процесс включает выполнение активностей в нескольких
приложениях, то необходимо использовать BPM-системы
• BPM-система выполняет вызовы систем-участников и хранит состояние
процесса
14
15. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Автоматизация длительных бизнес-процессов: enterprise
Enterprise or not to enterprise
• Бизнес-процесс описывается в
нотации BPMN
• Для осуществления вызовов
внешних систем могут
использоваться EJB или веб-
сервисы
15
16. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Enterprise or not to enterprise
Enterprise or not to enterprise
• Ускорить приложение возможно за счет введения dev-profile
• Большинство рутинных задач возможно автоматизировать
• Даже устаревшие открытые технологии возможно постепенно
мигрировать на новые
• Установите жесткую планку по качеству кода и
автоматизируйте сбор метрик
• Есть случаи, когда использование проприетарных
компонентов оправдано, важно обеспечить как можно более
тонкий интерфейс с остальной системой
• Автоматизированы рутинные задачи –> FUN!
16
17. safronro [printed: ____] [saved: July 17, 2012 8:48 PM] P:My DocumentsEnterprise or not to enterprise v0.4.ppt
Контакты
• Email: roman.safronov@ubs.com
• Skype: roman_safronov
17
Editor's Notes
Получает информацию из мастер-систем и распространяет ее пользователям Можно использовать publish-subscribe механизм (например, jms ). Пользователи получают свежие обновления как только они становятся доступны Или request-response. Запрашивать информацию о нужных сущностях. Или выгружать необходимы срезы на периодической основе
Протокол задает формат и содержимое сообщений, которые приходят пользователям Упрощает работу и позволяет планировать изменения Минорные версии протокола обратно-совместимы, мажорные – нет Публикация нескольких версий одного протокола
Пользователи системы накладывают на нее различные ограничения. Например, некоторые потребители не могут обрабатывать слишком много сообщений за единицу времени. Другие не хотят обновляться до новейшей версии протокола (а зачем? У нас все работает). Выход – SLA (поддержка протокола – N лет после релиза, пользователи должны уметь обрабатывать min 100000 сообщений в сутки и т.п.)
Систему можно (и нужно) упрощать Было: ER модель в БД, генерация сообщений по запросу. Стало: Blob + генерация сообщения один раз Стало проще отдавать сообщения Стало сложней делать bulk-update на содержимое БД (например, при нахождении ошибки в upstream) – возникает необходимость перегенерации xml Было: OpenAdaptor, Spring integration как workflow engine. Стало: plain java Compile-time message type checking Меньше xml в проекте Было: XA и распределенные транзакции. Стало: Одна тразакция и очереди. (Взяли с одной, обработали, положили в другую) + SLA – клиенты согласны получать дубликаты Поддержка версионирования схемы БД: flyway + обертка, обновление всех схем одной кнопкой. Поддержка data-fix -ов в БД: scriptella
Систему можно (и нужно) упрощать Было: ER модель в БД, генерация сообщений по запросу. Стало: Blob + генерация сообщения один раз Стало проще отдавать сообщения Стало сложней делать bulk-update на содержимое БД (например, при нахождении ошибки в upstream) – возникает необходимость перегенерации xml Было: OpenAdaptor, Spring integration как workflow engine. Стало: plain java Compile-time message type checking Меньше xml в проекте Было: XA и распределенные транзакции. Стало: Одна тразакция и очереди. (Взяли с одной, обработали, положили в другую) + SLA – клиенты согласны получать дубликаты Поддержка версионирования схемы БД: flyway + обертка, обновление всех схем одной кнопкой. Поддержка data-fix -ов в БД: scriptella