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

Добрый день!

В этой серии статей мы хотим рассказать об Ultima Businessware — нашей платформе для построения ERP систем.
Это первая, вводная статья, в которой расскажем об эволюции (т.е. среде и взаимодействии с ней) платформы и перечислим основные и самые интересные возможности платформы.
В следующих постах мы планируем рассказать о подробностях устройства и реализации этих самых возможностей. Кроме того, по ходу изложения мы будем делиться с особенностями организации процесса разработки у нас.

Эволюция


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

Так вот о среде — началось в 2004-м году на сервере с 4Гб памяти и 4-мя ядрами. А вокруг кружила толпа в 150 пользователей, которым очень надо было продавать товар. И покупать. И хранить, и доставлять и еще много чего. И, надо сказать, пользователи эти лупили в кнопки, не отвлекаясь на обед. Курили так и вообще на рабочем месте. Суммируя, мы имели тысячи транзакций в час. И это было не так страшно, как блокировки — эти толпы пользователей и еще клиенты через сайт гонялись за товаром.

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

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

Исторической правды для надо сказать, что та, первая версия платформы существует и эксплуатируется во многих компаниях до сих пор и, скорее всего, продолжит эксплуатироваться, ввиду того, что релиз платформы, случившейся в 2013-м году, несовместим с предыдущим. Про предыдущий релиз рассказывать не будем, ибо он будет доживать свой век у существующих клиентов. Ради статистики только приведем пару цифр:
  • на нем работает около 4000 пользователей;
  • на сайт ежедневно заходят около 200 000 клиентов.


Платформа


Трех-звенное приложение, сервер приложений полностью разработан с нуля, использует для коммуникации Zyan Project. Ведущий разработчик платформы является одним из его контрибуторов. Общая схема приложения приведена на следующей схеме:

схема приложения

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

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

Сервер приложений и клиентское приложение — полностью managed приложения написаны на C# 5.0, т.е. используют LINQ и async/await (постараемся поделится своим опытом использования последних в следующих статьях). Собственно вся бизнес-логика реализуется в виде обработчиков различных событий тех или иных бизнес-объектов. Если Вы знакомы с 1С, то узнаете их — это справочники, документы и некий аналог регистра, у нас называется итогом.

Собственно клиентских приложений может быть много, но в платформу входит одно, в котором и встроена среда разработки и администрирования. Это GUI для описания структуры и взаимосвязей бизнес-объектов и редактор кода для скриптов. Скрипты на C#, аналог IntelliSense в редакторе присутствует.

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

Для иллюстрации стоит привести следующую диаграмму:

диаграмма взаимодействия Ultima Businessware

Ну и наконец сервер печати, уже трижды упомянутый, наша гордость в некотором смысле, отвечает за отправку на принтеры соответствующих печатных форм. Позволяет “виртуализировать” доступ к принтерам, организовать гарантированную доставку, убрать ожидание доступа до принтера (и как правило сократить время блокирования) и еще много чего. Подробнее расскажем в отдельной статье про его устройство.

Ну и далее про что мы собираемся рассказать:
  • Управление транзакциями. Как было и как стало. Проблемы управления транзакциями при многопоточной обработке.
  • Управление изменениями. Как у нас устроен контроль версий. Зачем он нужен, и что позволяет.
  • Поддержка REST/SOAP. Как у нас организована их поддержка.
  • Большой брат и история изменения данных. Почему Oracle Flashback Archive пока не может быть использован.


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


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

Кроме этого, постараемся о всех интересных возникающих задачах, не составляющих know-how или коммерческой тайны рассказывать в нашем блоге.
Ultima
38,00
Компания
Поделиться публикацией

