Снимая наличные в банкомате или расплачиваясь картой в магазине, мы даже не задумываемся о том, какие технологии работают за кулисами. Между тем, язык программирования, созданный еще в 1959 году, продолжает обрабатывать наши финансовые операции. Я погружусь в мир COBOL и разберусь, почему банки не спешат расставаться с этим наследием эпохи холодной войны.
История языка, который пережил все прогнозы своей смерти
COBOL (Common Business-Oriented Language) появился в конце пятидесятых по инициативе Министерства обороны США. Консорциум CODASYL, в который вошли правительственные организации и представители бизнеса, сформировался в 1959 году, а первая версия языка увидела свет уже в 1960-м. В разработке принимала участие Грейс Хоппер, чей предыдущий язык FLOW-MATIC послужил фундаментом для нового решения.
Задача стояла амбициозная: создать универсальный инструмент для бизнес-вычислений, который мог бы работать на оборудовании разных производителей. Синтаксис COBOL намеренно создавался похожим на естественный английский язык, чтобы даже непрограммисты могли читать и понимать код. Такой подход в эпоху, когда программирование было уделом избранных, казался революционным. К семидесятым годам COBOL стал самым используемым языком в мире.
И вот парадокс: более шестидесяти лет спустя этот "устаревший" язык продолжает держать на себе финансовую систему планеты. По последним данным, COBOL обрабатывает около 3 триллионов долларов ежедневных транзакций по всему миру. Каждый раз, когда вы снимаете деньги, система обращается к коду, написанному десятилетия назад. 95% всех операций в банкоматах и 80% транзакций по кредитным картам проходят через COBOL-системы.
Транзакционная мощь, которую сложно воспроизвести
Когда я начал разбираться в технических особенностях COBOL в банковских системах, меня поразила элегантность архитектуры. COBOL-программы работают на мэйнфреймах IBM, чаще всего под управлением операционной системы z/OS, интегрируясь с транзакционными системами вроде CICS (Customer Information Control System).
CICS появился еще в 1968 году как бесплатная система онлайн-обработки для коммунальных компаний. Сегодня CICS обрабатывает более 1,1 миллиона транзакций в секунду, что эквивалентно 100 миллиардам транзакций в день. Система работает в более чем 90% компаний из списка Fortune 500, питая банкоматы, терминалы и веб-интерфейсы по всему миру.
Ключевое преимущество такой связки заключается в строгих гарантиях атомарности операций. Если транзакция по переводу средств начата, она либо полностью завершится, либо система откатится к исходному состоянию. Никаких половинчатых решений, никаких зависших операций. Механизмы журналирования, блокировки и проверки целостности работают на аппаратном уровне мэйнфрейма, обеспечивая надежность даже при обработке колоссальных объемов информации.
В банковской среде существуют две основные категории обработки: пакетная (batch) и онлайн-транзакции (OLTP). Пакетная обработка выполняется ночью, когда система массово обрабатывает данные, генерирует отчеты, рассчитывает проценты. OLTP обслуживает онлайн-транзакции в многопользовательском режиме с высоким уровнем параллелизма и быстрым откликом. COBOL показывает впечатляющую производительность в обоих сценариях.
Для критически важных банковских систем характерны требования к согласованности данных, точности расчетов и устойчивости к отказам. COBOL поддерживает высокоточные вычисления с фиксированной точкой, что критично для финансовых операций. В отличие от языков с плавающей точкой, где возможны ошибки округления, COBOL гарантирует абсолютную точность денежных расчетов. Когда речь идет о миллионах транзакций ежедневно, даже ошибка в доли цента может привести к катастрофическим последствиям.
Иерархия данных как философия надежности
Структура данных в COBOL организована иерархически через систему уровней в разделе DATA DIVISION. Уровень 01 обозначает верхний уровень записи, а уровни 05, 10 и далее представляют вложенные элементы. Такая организация естественным образом отражает реальные бизнес-сущности: клиент содержит счета, счет содержит транзакции, транзакция содержит детали операции.
Типичная запись клиента в банковской системе может выглядеть так:
01 CUSTOMER-RECORD.
05 CUSTOMER-ID PIC 9(10).
05 PERSONAL-INFO.
10 FIRST-NAME PIC X(20).
10 LAST-NAME PIC X(20).
05 ACCOUNT-LIST OCCURS 5 TIMES.
10 ACCOUNT-NUMBER PIC 9(12).
10 BALANCE PIC S9(9)V99.
10 TRANSACTION-HISTORY.
15 TRANSACTION-ID PIC X(20).
15 AMOUNT PIC S9(7)V99.
15 DATE PIC X(10).
Эта древовидная структура идеально подходит для банковских систем. Когда нужно найти все счета клиента или провести массовый расчет процентов, иерархическая модель показывает впечатляющую производительность. Она не требует сложных соединений таблиц (join), которые становятся узким горлом при больших объемах данных.
Копибуки (copybook) в COBOL представляют собой переиспользуемые определения структур данных. Одна и та же схема применяется по всему проекту, обеспечивая единообразие и упрощая валидацию. Это особенно важно для финансовых систем, где любое несоответствие форматов может привести к потере данных или неверным расчетам.
Иерархическая база данных IMS (Information Management System), созданная IBM совместно с Rockwell International в 1966 году для отслеживания инвентаря программы "Аполлон", стала первой промышленной СУБД в мире. После высадки человека на Луну IMS перешла в банковский сектор и стала предпочтительным транзакционным процессором для крупнейших клиентов IBM.
IMS организует данные как дерево с корневым сегментом и вложенными дочерними сегментами. Эта модель с предопределенными путями доступа позволяет чрезвычайно быстро добраться до нужных сегментов. В банковских транзакциях, где важна минимальная задержка, иерархическая модель может превосходить реляционные базы данных с множественными join-операциями, особенно для приложений с миллиардами строк данных.
Цифры, которые объясняют доминирование
Статистика использования COBOL впечатляет. 43% всех банковских систем в США построены на этом языке. В мире существует около 220 миллиардов строк COBOL-кода в активном использовании, и ежегодно пишется еще 1,5 миллиарда новых строк. Системы на COBOL обрабатывают 70-80% всех мировых бизнес-транзакций.
Bank of New York Mellon в 2012 году обнаружил у себя 112 500 отдельных COBOL-программ, составляющих почти 350 миллионов строк кода. Это типичная картина для большинства крупных финансовых институтов. 90% компаний из списка Fortune 500 используют системы на COBOL.
Производительность CICS поражает: время отклика на запросы баланса счета составляет доли миллисекунды, система обеспечивает доступность 99,999%, способна обрабатывать миллионы одновременных операций и гарантирует целостность данных, критичную для финансовой точности.
Почему банки держатся за старый код
Первая и самая очевидная причина: надежность. Системы работают десятилетиями без критических сбоев. Когда речь идет о деньгах миллионов людей, стабильность важнее любых инноваций. Банк не может позволить себе экспериментировать с непроверенными технологиями на критически важной инфраструктуре. COBOL-системы обеспечивают время работы без сбоев, которое новым технологиям еще предстоит доказать.
Вторая причина: астрономическая стоимость миграции. Когда Commonwealth Bank of Australia заменял свою основную COBOL-платформу в 2012 году, процесс занял пять лет и обошелся в 749,9 миллионов долларов. И это успешный пример! Британский банк TSB в 2018 году был вынужден мигрировать с COBOL-системы из-за поглощения. Результат оказался катастрофическим: банк потерял 49,1 миллионов фунтов от финансового мошенничества во время сбоев систем, выплатил клиентам компенсации на 125 миллионов фунтов и потратил еще 122 миллиона на найм новых сотрудников для обработки 204 000 жалоб клиентов. Генеральный директор подал в отставку, а последствия устранялись два года.
Третья причина кроется в самой природе банковской бизнес-логики. За десятилетия работы в COBOL-программах накопились тысячи правил, исключений, специальных случаев. Эти знания часто плохо документированы и существуют только в коде. Переписать все это на современный язык, не потеряв ни одной детали, практически невозможно. Компании тратят в среднем 65 миллионов долларов ежегодно на поддержку своих систем, причем пятая часть этих средств уходит только на обслуживание.
Четвертая причина: безопасность. В отраслях, где защита данных критична, устойчивая архитектура COBOL обеспечивает строгую типизацию данных и обширные процессы валидации, снижая риск повреждения данных и нарушений безопасности. Система гарантирует атомарность и согласованность транзакций, защищая конфиденциальную информацию в критических системах. Безопасность мэйнфреймов непревзойденна, особенно в свете потенциальных киберугроз для новых платформ и приложений.
Пятая причина: масштабируемость. COBOL справляется с ростом данных без необходимости фундаментального редизайна. Системы, спроектированные для обработки миллионов транзакций, легко масштабируются до миллиардов. Мэйнфреймы добавляют мощность вертикально, и COBOL-приложения автоматически используют дополнительные ресурсы.
Кризис кадров и пути решения
Средний возраст COBOL-разработчика составляет от 45 до 55 лет, что означает скорое их выбывие из рабочей силы. В США насчитывается всего около 24 000 программистов COBOL. Многие из тех, кто знает COBOL, либо на пенсии, либо думают о ней, либо уже покинули этот мир. Стоимость услуг опытных специалистов достигает 100 долларов в час и выше.
Молодые программисты избегают COBOL как чумы. Причина проста: COBOL не особенно легко писать. Каждая строка обязательна, программа упадет, даже если пропущена точка в последней строке. Новые языки вроде Python, Java, Go гибкие, функциональные и востребованы, и они мало похожи на COBOL.
Проблема усугубилась когда штаты США столкнулись с огромным наплывом заявок на пособия по безработице, их устаревшие COBOL-системы не справились с нагрузкой. Губернатор Нью-Джерси даже обратился с призывом к опытным COBOL-программистам прийти на помощь устаревшим бэкенд-системам штата.
На рынке появились специализированные фирмы вроде COBOL Cowboys, основанной ветераном COBOL Биллом Хиншоу, который был вынужден выйти из отставки. Их девиз: "Not Our First Rodeo" ("Не наше первое родео"). "Молодняк" в этой компании, людям за пятьдесят. Они считают, что 90% бизнес-систем Fortune 500 работают на COBOL.
IBM за последние 12 лет обучила более 180 000 разработчиков через стипендиальные программы и другие тренинги. Это в среднем 15 000 человек в год. Около 75 школ в США все еще преподают COBOL, в основном это общественные колледжи и технические училища. С 2012 по 2014 год 68 000 студентов приняли участие в конкурсе IBM "Master the Mainframe".
Но этого недостаточно. Представьте: вы Python-программист, и вас попросили переписать 20 000 строк COBOL-кода для крупного банка. Вы будете переписывать транзакции, банковские записи, расчеты процентов. Любая ошибка может стоить миллионы долларов в строго регулируемой отрасли. И вы будете переписывать этот код без реального понимания того, что существующий код на самом деле делает. Захотите ли вы такую работу?
Гибридные стратегии и роль искусственного интеллекта
Индустрия адаптируется к новым реалиям. Вместо полной замены COBOL многие банки выбирают гибридный подход. Старое надежное ядро продолжает обрабатывать транзакции, а современные технологии обеспечивают пользовательский интерфейс и дополнительные сервисы.
IBM разработала инструмент watsonx, генеративный AI-ассистент для кода, который помогает преобразовывать старый COBOL-код в более современные языки вроде Java, экономя программистам бесчисленные часы переписывания. Однако, как отмечает вице-президент IBM Z Software Скайла Лумис, "это может быть 80 или 90% того, что им нужно, но все равно требуется пара изменений. Это улучшение производительности, а не замена разработчика".
Появляются решения для оборачивания COBOL-модулей в REST API, позволяя старым системам общаться с современным миром микросервисов. CICS теперь поддерживает Java 11, Jakarta Enterprise Edition 9.1, Eclipse MicroProfile 5 и может интегрироваться с облачными платформами. Последний стандарт языка COBOL 2023 включает улучшения для работы с современными системами.
Некоторые банки выбирают инкрементальный подход: постепенно выносят отдельные функции в микросервисы, сохраняя критичную логику в COBOL. Инструменты для анализа и документирования старого кода помогают понять зависимости и взаимодействия между компонентами перед началом модернизации.
Взгляд в будущее через призму прошлого
Парадокс COBOL в том, что его "устаревание" обсуждается уже несколько десятилетий, но язык продолжает жить и работать. Возможно, будущее не в полной замене COBOL, а в его эволюции. Язык не застыл в прошлом, он адаптируется, сохраняя свои сильные стороны.
Вопрос "если система не сломана, зачем ее чинить?" особенно актуален для банков. При том, что стоимость облачной инфраструктуры снижается, расходы на лицензирование мэйнфреймов и укомплектование персоналом растут, что вынуждает большинство компаний задуматься об изменениях. Но риски и масштаб задачи пугают.
COBOL это не просто язык программирования. Это свидетельство того, как правильно спроектированная система может служить десятилетиями, обрабатывая критически важные операции для миллиардов людей по всему миру. Иерархические структуры данных, транзакционная надежность, точность вычислений остаются актуальными независимо от модных трендов в технологиях.
Банковский сектор будет продолжать использовать COBOL еще долгие годы. Не потому что не может от него отказаться, а потому что пока нет достаточно веских причин это делать. Когда система обрабатывает 3 триллиона долларов ежедневно с временем безотказной работы 99,999%, вопрос замены становится не технологическим, а стратегическим и управленческим. Здесь нужно учитывать кадры, процессы, интеграции, данные, риски.
Возможно, в этом и заключается главный урок COBOL для всей индустрии разработки: иногда надежность и проверенность важнее новизны и модных фреймворков. Код, написанный полвека назад, продолжает держать на себе финансовую систему планеты. И это заставляет задуматься о том, какие из наших сегодняшних решений смогут прожить столь же долгую жизнь.