software-development
January 14

Проект Corvus АБС

Удалось восстановить оочень старый архив с материалами этого нереального проекта. 2008й год!

Интерфейс 2008го года, который до сих пор выглядит круче всех ваших проектов

Еще про наши проекты можно почитать тут, тут и тут.

Верните мой 2008й

Итак, на дворе весна замечательного 2008го года, я молод и прекрасен поднабравшись опыта в банковской разработке на IBM WebSphere решил что пора опять сделать что-то большое и ушел в.. эм ну фактически стартап.

Так выглядело мое рабочее место в те годы:

На всем этом «кибер-чуде» крутился линукс, мультимониторная система была настроена через Xinerama, был настроен даже линуксовый клиент для корпоративного Lotus Notes (!) и шла вся ежедневная разработка под IBM WebSphere.

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

Вот и прикиньте насколько я тогда был крут чтобы все это получить.

Но вернемся к проекту.

Геройский проект

Если меня читает кто-то с опытом в банковской сфере, при фразе «разработка АБС» у него должен был дернуться глаз, проливание кофе или случиться еще какой конфуз.

И на то есть серьезные причины:

Автоматизированная банковская система (сокр. АБС, англ. core banking system, сокр. CBS) — комплекс программного и технического обеспечения, направленный на автоматизацию банковской деятельности.

Gartner определяет основную банковскую систему как внутреннюю автоматизированную систему, которая обрабатывает ежедневные банковские операции и производит обновление счетов и других финансовых записей. Основные банковские системы обычно включают в себя возможности обработки депозитов, займов и кредитов, с возможностью подключения к стандартным системам бухгалтерского учёта и инструментам отчетности[1].

Проще говоря, такой софт был основой любого банка начиная с появления первых компьютеров.

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

И с ценой решения, устремляющегося в бесконечность.

Собственно достаточно одного успешного внедрения подобной системы, чтобы кормить с него команду разработки годами:

В 1993 году компания ПрограмБанк начала разработку новой банковской системы в клиент-серверной архитектуре на базе СУБД Oracle. Изначально система имела рабочее название «Unix-комплекс», вскоре она получила имя «Афина» (от слов автоматизация и финансы). На рынок система вышла в 1997 году, была успешно внедрена в семи банках.

По крайней мере так обстояли дела на 2008й год, до начала набора «внутренних компетенций» и постепенного отказа от готовых и частично закрытых решений в критичных местах.

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

Представили?

Видите непонятный текст в центре? Это киргизский.

Советский стартап

Жил был простой советский инженер, отслужил в армии, закончил ВУЗ и затем работал по профилю, это если кратко и без погружения в карточку личного дела, где разумеется все куда интереснее.

В начале 90х занялся разработкой банковского ПО.

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

Такие были времена.

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

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

отлучать от корыта особо наглых сотрудников, адекватно реагировать на сигналы, продумывать, планировать да и просто банально договариваться.

К сожалению как и очень многие обычные советские люди, к рыночным реалиям наш инженер оказался не готов.

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

Дословная цитата:

все просто встали из-за рабочего места и ушли

С тех лет осталось пара бывших сотрудников, оставшихся лояльными и бывший деловой партнер, уехавший к тому времени из РФ и создавший какой-то крупный бизнес в Европе.

На последних остатках связей и авторитета, наш инженер изо всех сил надул в уши парнеру и тот дал денег на оживление проекта.

Еще были гранты от IBM, которые тогда сильно продвигали в РФ любые решения построенные на базе собственных продуктов и на полном серьезе давали денег если вы запилите что-то на базе скажем IBM WebSphere.

Суть всей затеи заключалась в том чтобы «быстро-быстро» переписать на Java клиентскую часть, впихнуть сервер с WebSphere между клиентом и базой данных и собственно идти продавать бывшим клиентам, благо контакты остались.

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

С миру по нитке, но все же удалось нанять нескольких ключевых людей, в первую очередь одного из главных аналитиков, отвечавших за постановки для оригинальной АБС.

Ну и меня.

Начальные условия

Оригинальная система была классической двухзвенкой:

толстый клиент на Delphi и база данных Oracle 8

Это не было редкостью для таких систем и еще долгие годы с тех времен использовалась Diasoft 5NT, построенная точно на таких технологиях.

Все это предполагалось переработать на трехзвенную архитектуру, причем очень хитро — было необходимо сохранить структуру СУБД и все процедуры, поскольку для АБС начинка базы составляет большую и самую важную часть такого решения.

И так дела обстоят до сих пор, несмотря на все микросервисы.

Архитектурная схема всего решения:

Клиент АБС предполагался все также десктопным, без веба и ввиду необходимости автоматизации нескольких рабочих мест (АРМов) в рамках проекта, его разрабатывали модульным, с возможностью загрузки и выгрузки модулей в зависимости от роли пользователя:

Подобные модульные клиенты обычно создают на базе RCP-фреймворка (Eclipse RCP — как самый яркий пример), но у АБС слишком много специфики и требований для быстрого ввода данных, вроде перехода по полям ввода с клавиатуры через Tab.

Поскольку не было уверенности что получится с помощью RCP закрыть все требования, было решено писать все самостоятельно.

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

Вот так выглядели ключевые модули:

Движок был основан на использовании Managed Beans, части технологии JMX, глубоко зашитой в JVM и являющихся основой для контейнеров в полноценных серверах приложений на Java.

Вот так выглядела логическая схема модулей со всеми связями:

Разумеется для такого проекта вопрос безопасности был одним из ключевых, вот так выглядела схема авторизации HTTPS/TLS по приватным ключам и x509-сертификатам:

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

Чем все закончилось

Указанный год создания проекта — 2008 думаю и так даст понять взрослым читателям как все это закончилось и почему :)

Но для более юных, не заставших те события расскажу:

Сначала поплохело основному бизнесу зарубежного инвестора и он немедленно свернул инвестиции. Затем свернула свои программы IBM. А через пару месяцев начали сыпаться и сами банки.

Примерно к концу осени 2008го года все было кончено и автор пошел искать новую работу.

Мораль всей этой истории?

А ее у меня для вас нет — временами даже опыт, деньги, поддержка и готовые наработки пасуют перед внешними обстоятельствами.

И нихрена с этим не сделать.

Напоследок покажу как выглядел один из завершенных модулей АБС «Главная книга":