Інтерв'ю з мамою, банківським програмістом на COBOL'е


Фото з Гугла, це не мама автора
Моя мама почала працювати в одному з найбільших банків ЄС ще до мого народження, а я завжди був небайдужий до її спеціальності, особливо в останні роки, оскільки сам став програмістом. Мене багато разів просили взяти у неї інтерв'ю, і я, нарешті, вирішив це зробити.
Поясню трохи
Світ банківського програмного забезпечення — це інша всесвіт. Вона сильно відрізняється від тієї, до якої звикло більшість з нас. Я публікую цей пост на HN та Reddit. Публікую інтерв'ю не у вигляді запитань-відповідей, а у вигляді розповіді. Я додав деякі питання і відповіді в нижню частину поста.
1991
Рік, коли вона почала внутрішнє навчання в банку Nordea, який тоді називався Nordbanken (Північний банк). У 2001 році його перейменували в Nordea. Під час навчання вона повинна була проходити різні тести, в першу чергу тест IQ, щоб показати, що вона володіє інтелектом, достатнім для роботи в цій області. Тест на психологічну стійкість — що у неї достатньо нервів для цієї специфічної роботи і тест на багатозадачність, який вона завалила з оцінкою 22/100. Інші тести вона пройшла успішно і зайняла одну з 16 наявних позицій.
Посада звучала «як програміст мейнфреймів IBM на мові COBOL», і досі, уже 25 років, моя мама працює на цій посаді в тому ж банку.
Ця позиція банку найважливіша, принаймні, з технічної точки зору. Якщо, скажімо, мама і члени її команди одночасно кинуть роботу, банк розориться в кращому разі протягом декількох тижнів. Її колектив працює позмінно з цілодобовою доступністю. Пам'ятаю, коли я був молодший, вона брала таксі і їхала на роботу посередині ночі, в неділю, щоб виправити взаємне блокування.

Мій брат (йому 1 рік, він ліворуч), моя мама і я (праворуч)
COBOL...
… це не такий крутий мова програмування як функціональний Haskell або Golang для паралельних обчислень. COBOL — це імперативний, процедурний мову, а з 2002 року — об'єктно-орієнтований. В самій мові нічого поганого немає, проблема в тому, що його майже ніхто не знає, як мінімум в контексті програмування мейнфреймів. Моя мати — друга з наймолодших членів команди, а вона народилася в 1964 році. У наймолодшого з персоналу різниця з нею на два роки. Це глобальна проблема, оскільки майже всі найбільші банки у світі працюють з мэйнфреймами IBM і COBOL у них — основна мова програмування. У дрібніших банків ситуація краще, вони зазвичай працюють, наприклад, на Java, без мейнфреймів.
Мама раніше питала мене, чи я не хочу вивчити цю мову, але я тоді вже працював з більш просунутими технологіями начебто Postgres, Redis, Node, Crystal, PHP і завжди відповідав «Так ні за що!». Мені досі цікаво те, що вона робить, але такі типи систем викликають, здається, найгірше відчуття корпоративщини, яке тільки можна уявити і якого мені хотілося б уникнути.
Правда, я можу тільки уявити жирну зарплату 20-річного програміста старого мейнфрейма, тому що вік в цьому випадку безцінний.
Бази даних
Їх основна база даних називається IMS. Це ієрархічна база даних, створена IBM для програми Apollo. Між собою вони називають її DL/1, Мову Бази даних 1 (Database One Language). Вони намагаються мігрувати на DB2, реляційну базу даних, яка розуміє нормальний SQL. Але, з огляду на величезний обсяг даних, які зберігає банк Nordea, таке завдання займе кілька років. Потрібно не просто перемістити дані з IMS в DB2, на додаток треба оновити модулі для завантаження і збереження даних DB2 замість IMS, а модулів тисячі, багато з них були розроблені програмістами, які або померли, або вийшли на пенсію.
Кожна транзакція зберігається в DB2. Вони уникають записів у IMS наскільки це можливо, і тільки зчитують з неї дані, поки їх нова куплена система не повністю інтегрується, і вони не зможуть зберігати дані.
IMS — надзвичайно стара і дуже повільна (для деяких завдань).
Пошук даних може зайняти кілька годин. Ха, а ми тут сперечаємося про те, що у MySQL швидкість виконання запитів на дві мілісекунди вище, ніж у Postgres. Трохи іронічно.
Вони також використовують плоску файлову структуру для цілого ряду завдань, які самі по собі поділяються на кілька підвидів, підтримуваних IMS. Один з прикладів — GSAM, з-за якого мамі не раз доводилося мчати на роботу на таксі. І все з-за модулів, що працюють з одним і тим же GSAM-файлом одночасно, створюючи взаємні блокування.
Давайте поговоримо про розмір їх баз даних. DB2 зберігає дані про транзакції, і транзакції відрізняються за розміром, залежно від типу рахунків, між якими протікає транзакція. Приватні рахунки, як мій особистий банківський рахунок, на порядок простіше, ніж корпоративні рахунки. Кожна транзакція важить десь від 500б до 2Кб, в середньому приблизно 1Кб.
Зараз їх база даних DB2 зберігає 11 мільярдів транзакцій, а закон вимагає зберігати кожну транзакцію протягом 10 років, а за фактом — 11 років. На даний момент транзакціях тільки 7 років, а їх кількість, ймовірно, зростає на 5-8% кожен рік, і так, поки вони не дочекаються 11 років, коли можна буде знищити записи старше 11 років.
Виходить, сьогодні DB2 зберігає близько 10Тб даних, і це тільки транзакції. Через чотири роки це перетвориться приблизно в 13-14Тб.
Велика частина залишилася інформації зберігається в IMS. Ці дані сильно відрізняються за обсягом, так що важко оцінити розмір, але я припускаю, що їх набагато більше, ніж в DB2.
вони Ще зберігають деякі дані на стрічках, а їх програми вказують машині завантажити або зберегти дані з конкретної стрічки. Це досить круто!
IDE
У всіх є щось на зразок IDE або текстового редактора, правда? У них, ось, є. Їх IDE називається ISPF і нагадує операційну систему. ISPF можна розширювати, та частина, яку можна назвати IDE — це розширення ISPF під назвою Endevor.
ISPF безпосередньо пов'язана з мейнфреймами, і у них немає такого поняття, як локальна середовище розробки.

