Байки Из Склепа Разработчиков Erp-Платформы. Введение

Добрый день В этой серии статей мы хотим поговорить об Ultima Businessware, нашей платформе для построения ERP-систем.

Это первая, вводная статья, в которой мы поговорим об эволюции (т.е.

среде и взаимодействии с ней) платформы и перечислим основные и наиболее интересные особенности платформы.

В следующих постах мы планируем рассказать о деталях устройства и реализации этих самых возможностей.

Кроме того, по ходу дела мы будем делиться особенностями организации нашего процесса разработки.



Ээволюция

Сейчас модно после такого заголовка ставить ссылку на Википедию, но мы, нонконформисты, этого делать не будем.

Собственно, здесь мы и поговорим о среде, в которой возникла и развивалась платформа.

Итак о среде - началось это в 2004 году на сервере с 4гб памяти и 4 ядрами.

А вокруг кружилась толпа из 150 пользователей, которым очень нужно было продать продукт. И купить.

И хранить, и доставлять, и многое другое.

И, надо сказать, эти пользователи нажимали на кнопки, не отвлекаясь на обед. Курили вообще на работе.

В сумме у нас были тысячи транзакций в час.

И это было не так страшно, как блокировка — эти толпы пользователей, а также покупателей гонялись за товаром через сайт. Но, кроме этого, компании удалось быстро вырасти, что сопровождалось невероятно быстрыми изменениями в бизнес-процессах и, как следствие, в самом приложении.

Это среда, в которой возникла первая версия нашей платформы — множество пользователей, высокая транзакционная нагрузка, гонка за ресурсы, бизнес-процессы, не позволяющие аннигилировать блокировки, постоянные изменения и отсутствие права на ошибки.

И единственный способ — повысить производительность, сократить время блокировки, оптимизировать пользовательский интерфейс, упростить разработку, чтобы идти в ногу с изменениями.

Исторической правды надо сказать, что первая версия платформы существует и используется во многих компаниях по сей день и, скорее всего, будет использоваться и дальше, в связи с тем, что релиз платформы, случившийся в 2013, несовместим с предыдущим.

О предыдущем релизе говорить не будем, потому что он доживет свою жизнь уже с существующими клиентами.

Для статистики приведем лишь пару цифр:

  • у него около 4000 пользователей;
  • Ежедневно сайт посещают около 200 000 клиентов.



Платформа

Трехуровневое приложение, сервер приложений полностью разработан с нуля, используется для связи Зян Проект .

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

Общая схема приложения показана на следующей схеме:

Байки из склепа разработчиков ERP-платформы.
</p><p>
 Введение

Как видите, в качестве СУБД используется Oracle Database. На данный момент мы сохраняем поддержку 11gR2, но с выходом новой версии ODA и ExaData планируем отказаться от нее и перейти на 12c. Для малонагруженных решений систему можно запустить на EnterpriseDB с совместимостью с Oracle. Такая жесткая привязка, не характерная для других решений автоматизации, обусловлена необходимостью оптимизации производительности.

Используя возможности Oracle Database, нам удалось реализовать очереди внутри базы данных (о них мы немного поговорим в статье про принт-сервер), а также оптимизировать многие внутренние процессы.

Сервер приложений и клиентское приложение — это полностью управляемые приложения, написанные на C# 5.0, т.е.

использующие LINQ и async/await (опытом использования последнего мы постараемся поделиться в следующих статьях).

Собственно, вся бизнес-логика реализована в виде обработчиков различных событий тех или иных бизнес-объектов.

Если вы знакомы с 1С, вы их узнаете – это справочники, документы и какой-то аналог реестра, мы называем его тотал.

Клиентских приложений может быть много, но в состав платформы входит одно, имеющее встроенную среду разработки и администрирования.

Это графический интерфейс для описания структуры и взаимосвязей бизнес-объектов и редактор кода для скриптов.

Скрипты на C#, в редакторе присутствует аналог IntelliSense. Соответственно, сервер приложений отвечает за выполнение бизнес-логики, преобразование реляционных данных в системные объекты и наоборот, управление событиями и т. д. Для иллюстрации стоит привести следующую схему:

Байки из склепа разработчиков ERP-платформы.
</p><p>
 Введение

И, наконец, уже трижды упомянутый принт-сервер, наша в некотором смысле гордость, отвечает за отправку на принтеры соответствующих печатных форм.

Позволяет «виртуализировать» доступ к принтерам, организовать гарантированную доставку, убрать ожидание доступа к принтеру (и, как правило, сократить время блокировки) и многое другое.

Подробнее о его устройстве мы расскажем в отдельной статье.

Ну вот о чем мы поговорим:

  • Управление транзакциями.

    Как было и как стало.

    Проблемы управления транзакциями в многопоточной обработке.

  • Управление изменениями.

    Как мы осуществляем контроль версий? Зачем это нужно и что это позволяет?

  • Поддержка REST/SOAP. Как нам организовать их поддержку?
  • Большой Брат и история изменения данных.

    Почему Oracle Flashback Archive пока нельзя использовать.



Вместо заключения

Мы постарались немного рассказать вам о нашей системе и заинтересовать вас.

В следующих статьях мы углубимся в детали; делать это в самой первой статье - прямой путь к перегреву мозга.

Кроме того, обо всех интересных возникающих задачах, не составляющих ноу-хау или коммерческой тайны, мы постараемся рассказать в нашем блоге.

Теги: #ERP #erp #Платформа разработки #ultima #ERP-системы

Вместе с данным постом часто просматривают: