Проект Corvus АБС
Удалось восстановить один ооочень старый архив с материалами этого нереального проекта. Верните мой 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% всего решения — шанс на успех откровенно был.
С миру по нитке, но все же удалось нанять нескольких ключевых людей, в первую очередь одного из главных аналитиков, отвечавших за постановки для оригинальной АБС.
Начальные условия
Оригинальная система была классической «двухзвенкой» из палаты мер и весов:
Это не было редкостью для банковского ПО и еще долгие годы использовалась например Diasoft 5NT, построенная точно на таких технологиях.
Все это предполагалось переработать на трехзвенную архитектуру, причем переработать хитро — было необходимо сохранить структуру СУБД и все процедуры, поскольку для АБС начинка базы составляет большую и самую важную часть такого решения.
И так дела обстоят до сих пор, несмотря на все ваши микросервисы.
Архитектурная схема всего решения:
Клиент АБС предполагался все также десктопным, без веба и ввиду необходимости автоматизации нескольких рабочих мест (АРМов) в рамках проекта, его разрабатывали модульным, с возможностью загрузки и выгрузки модулей в зависимости от роли пользователя:
Подобные модульные клиенты обычно создают на базе RCP-фреймворка (Eclipse RCP — как самый яркий пример), но у АБС слишком много специфики и требований для быстрого ввода данных, вроде перехода по полям ввода с клавиатуры через Tab.
Поскольку не было уверенности что получится с помощью RCP закрыть все требования, было решено писать все самостоятельно.
За основу был взят готовый движок с поддержкой модулей, оставшийся с одного из моих предыдущих проектов.
Вот так выглядели ключевые модули, стрелочками обозначены зависимости:
Движок был основан на использовании Managed Beans, части технологии JMX, глубоко зашитой в JVM и являющихся основой для контейнеров в полноценных серверах приложений на Java.
Вот так выглядела логическая схема модулей со всеми связями:
Разумеется для такого проекта вопрос безопасности был одним из ключевых, поэтому ее тоже продумывали сразу.
Так например выглядела схема авторизации HTTPS/TLS по приватным ключам и x509-сертификатам:
Разумеется помимо x509 были и обычные логин с паролем для повседневной работы, а схема выше обеспечивала защиту на канальном уровне.
Чем все закончилось
Указанный год создания проекта — 2008 думаю и так даст понять взрослым читателям как все это закончилось и почему :)
Но для более юных, не заставших те события расскажу:
Сначала поплохело основному бизнесу зарубежного инвестора и он немедленно свернул инвестиции. Затем свернула свои программы IBM. А через пару месяцев начали сыпаться банки — клиенты для банковского ПО.
Примерно к концу осени 2008го года все было кончено и автор пошел искать новую работу.
временами даже опыт, деньги, связи и готовые наработки пасуют перед внешними обстоятельствами.
Напоследок покажу как выглядел один из завершенных модулей АБС «Главная книга":