Інтерфейс ISPF, знайдений в інтернеті
Пакетна обробка
Приблизно 80% їх систем — пакетна обробка. Це завдання, які виконуються в певний час або інтервал часу, виконуючи яку-небудь обробку даних або відправляючи дані в інші банки, агентства чи ще кудись. Наприклад, коли я купую банку кока-коли, гроші знімаються з мого рахунку, але фактично гроші нікуди не надходять, поки одне з їх пакетних завдань не проведе цю операцію. Ці завдання, як правило, виконуються в нічні години, тому зазвичай вимагається день, щоб операції між банками завершилися. Транзакції усередині банку зазвичай миттєві, оскільки виконуються відразу.
Пакетні завдання працюють з гігабайтами, іноді терабайтами даних, і в деяких випадках може зайняти кілька годин. Хотілося б подивитися, як мейнфрейми IBM раптово переходять на повну потужність їх датацентрах в ту секунду, коли на годиннику 00:00. Це було б офігенно!
Проблеми, з якими стикаються банки
У банків, які працюють на мэйнфреймах, безліч проблем, які вони повинні вирішувати, але часу на це, на жаль, не вистачає.
Програмісти стають старше, не багато хочуть вчитися, а час, через який новий співробітник зможе впевнено виконувати свої функції, становить 2-3 роки, і навіть після цього він може потрапити в нетипову ситуацію.
Є програми, яким десятки років: ніхто не розуміє, як вони працюють, а людини, яка їх писав, вже давно немає.
Багато банки хочуть придбати нові круті системи, щоб замінити старі, а всі їх програмісти в один голос заявляють: «це не спрацює, нашого монстра не можна нічим замінити».
Частково, причина величезного розміру їх систем в тому, що вони спочатку допустили помилку і почали підлаштовувати свою систему під інші системи. Хороший приклад: ми створюємо RESTful-сервіси, в яких програми, яким потрібно отримати від нас дані, підлаштовують свої системи під нашу. У деяких банках все не так, і вони посилають дані інших систем, наприклад, податковим службам, а податкові служби можуть у будь-який момент оновити свої системи, які, в свою чергу, зламають ті, що банки використовують для відправки даних.
Банківські системи також надзвичайно просунуті. Особистий банківський рахунок сильно відрізняється від корпоративного банківського рахунку. В доповнення існує як мінімум 50 різних видів банківських рахунків для кожного з типів. А у випадку з Nordea, є ще й шведські урядові рахунки, які відрізняються від особистих і корпоративних. Думаю, що існують фінські урядові рахунку і, можливо, частина датських, які теж чимось відрізняються.
висновок
Буде дуже цікаво послухати, що банк Nordea та інші банки збираються робити в найближчі роки, і які нові технології вони збираються реалізовувати.
Q&A
Чому ти вирішила програмувати на мэйнфрейме IBM на COBOL?
— Я завжди хотіла «працювати з комп'ютерами, але не шукала цю конкретну роботу. Я побачила оголошення в газеті, подала резюме і отримала роботу. Правда, на той момент у мене вже було трохи досвіду в сфері комп'ютерних систем.
Що тебе найбільше шокувало?
— Мій колега якось забув додати крапку в кінці інструкції для програмного модуля в самої важливої частини нашої системи, яку ми називаємо «касою». Вона відповідає за обробку всіх грошей. В результаті на 16 годин зупинилася робота всього банку, виключно з модуля, який продовжував виконуватися, хоча повинен був зупинитися після тій інструкції. Це буквально повісило нашу систему, влаштувавши, можна сказати, DoS-атаку самої себе.
Як ти думаєш, яке майбутнє чекає банки, що працюють в тій же інфраструктурі, як Nordea?
— Більшість банків визнало, що потрібно замінити старі мейнфрейми на більш сучасні. Nordea купив нову систему, якій обіцяв замінити поточну протягом 4-х років, але банк обслуговує кілька країн, і в реальності 4 роки піде тільки на одну країну, так що в цілому — 16 років.
Банки і фінансові системи, які не зрозуміли цього, опиняться в дуже складній ситуації. Хоча мені досі здається, що ми будемо використовувати інфраструктуру IBM.
З якими проблемами тобі довелося зіткнутися як жінці-програмісту, яка почала працювати в 90-х?
— Абсолютно ніяких проблем не було. В моєму колективі є кілька жінок, а чоловіків більше. Мене це не особливо турбує.
Ти працюєш над одним модулем і, можливо, над одній кодовій базою більше 20 років. Це взагалі набридає?
— Так, безумовно, як і в інших сферах діяльності. Але за час роботи тут я створила безліч абсолютно нових систем з різним фінансовим напрямками, і це завжди було цікаво. На жаль, з цього моменту ми вже ніколи не створимо нічого нового, тільки будемо підтримувати поточне і чекати нову систему, яку купили для заміни.
Наскільки страшно писати код для банку?
— Дуже страшно, особливо, коли ми робимо зміни на головному сервері по неділях. Коли ми щось змінюємо, великі блоки системи потрібно переводити в оффлайн. Один з цих блоків — вся IMS. У цей проміжок часу може трапитися що завгодно, але у нас дуже надійна тестова система, так що, як правило, все проходить без проблем.
Ти коли-небудь допускала серйозні помилки в роботі?
— Безумовно, одну досить серйозну помилку я зробила ще в 1997 році, коли мій молодший син (це я, автор) тільки пішов в дитячий сад і скінчився мій декретну відпустку. У нас є накопичувальна пенсійна система. Цей тип банківських рахунків в той час був закритим, а за законом не можна було знімати гроші з цього рахунку поки не виповниться 55 років. Оскільки рахунки не були закритими, при наявності номера банківського рахунку гроші можна було знімати. Тому рішення було простим — не давати клієнтам номери їх банківських рахунків.
Я примудрилася зганьбитися і змінила модуль, який став додавати номер рахунку в лист, отсылаемое клієнту поштою. Клієнти почали знімати гроші (з яких ще не списали податки!) зі своїх пенсійних рахунків раніше, ніж їм належало за законом.
Це спричинило за собою величезне внутрішнє розслідування. Втрутився шведський уряд, нас атакували фінансова інспекція та ЗМІ. Це все — я.
Яка в тебе робоча атмосфера?
— Ми недавно переїхали в більш «модне» місце. Раніше у нас були особисті столи, а тепер вибирай будь-яке доступне місце» — відкритий простір. Мені це зовсім не подобається.
(Переклад Наталії Басс)
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.