Проект Corvus АБС
Удалось восстановить оочень старый архив с материалами этого нереального проекта. 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го года все было кончено и автор пошел искать новую работу.
А ее у меня для вас нет — временами даже опыт, деньги, поддержка и готовые наработки пасуют перед внешними обстоятельствами.
Напоследок покажу как выглядел один из завершенных модулей АБС «Главная книга":