software-development
January 14

Проект Corvus АБС

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

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

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

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

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

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

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

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

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

Геройский проект для героев

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

На что есть веские причины:

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

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

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

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

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

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

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

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

Взялись бы за такое?

Непонятный текст в центре - киргизский.

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

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

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

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

Такие были интересные времена:

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

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

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

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

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

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

все просто встали со своих рабочих мест и ушли.

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

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

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

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

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

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

Ну и меня.

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

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

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

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

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

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

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

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

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

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

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

Вот так выглядели ключевые модули, стрелочками обозначены зависимости:

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

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

Разумеется для такого проекта вопрос безопасности был одним из ключевых, поэтому ее тоже продумывали сразу.

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

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

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

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

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

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

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

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

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

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

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