Comments 75
а) Инвестиции в железо и купленный так велики, что перекрывают все остальные инвестиции в банк?
б) Инвестиции в самописный софт…
… который не может портироваться ни подо что, от слова «вообще», и не может быть модифицирован? Вот этой части я не понимаю. Бизнес-логика же не должна быть завязана на особенности ОС.
Или я всё-таки что не понимаю в устройстве банковского софта?
In my old workplace there was a system that counted monthly turnover and other stuff for various companies. the process hasn't changed for over 40 years. Thus there is no reason to change the system. Also things like bugs in code, if there are any, we would rather keep consistent error margin rather than risk having other unknown bugs affect the result.
With this kind of system you can't thing in terms of multiple applications, this is not a PC. This mainframe does, lets say plane ticket bookings, and this is all it will ever do. So you have to sacrifice everything for performance.
Sorry for the English, don't have a Russian keyboard on hand :)
I could guess that 'if you have access to this thing, than it's a gameover, close the bank', but vulnerabilities may arises from a rather unexpected sources, and system with no update has many known CVEs. I think, this puts system to a risk of another scale.
… And we even hadn't started to cound geo-political risks. How about sanction-induced revocation of the license for 'i'?
Мне очень грустно видеть, что кто-то свой бизнес настолько завязывает на одного вендора.
Мне очень грустно видеть, что кто-то свой бизнес настолько завязывает на одного вендора.А мне грустно видеть, что вы за деревьями не видите леса. Платформа вышла больше 30 лет назад. И всё что вы писали под неё всё это время — вы можете использовать и сегодня. Несмотря на несколько смен CPU и прочего.
А сколько других платформ, с множеством поставщиков, за это время появилось и умерло? Назовите вообще хоть одну другую платформу позволяющую использовать бинарники, созданные 30 лет назад без перекомпиляции! И не в режиме «запустим эмулятор X под эмулятором Y и там будем пускать ваш старый софт» (а новые модули кто и как к этому будет прикручивать?), а в режиме «купили железо, заменили — всё дальше продолжило работать»?
Преимущество Windows перед всякими бесплатными GNU/Linux'ами — в стабильности (на уровне ядра у Linux'а всё хорошо, но вот разработчики Desktop'а, со своим бессметрным CADT, казалось, все свои усилия много лет тратили на то, чтобы их разработками никто-никто не смог воспользоваться), но по сравнению с AS/400 Windows — это просто бабочка-однодневка.
Что касается «стабильности» винды — запустите что-нибудь из эпохи XP под десяткой.Что конкретно предлагается запустить? Delphi и MS Office работают, Visual Basic 6 — тоже. Чаще всего бывают неполадки с инсталляторами, но, в общем, преодолимые.
Кстати Windows XP вышла в 2001м году, так что прошло уже заметно больше 15 лет.
Сейчас ее развивают и поддерживают крупные корпорации, в том числе и IBM.У RHEL нет версии для десктопа, а Fedora — это как раз типичнейшый CADT и есть.
Если есть Си, будет и питонупс. Покажите мне Питон на STM32 под FreeRTOS, плиз…
Мне очень грустно видеть, что кто-то свой бизнес настолько завязывает на одного вендора.Особенно, если это IBM/PC. Что из написанного вами пойдет не на персоналках? Ну скажем на ту же AS/400 что перенести сумеете?
Большая ЭВМ — это не персоналка, там совсем иной подход. Решения с микроэвм на неё не переносятся.
Меня этот проект интересует потому, что на его основе сейчас создается новая версия UEFI SCT, без которой невозможно проверить конкретную реализацию UEFI-совместимой прошивки на совместимость с конкретной версией спецификации.
мало кто ожидал что жрать будет не мегабайты.Ну вот потому мне и не кажется верной фраза: Если есть Си, будет и питон
Проблема с которой столкнулась компания: у нас в городишке все кто умеет работать с Cobol/RPG уже на пенсии либо работают у нас и тоже скоро на пенсию. Учить это, а тем более писать на нём, никто в здравом уме не будет.
Ну а в сопуствие весь букет проблем связанных с legacy:
— деды которые ещё работали на оригинальном GS не понимают как работает современный веб и банальное перемещение поля из левого угла на 40 px ниже вызывает взрыв звонков в саппорте
— молодеж, которую кастомеры нанимают к себе, нужно учить к Legacy подходу для тех компонентов, которые пока не переписаны
— воспроизведение очевидных багов Legacy в новом коде, потому что 30 лет они доказывали что это «не баг, а фича»
Бизнес-логика примерно такова:
Есть ЦБС, система в которой ведутся счета. Времена, когда ее могли написать на фокспро давно прошли, щас это должна быть аццкая транзакционная сотона которая оперирует миллионами счетов, логирует всё и не имеет права на ошибки. Это — основа банка, как фундамент — основа здания; разрабатывают такие системы не так уж много фирм, и выбрав одну — на что-то другое перескочить практически нереально, не останавливая банк — нереально практически совсем, в случае крупного банка — нереально ваааще, даже в подвиндовом мире, потому что вокруг конкретной ЦБС и ее особенностей накручивается со временем столько всего, что это всё проще закрасить чем отскребать. Это, кстати, работает в обе стороны, если с PC-шной ЦБС в уже сложившейся среде пытаться переехать на IBM — тоже получится исключительно трэш угар и содомия.
В случае инфраструктуры на AS/400 это усугубляется еще и тем что их система очень сильно заточена в производительность в режиме мультидоступа, и если например позаменять у всех операторов во всех филиалах большого банка старообрядный зеленый экран терминала с формами какого-нибудь Equation'а на современные модные воздушные material'ные вебинтерфейсы — то сети банка сильно поплохеет.
Таковы они, суровые реалии-с кровавого энтерпрайза, легаси и промышленных систем.
Плюс всякая политика внутренних отделов, IT против безопастников, Ильина Матвеевна — ведущий программист, писала систему аж с 74 года, вся документация у нее. И огромное количество очень дорогих контактов проплаченных на 5 -10 лет, и проблемы с нахождением альтернативы.
А кстати, Актиан (разрабы Ingres ) сделали сервис где на твой зелёный терминал нахлобучат этот ваш материал дизайн и все вроде даже заработает. За совершенно символическую плату. Ну так и зачем вам менять свой старый мейнфрейм? :) А Ирина Матвеевна может продолжить работать на глупом терминале.
Мелочи вроде LPAR, когда в одном шкафу могут жить 3-5 ОС, на которых работают бизнес-приложения, не мешая друг другу без возможности залезть из памяти Linux в память Windows Server в другой партиции.
Ну и еще, вспоминая дела давно минувших дней, был я как-то в 90-х на презентации IBM про тогда еще AS/400. Особенно запомнилась фраза презентующего: «Если на виндоус сервере у вас загрузка процессора больше 50% — у вас где-то есть проблемы и все страшно тормозит. Если на мэйнфрейме у вас загрузка процессора меньше 100% — где-то оборвался коммуникационный кабель.»
И это уже не говоря о том, что филиалами надо было самим писать ПО для расчетов через местные РКЦ ЦБ РФ. Я сам лично нашёл ошибку в функции расчёта контрольной цифры банковского счёта, которую 7 лет не могли найти программисты из ЦО. «Ну да, у нас иногда бывало такое, что некоторые заведённые у нас счета не проходили контроль в РПУ2» (по моему так называлось московское РКЦ, работавшее с крупными банками), «перезаводили такие счета в системе для частных вкладов (Esc/M), там всё получалось правильно». Вот такое было качество кода у АБС Альфа-Банка. Зато с какими сложными щщами ходили начальники отделов — это вам не весёлые и умные раздолбаи из «Российского Кредита», АБС у которых пахала на Sun Solaris и Oracle 7 («Симболино, сынок...» как мы ласково называли адаптированную Форс сингапурскую АБС Symbols. Офигенная штука, к которой мы дописали автоматическую систему резервирования, которая по-моему до сих пор работает в Авангарде. Веселые времена были.
Так что для Альфы внедрение Equation на OS/400 в конце двухтысячных было гигантским шагом вперёд. А иначе до сих пор бы сидели на Клиппере с его dBase4 DBF. Хотя не, потуги у ребят были. Они честно пытались наваять А-Банк на Informix. Informix был хорошей СУБД с отвратительными средствами разработки, которые были на голову хуже терминальной Oracle*Forms даже самой первой версии. Оконные интерфейсы на Информиксе надо было полностью писать вручную. Как я обрадовался, что IBM приобрел это чучело и прибило его, чтобы оно не болталось под ногами у DB2.
Веселые времена были.
Банковский софт должен быть
а) Надежным
б) Еще раз надежным
в) И еще раз надежным.
Т.е. превыше всего надежность. Если тот софт, что пишется внутри банка собственными силами и/или вендорами можно оттестировать на надежность (а тестирование там проводится специально обученными людьми и не в один этап — компонентное, интеграционное, бизнес, нагрузочное...) то надежность платформы на которой все это крутится должна обеспечиваться ее производителем.
И данная платформа (IBM i) достаточно надежна ибо разрабатывалась не под бытовые нужды, а для высокопроизводительных коммерческих серверов.
Что касается собственно АБС (автоматизированной банковской системы). Данная АБС есть система реального времени. Т.е. пользовательские операции тут совершаются не «с 4-х утра до полуночи», а круглосуточно. Даже при том, что сведение баланса (ежемесячный кошмар бухгалтера) в банке происходит ежедневно.
Чего стоит это реальное время для системы… Об этом лучше не говорить ибо в двух словах не описать :-)
Ну и на самом деле бизнес-логика на особенности ОС никак не завязана. Завязана ее конкретная реализация. И не столько на особенности ОС, сколько на особенности используемой банков АБС. А та или иная АБС используется любым банком ибо написать все с нуля своими силами нереально. И ни о каком порте тут речи быть не может.
Ну а что касается темы статьи — тут речь идет не о бизнес-логике, а о том самом тестировании. Без которого ни одна поставка не уйдет в бой. И о посильной автоматизации этого тестирования. Ибо куда проще и спокойнее дорабатывать поставку с тестов, чем бросать все и кидаться срочно затыкать дефект боя (когда некорректная работа обнаруживается уже в промышленной эксплуатации и сказывается на клиентах, вызывая их негативную реакцию и ущерб репутации банка).
1. Очень дорогое (реально хватит чтобы поддерживать legacy еще лет 20)
2. До ужаса рискованное (был случай когда из-за внедрения ERP разорилась крупная сеть аптек, я серьезно это даже в учебники вошло)
3. Очень длительное и требует параллельного допила в Legacy. Нельзя ж запереть 100 программистов в кабинете и через 4 года получить систему т.к к тому времени она тупо морально устареет. Компромиссом является постепенный перенос бизнес процессов и развитие их в новой системе, при этом появляется огромный пласт интеграции между системами.
4. Далеко не всегда приводит к выводу Legacy из эксплуатации. В лучшем случае (повторяю — это самый оптимистичный случай) Legacy система будет жить в полу замороженном состоянии с небольшими вынужденными (не приносящими бизнес профита) допилами.
Как ни странно, но, помимо большого количества Legacy решений, были и другие причины оставаться верным зелёному экрану. IBM железо дорогое, но к нему не нужно докупать лицензии на базы данных — DB2 идёт из коробки. Скорость, надёжность, сложность администрирования — как у конкурентов или лучше. Отдельный важный плюс в хорошем саппорте. Софт и железо идут одним комплексом, что ускоряет и упрощает траблшутинг. Не возникает футбола, когда продавец бд посыдает к железячнику, а железячник клянётся мамой, что с их стороны всё хорошо, а глючит ПО.
Жирных минусов лично я вижу два. Первое это вендор лок. Второе, гораздо более важное, это недостаток профильных сисадминов (даже не программистов, программисты есть) на рынке. Имеющиеся специалисты стремительно приближаются к пенсионному возрасту, а молодёжь не торопится связывать свою карьеру с зелёным экраном. При чём руководство проблему видит и готово вкладываться в обучение джунов, но желающих всё равно не густо.
Я однажды в самом начале 90-х подрабатывая типа гидом-переводчиком общался с буржуем. У него был успешный бизнес, который обеспечивал ему безбедную жизнь и возможность ездить по странам, которые ему были интересны. У него был один компьютер на весь его успешный бизнес. Кажется что-то типа PC-XT с хардом на 40 мегов. На мое удивление, он ответил, что его программа учета прекрасно работает. А что еще нужно? Я не осилил тогда ему вразумительно ответить, зечем нужно что-то более крутое. И сейчас бы я тоже, вряд ли бы смог дать однозначный ответ.
Мир состоит не из одного вебдезаена, бизнес считает деньги, и подобные предложения встречает вопросом «а кто за это будет платить?» И таких стюардесс в мире реального успешного бизнеса — чуть менее чем дохрена.
Ну и эта, вы догадываетесь за чей счет будут похороны стюардессы если с AS/400 решит соскочить тот же, афаик, сбер?..
Я не по наслышке знаю, что творится в альфе и в сбере. Ребят которые там работают иногда и пожалеть хочется, особенно эксплуатационников. Какую только древность не реанимируют ежедневно. Бывают дни когда вообще нет времени не то что чай попить или покурить, а и до белого друга добежать. В том же альфе огромная потребность в новых исправных решениях. Проблема в том, что новые решения не то чтоб не соответствуют специфике, новые решения вообще невозможно интегрировать ни в существующую систему ни в новую. Множество решений на рынке вообще малоприминимы ни в широком смысли ни в узком сегменте. Буквально десять заказчиков на весь земной шар.
Вы, вероятно, путаете некрофилию и некромантию. Здесь нет нездорового интереса, здесь циничная прагматика без модного пафоса. Если зомби послушны, не устают и не спят — зачем их заменять кем-то голодным, своенравным и состоящим в профсоюзе?
а вот бот-кликер для эмулятора зеленеого терминала — ах это так сложно.
P GUI_FOO B
D GUI_FOO PI
D inDS LikeRec(DSPF.REC:INPUT)
D outDS LikeRec(DSPF.REC:OUTPUT)
/if not defined(TEST)
write DSPF.REC inDS;
read DSPF.REC outDS;
/else
outDS = Mock();
/endif
P GUI_FOO E
P Mock B
D Mock PI
D outDS LikeRec(DSPF.REC:OUTPUT)
outDS.in03 = *On;
outDS.fooACC = '47202810000000000000';
outDS.fooAMT = '123.123';
P Mock E
Это не совсем то, что у вас, конечно, зато дико быстро. Если в дисплейнике какое-нибудь поле запротектить или функциональную клавишу запретить, то GUI сломается, однако такого сорта тесты будут продолжать проходить. Но логику с валидациями так можно отлично тестировать.
В духе на экране нужно указать счёт, БИК и сумму для перевода. В дисплейнике это, пусть, fooACC, fooBIK, fooAMT. В OUTPUT-рекорд формате будут все функциональные индикаторы и эти поля. Поэтому можно написать тесты для реакции на ответы с взведёнными *in03, *in12, разнообразным трешем в fooACC, fooBIK, fooAMT и т.д.
Если везде аккуратно ставить LikeRec и Like, а также не использовать явные координаты в структурах, то это всё отлично переживает и изменения структуры базы, и изменения в дисплейнике.
А ещё платформе не хватает нормальных «разрешений» зелёного экрана: не 27x132, а 40×200, грубо говоря. Текстовые интерфейсы дико быстрые и удобные для операционистов. Все эти модные анимации, выпадушечки и т.п. из браузера для работы операциониста не нужны, а нужно 100% надёжная, быстрая и предсказуемая работа с клавиатуры…
А языку не хватает нормальной стандартной библиотеки.
Как человек, который последние лет 10 предпочитает не работать с текстом более чем 25x80, не соглашусь.
Местами нужно впихивать много текста, да. Но основной интерфейс перегружать нельзя.
А лучше таки переходить на графику — не зря ведь её так долго и тщательно изобретали, начиная с бумажных бланков. Только продумать, а не свистелки-прыгалки накидывать.
> Текстовые интерфейсы дико быстрые и удобные для операционистов.
Эти свойства ортогональны текстовости. Современные массовые графические интерфейсы, да, не рассчитаны на гарантию быстрой и адекватной реакции; например, когда посреди набора поля всплывает окно «вам письмо» и забирает на себя фокус. Профессиональные интерфейсы не должны такого давать, но и не должны быть ограничены текстом.
Формат терминалов IBM, да, способствует тут нормальной работе — когда текст вводится в локальном поле и потом идёт сигнал в центр с готовым результатом, а не нажали клавишу и ждём, когда пройдёт через tty, его дисциплину, код libreadline и т.д. Но он соответственно и ограничен.
На сейчас можно было бы вполне сделать в самом терминале логику совмещения и оперативности и надёжности действий, и расширить её на любые графические объекты. Видимо, не было пока настолько платёжеспособного запроса.
Текстовые интерфейсы дико быстрые и удобные для операционистов.Не скажу за операционистов, а саппорт рядом сидит. И от вида того, что они в этой консоли набирают — волосы дыбом встают в неожиданных местах и тайком крестишься, в надежде, что прям сейчас дьявола не вызовут.
НГДБР 211, РР, 25 DD5!, прости господи…
На самом деле изобретали велосипед. В pcom есть библиотека, в которой с древних времен нв VB отлично пишутся любые экранные скрипты. Не нравится VB — можно через обертку на питоне, например. Не нравится вин — есть бесплатная опенсоурсная реализация tn5250, где опять же имеется API.
Если не нравиться jt400, есть отличная опенсоурсная альтернатива (опять же от IBM).
Вообще, лет 20 назад, мне предлагали работать в альфе как раз в команде as400. Но платили что-то не очень, так что не срослось. Интересно, там ведь еще остались люди, пишущие на RPG и все вот это вот? Или все уже на пенсии?
Там с новым acs (реинкарнация client acess) и библиотекой pcom есть сложности. Библиотеки автоматизации просто нет.
Midas это райф и раньше юник. В Альфе Эквейжн
update: а вот, кстати, что IBM предлагает: https://www.ibm.com/support/pages/ehllapi-access-client-solutions-emulator
Голубые гиганты не перестанут получать прибыль на «зеленых экранах» еще долго. Хотя, экраны уже давно могут быть не зелеными, а какими угодно.
А не расскажите, чем эта операционная система принципиально отличается? Я сам застал vax/vms и даже rsx-11m
Спасибо! Было интересно почитать.
Да когда-то отсутствие штатного API у абс компенсировалось ком+ компонентой вколачивающей данные в эти экранные формы :)
Ещё одна альтернатива: IBM HATS/WebFacing — штатная вебизация зелёного экрана.
После запуска можно переключится на стандартный стек тестирования с selenium и xpath. Тут и автоматизация быстрее станет.
Более свежая версия конкурента абс Midas от Finastra (ex. Misys) уже лет 10 как ушла от зелёного экрана.
Хотя наверное более свежий Equation тоже с веб формами?
Скорость действительно запредельная — человек уже точно ничего не поймет, но этого и не надо, ведь вам же нужен результат — выполнено ли(терминал ввёл нужный текст), или нет. И если уж получено не то, что ожидали, то тогда уже поднимать логи.
Странно что вы принудительно ставите задержки, чтобы человек смотрел что там происходит, за 60мс ничего ведь не понять :)
Я сделал так, чтобы он каждые 3 секунды сохранял текст экрана в файлик, или в бд, чтобы можно было человеку посмотреть, почитать чем робот сейчас занят.
Ещё момент — мне кажется, вам тоже стоило заморочиться и свой чистый эмулятор написать, без всего лишнего, я сделал за 2 месяца в паре с wireshark, а вы возможно и того больше, возившись столько с разными вариантами готового ПО.
Кстати, возможно кому-то это покажется диким, но робот был написан на php, тогда ещё на версии 5.4 крутился. Памяти не жрал(всего около 8мбайт), не падал, работал чертовски стабильно. Это к слову тем, кто до сих пор презирает php, что он только для home page годится). Кстати, вот вам и ответ, fukkit на этот комментарий habr.com/ru/post/445380/#comment_19947386
Кстати, в самой Альфе люди даже не знают, что у них есть зелёные экраны. Даже некоторые топ-менеджеры думают, что у них всё работает на Pega )
Нанять команду, например, джавистов, которые погрузятся в предметную область и за несколько лет вдумчиво построят ядро системы с нуля может быть дешевле, чем это же время содержать команду поддержки AS/400, которая будет просто разбираться с текучкой.Проблема в том, что вам всё равно потребуется поддерживать AS/400 в адекватном состоянии и, кроме того, нужно будет интегрироваться с «новыми, стильными, молодёжными» вещами.
Так что затраты у вас вырастут как раз на AS/400 программистов — и существенно.
Наоборот, будет дороже и больнее. Стек RPG-DB2/400-OS/400 работает как часики, и писать бизнес логику в нем одно удовольствие. Вот переписывание на java займет действительно на порядки больше и времени и денег.
Поддержка as400 будет требовать меньше людей чем поддержка аналогичной функциональности на java.
Задумайтесь, ведь никто не запрещает писать на java для as400. Там есть отличная, оптимизированная JVM. Только не пишут особенно бизнес логику. А все потому, что на RPG проще и быстрее.
— постановке в беклог на полгода;
— разработке в течение нескольких дней с постоянным общением с разработчиком;
— еще месяцу исправлений ошибок, вылезших в других местах.
Возможно, дело в низком качестве разработчиков (индийские фамилии попадались частенько), но у меня сложилось впечатление, что сам по себе язык RPG не может обеспечить достаточную изоляцию функционально не связанных кусков кода, что приводит к сильному усложнению процесса разработки.
В результате двух лет борьбы со связкой RPG+worldwriter была на коленке написана простенькая программа, вытягивавшая данные через ODBC и печатавшая все что нужно. Уже больше 10 лет там не работаю — программа, по слухам, так и работает — ничего лучше не придумали.
IBM System i (aka AS/400) — Как мы делали автотесты приложений зеленого экрана