Одесская Java UserGroup




Enterprise or not to enterprise
Роман Сафронов
Руководит ель проект а Clie nt Data




July 17, 2012
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Enterprise or not to enterprise

  • 1.
    Одесская Java UserGroup Enterpriseor not to enterprise Роман Сафронов Руководит ель проект а Clie nt Data July 17, 2012
  • 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

  • #9 Получает информацию из мастер-систем и распространяет ее пользователям Можно использовать publish-subscribe механизм (например, jms ). Пользователи получают свежие обновления как только они становятся доступны Или request-response. Запрашивать информацию о нужных сущностях. Или выгружать необходимы срезы на периодической основе
  • #10 Протокол задает формат и содержимое сообщений, которые приходят пользователям Упрощает работу и позволяет планировать изменения Минорные версии протокола обратно-совместимы, мажорные – нет Публикация нескольких версий одного протокола
  • #11 Пользователи системы накладывают на нее различные ограничения. Например, некоторые потребители не могут обрабатывать слишком много сообщений за единицу времени. Другие не хотят обновляться до новейшей версии протокола (а зачем? У нас все работает). Выход – SLA (поддержка протокола – N лет после релиза, пользователи должны уметь обрабатывать min 100000 сообщений в сутки и т.п.)
  • #12 Систему можно (и нужно) упрощать Было: 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
  • #13 Систему можно (и нужно) упрощать Было: 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