Что такое корпоративное программное обеспечение
Корпоративное программное обеспечение разрушалось годами. «Почему это так?» Почему создание программного обеспечения для крупных организаций стало синонимом скуки? Некоторые люди говорят, что это скучно, потому что это не полезно. Трудно быть взволнованным, работая на «злые» корпорации. На мой взгляд, это не правильное отношение. Я бы сказал, что помощь миллионам людей в управлении своими банковскими транзакциями имеет большую ценность, чем создание другого анализатора Twitter. Давайте, по крайней мере, не будем отвергать идею создания корпоративного программного обеспечения за деньги. Вместо этого давайте немного подумаем о том, что такое корпоративное программное обеспечение и может ли Ruby стать хорошей платформой для его создания.
Что такое корпоративное программное обеспечение? Определение Мартина Фаулера:
- Корпоративные приложения — это отображение, обработка и хранение больших объемов часто сложных данных, а также поддержка или автоматизация бизнес-процессов с этими данными. [1]
По сути, это программное обеспечение, используемое компаниями для управления своим бизнесом. Здесь нет ничего, что говорило бы, что это должно быть уродливо или слишком сложно. Это не должно выглядеть так.
Мы готовы?
Чтобы стать хорошей платформой для разработки корпоративных приложений, Ruby должен предоставить средства для решения следующих задач: интеграция, моделирование доменов и развертывание.
интеграция
Если вы думаете, что разрабатывать новое приложение сложно, попробуйте интегрировать его с другими. Это чрезвычайно сложно. У вас обычно нет контроля над другими системами. Это означает, что вам приходится иметь дело с их самодельными (или несуществующими) API, вам необходимо поддерживать их новые выпуски и обрабатывать их простои. Это тяжело. Но у меня есть хорошие новости для написания интеграционного кода, например, в C # не лучше.
За последние несколько лет ситуация со всеми основными средствами интеграции значительно улучшилась. ActiveMQ? Нет проблем. Использование баз данных Oracle, MSSQL и Sybase стало возможным. Но даже несмотря на улучшение, вы все равно можете столкнуться с несколькими технологиями без доступных адаптеров Ruby. К счастью, есть отличное решение этой проблемы: JRuby. Все интегрируется с Java, что делает JRuby «серебряной пулей» против всех проблем интеграции.
Моделирование домена
Корпоративные системы обычно содержат большой набор бизнес-правил, выражающих нетривиальные домены. Настройка правил и принятие решений на основе собранных данных обычно является целью этих систем. Является ли Ruby хорошим решением для моделирования предметной области? Это точно так. Ruby — язык высокого уровня; он чрезвычайно удобен для чтения и обладает некоторыми функциями метапрограммирования, что делает его подходящим для реализации внутренних доменных языков (DSL) Я бы сказал, что Ruby — лучший язык для моделирования предметной области, чем, например, Java или C #.
развертывание
Развертывание могло быть проблемой несколько лет назад. EY (Engine Yard) и Heroku — отличные решения, которые прекрасно работают для компаний, желающих избавиться от своих отделов ИТ-операций и перенести свое программное обеспечение в облако. Однако не все хотят это делать. У некоторых компаний все еще есть серверы Windows. Они по-прежнему развертываются вручную (это процесс перетаскивания). Для таких компаний EY и Heroku не вариант. Управление другим стеком для развертывания приложений Ruby? Это не произойдет. Использование существующей инфраструктуры имеет решающее значение. Это еще одна область, где JRuby действительно сияет. Наличие автономных развертываемых пакетов, которые вы можете просто поместить в папку Tomcat, имеет огромное значение для этих компаний.
Они готовы?
Если мы примем, что платформа Ruby достаточно развита для создания корпоративных приложений, можем ли мы заставить крупные предприятия делать то же самое? По моему опыту, некоторые из них действительно хотят попробовать. Они стремятся сделать свои процессы более эффективными, доставлять их чаще и с меньшим количеством ошибок. Это тяжело. Вот почему они ищут технологии и платформы, которые могут это сделать. Я твердо верю, что платформа Ruby может быть одной из них.
Дополнительные ссылки
Для тех, кто интересуется созданием корпоративного программного обеспечения, я настоятельно рекомендую следующие книги:
- Мартин Фаулер Шаблоны корпоративной архитектуры приложений. Эта книга обязательна для каждого разработчика, независимо от его опыта. Даже те, кто вообще не интересуется корпоративным программным обеспечением, найдут эту книгу чрезвычайно полезной.
- Грегор Хоуп и Бобби Вульф. Корпоративные шаблоны интеграции: проектирование, создание и развертывание решений для обмена сообщениями.
- Эрик Эванс. Доменно-управляемый дизайн: борьба со сложностями в основе программного обеспечения.
Есть несколько хороших книг о JRuby:
- Чарльз О Наттер, Томас Энебо, Ник Сигер, Ола Бини и Ян Ди. Использование JRuby: перевод Ruby в Java.
- Джо Катнер. Развертывание с помощью JRuby: поставляйте масштабируемые веб-приложения с помощью JVM.
Я написал несколько постов, связанных с темой:
- Введение в системы обмена сообщениями для Rubyists
- DDD для разработчиков Rails. Часть 1: Многоуровневая Архитектура.
- DDD для разработчиков Rails. Часть 2: сущности и ценности
Ссылки
[1] Мартин Фаулер. Шаблоны корпоративной архитектуры приложений.