Комментарии 30

    0
    делать это в первой же статье — прямой путь к перегреву мозга.

    Как же вы не правы. Метод крючка очень не красив.
      0
      Жду с нетерпением, если конечно вы не будете повторять того, что уже есть на Вашем сайте.
        +4
        Ну что же, поразите нас в следующих статьях, дайте нам демку, раскройте нам какую нибудь техническую проблему, которую вы решили и мы будем вашими благодарными читателями. Пока для технического блога мне кажется — маловато. Но я с надеждой смотрю в будущее, хороших технических статей о ERP мало. Может вы сможете сломать эту традицию?
          0
          именно так и планируем. Первый пост — сугубо вводный. Кроме демки — по причинам, понятным из картинок
          +1
          Есть у меня предположение, что в 2004 году ваша система работала в Ultra Computers/Electronics (ныне это Ulmart).
          Правильно ли я понимаю, что изначально она зародилась как внутренний проект для реализации бизнесс-процессов в ультре, а потом уже была выделена в отдельный продукт/фирму?
            0
            Примерно так. Разве что Юлмарт не равняется Ультре, это скорее наследник. Если интересны подробности — история тут
              +1
              Да, я в курсе про наследника и фактический перезапуск.
              Ваша ссылка «выключила» меня часа на 3, увлекательное чтиво.

            0
            Ну то, что с ultrы началось и сейчас в юлмарте работает это 100%. Вот только от чего ж у такой супер системы интернет магазин вечно тупит? Приходится пользоваться corp.ulmart.ru
              +2
              А вот, собственно, потому: http://www.dz.ru/portfolio/clients/ulmart/
              Это что касается именно сайта, а в целом см. здесь
                0
                лол, Завалишин со своей армией дешевых явщиков
                  +1
                  Потрясающие ссылки, ловите плюс) Особенно ржал над этим этим — кто в консалтинге работал, тот поймет)))
                    0
                    Кактусы и розы — хит вневременной. Такое впечатление, что он еще родом из 90-х.
                      0
                      Давно так не смеялся.
                      Даже про казахов которые всегда помогут прикрыть зад готовы подставить дружеское плечо не забыли.
                      0
                      Конкретизирую — плюс поставил исключительно за «Кактусы и розы», а вот сравнение вашей ERP и SAP так себе. Не берусь глубоко анализировать суть (не эксперт в вопросах архитектуры ERP и внедрения), но форма подачи оставляет желать лучшего.
                  +2
                  Буду очень рад прочитать об архитектуре системы (особенно в части недопущения описанного ниже), которая
                  — постоянно позволяет продавать «физлицам с налом» мой заранее оплаченный по предоплате товар(пункт выдачи расстроенно говорит что-то типа «предоплата не учитывается в расчёте резервов» вот вам третья колонка и скидка 10р)
                  — позволяет узнать что «товара нет на этой точке, мы вам привезём со склада в течение недели» только после совершения оплаты (и хорошо, если не в момент визита в магазин, как в первом случае).

                  То есть, я оказал доверие магазину, а он берёт и кидает меня с аргументом «вы уже оплатили, куда вы денетесь, а этот чел не оплатил, мы пожалуй возьмём у него деньги и отдадим товар, а с вами уж как-нибудь, у нас программа глючит из-за предоплат что вы от нас то хотите, может вы вообще бы не приехали забирать».

                  Вывод сделан на основе того, что вот с такими детскими проблемами уровня «ой, это у нас где-то закешировалось» я за последние пять лет встречался только в двух магазинах (джаст и юлмарт). И догадайтесь, что их объединяет? Общий разработчик ERP;

                  Я понимаю, что всё зависит от качества внедрения, но я, однако, вижу в этом примере тенденцию.
                  После повторения каждого из факапов сначала в юлмарте, а затем в джасте я стал по минимуму пользоваться услугами обоих(т.к. на оказанное доверие получаю косяк).
                    0
                    Тут несколько моментов.
                    1. Джаст и Юлмарт объединяет несравнимо больше, нежели одна и та же ERP-система.
                    2. Упомянутые вам косяки относятся даже не к качеству внедрения, а к управлению качеством работы внутри самой компании.
                    Если менеджмент относится сквозь пальцы к практике воровства товаров продавцами из чужих резервов (что решается за две минуты ограничением прав) — то причем тут архитектура системы?
                    Кроме того, есть фактор удобной отмазки. В случае косяка клиенту редко сообщается об истинной причине проблемы (на складе перепутали товар, или не могут найти, или старший менеджер решил отдать ваш товар для комплектации крупного корпоративного заказа привилегированного клиента) — по понятным причинам: этот ответ спровоцирует эскалацию конфликта.
                    Куда проще сказать «система сглючила» — ну кто из покупателей в здравом уме будет ругаться на неодушевленную «систему»? В крайнем случае скажете что, типа, «увольте ваших криворуких программеров», а менеджер возведет очи горе.
                    В каждой крупной компании для типовых проблемных ситуаций есть набор утвержденных шаблонов корректных отмазок (и сценариев купирования конфликта) — поверьте инсайдеру на слово.
                    3. Количество проблем в случае Юлмарта мультиплицируется тем, что интерфейсом общения с покупателем является ныне SAP. Там есть масса реальных (и неустранимых) косяков софта — но мы от них решительно открещиваемся.
                    Факт рейтинга качества Яндекс-маркета Юлмарта в 5 звезд, когда он работал только на Ultima, и 3 звезды ныне говорит сам за себя.
                    4. К утверждению, что подобные проблемы случаются только в Джасте и Юлмарте — не сочтите за обиду, но отнесемся скептически. Имея и обширный опыт, и гарантированно достоверный инсайд.
                      0
                      Спасибо за подробный ответ.

                      Я, пожалуй, перефразирую вопрос.
                      Очень важная часть любой автоматизации — продумать механизмы, которые помогут не дать серьёзно и несерьёзно накосячить (например, не дать одним кликом отгрузить неоплаченный заказ, а дать тремя или через старшего коллегу) или удалить все заказы за прошедшие три года и т.д..
                      Вопрос был в основном в этом и было бы интересно узнать какие логические механизмы это реализуют, как обеспечивается работа при разрыве связи между техплощадкой/ДЦ и магазином и вот такие технические вещи, универсального решения для которых не существует.

                      Мда, SAP для розницы это даже по моим представлениям о позиционировании SAP-a как продукта довольно странно.
                        0
                        Даа, с внедрением SAPа там весело стало =) Например, нам в счёте-фактуре нужно в графе «покупатель» указывать головную организацию (а во всех остальных графах всех документов — нас, филиал), так единственный способ нам их получить от Юлмарта правильно оформленными — это получить неправильные, написать нашему менеджеру, он у себя их распечатает ещё раз, отсканирует, исправит в Paint'е, пришлёт нам обратно, а потом мы их сами печатаем и едем с ними в ближайший «аутпост» ставить печати.
                          0
                          А в фотошопе печать вставлять, чтобы время сэкономить?
                          В свое время специально исследовался соответствующий вопрос со следующим результатом: нигде в законодательстве не сказано, что единственной легальной технологией простановки «печати организации» является нанесение синей краски резиновым штампом. Так что если обе контрактные стороны согласны считать документы с печатями подлинными, то нет никакой разницы, как они нанесены (и наоборот, кстати). Правда объяснить это медноголовым бухгалтерам…
                          Ну это так, оффтопом.
                            0
                            Предлагаете нам или им покупать Фотошоп? =) Нам проще в других местах покупать.
                            Плюс — мы филиал, у нас проверки из «головы» бывают, никто не хочет подставляться и доказывать потом что-то.
                          0
                          Если я правильно понял вопрос, то
                          а) некая обобщенная информация содержится здесь.
                          б) интересные с точки зрения разработчика технические детали организации безопасности\контроля доступа — повод для отдельного поста, спасибо за идею, передам Rupper'у (ваш покорный слуга и автор блога люди разные).
                      –2
                      Давно не видел ультиму, там до сих пор всякие веселые вещи встречаются?



                        0
                        Зависит от конкретной инсталляции.
                        В данном случае под членом, если мне не изменяет память, имеется ввиду не МПХ, а статус участия в бонусной программе (член=да).
                        Что же касается провокационности хумора (зависящего, правда, в первую очередь от степени отвязности заказчика функционала), то это далеко не самые соленые\легендарные пойнты.
                          0
                          На первой картинке больше кнопка «членировать» порадовала :)
                        0
                        А вот где можно почитать про причины, по которым Юлмарт не захотел переходить на новую версию платформы ультимы, а решился на экспериментс САПой? Как-то уж совсем не верится, чтовсе дело только в «схемах адресной компенсации усилий участникам переговоров»…
                          0
                          Нет — в силу причин этического порядка. Юлмарт остается нашим клиентом.
                          Но, в целом, причина абсолютно не в «адресной компенсации» — случай невероятной, надо сказать, редкости для внедрений SAP.
                          Все куда проще и смешнее.
                          Да, и, собственно, вопрос миграции Юлмарта на нашу новую платформу никогда и не стоял — на сап решили переходить отнюдь не потому, что старая платформа чем-то объективно не устраивала.
                          Она там и сейчас вовсю фурычит — только не во фронт-офисе.
                            0
                            Ну то, что фурычит это я уже понял, но вот с чего вдруг решили сделать такой «разворот» — загадка.
                            Единственное предположение — подготовка к IPO. Имя САПы в качестве используемой ERP звучит более солидно, чем малоизвестная локальная разработка.
                            Больше вариантов придумать не могу :)
                              0
                              Такая компонента в мотивации «лиц, принимающих решения» присутствовала, но не была определяющей.
                              Более на эту тему мы сказать ничего не можем.
                              Впрочем, «нет ничего тайного, что не стало бы явным» — но с прошествием времени.
                          0
                          Эх, как к вам можно устроиться на работу?

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое