Как мейнфреймы не вымерли

Думаю, что у большинства читателей слово «мейнфрейм» вызывает ностальгию или чувство знакомого слова, значение которого не знают. Ещё в далёкие 90-ые предрекали конец мейнфреймов и уже тогда их называли динозаврами. Но что, если я скажу Вам, что мейнфреймы живы, развиваются и никуда не собираются уходить?

972aac306d9877251498b1b9528c8c80.jpg

Всем привет, я Саша … и я мейнфрейм (IBM, есть и другие) разработчик. Нет, я не пишу код на Cobol, а PL/I я в глаза не видел, зато в нашем продукте на z/OS мы используем Angular, C, C++, bash… ну это из того что знакомо всем, ещё у нас есть REXX и HLASM (High Level Assembler) как наследие прошлого. Да-да, у нас портирована Node.js под z/OS и много чего ещё, хотя ещё лет 5 назад «много чего ещё» не включало такие банальные вещи как Python или даже git.

Предлагаю развеять (или подтвердить) некоторые стереотипы про мейнфреймы и ещё хочу поделиться некоторыми интересными деталями. Берите расчёску для своей бороды и поехали…

Мейнфреймы старые и отжили прошлый век

Мейнфреймы действительно появились давно, но операционная система (последняя z/OS 2.5 2021 года) и железо z15 2019 года (уже анонсирован z16) всё ещё развиваются, используются и покупаются. Несмотря на то, что и операционная система, и железо новое они должны поддерживать всё, что работало и на предыдущих версиях… в предыдущие годы… в предыдущем веке. Так, например, адресация памяти у нас не 32 и 64 битная как у большинства устройств, что вы сейчас используете, а 24, 31 и 64 битная, потому что так шло развитие. Устройства хранения данных DASD всё ещё измеряются в треках и цилиндрах, хотя физически этого уже нет — сейчас это логическое разделение. Ленты уже практически не используются, хотя есть VTS (Virtual Tape Subsystem) которые эмулирует работу с лентами и доступ к ним.

В общем, обратная совместимость была реализована настолько хорошо, что каждый вспоминает истории о там как какая-нибудь Галина из какого-нибудь банка всё ещё пишет код на Cobol, Fortran, PL/I и что без неё всё рухнет.

С одной стороны, это круто, потому что код, написанный лет 30–40 назад, с большой вероятностью всё ещё работает (и как правило всё ещё используется и поддерживается), с другой стороны, это создаёт барьеры на разработку так, как и новое нужно поддерживать, и старое с постоянными проверки на версию компонентов, API и т.п. Таким образом, развитие отрасли в целом было замедленно.

Как можно работать в зелёном терминале?

Когда речь заходит о мейнфреймах все представляют зеленоватый экран с полосой «Command ==>» и кучей текста и на самом деле, вы правы и не правы одновременно.

4bc9b7c7cb9a6e24573b2a17be4a97b0.png

Этот зеленоватый экран называется эмулятор 3270, который предоставляет доступ к MVS через оболочку, например, ISPF… короче через эмулятор запускается некое подобие графической оболочки в терминале для доступа к сервисам и данных мейнфрейма (примерно так же как люди могут работать с Linux: через консоль или через GUI). Хоть GUI и выглядит консольно, он поддерживает нажатие мыши, кнопок на экране, выпадающие списки и другие вещи которыми вы пользуетесь каждый день во всех приложениях.

Но суть в том, что зеленоватый экран это всего лишь один из интерфейсов. Есть ещё USS (Unix Shell Subsystem) который выглядит как обычная урезанная Unix консоль, где у вас есть файлы и директории (на самом деле их нет, существуют только датасеты, а файлы и директории — просто данные в них … просто абстракция чтобы у бритых разработчиков не начали седеть волосы)

Есть доступ через Web интерфейс, например, open-source проект под названием Zowe. Основная идея была создать виртуальный рабочий стол (собственно проект изначально так и назывался: MVD — Mainframe Virtual Desktop) для работы с мейнфреймом, который не требовал бы установки никакого специфичного софта и не пугал бы молодых разработчиков.

В принципе, вместо операционной системы z/OS на LPAR (партицию) можно поставить z/Linux и скорее всего, если вы привыкли к Linux, вы не в первый день заметите что что-то не так.

Зачем нужны мейнфреймы если есть куча всего другого?

На самом деле, большинство компаний, использующих мейнфреймы используют их потому что так было ещё лет 30–40 назад и у них есть и инфраструктура, и кадры которые это всё поддерживают … плюс миграция с платформы на платформу удовольствие не из дешёвых, а самое главное что ЭТО ВСЁ ЕЩЁ РАБОТАЕТ.

Так или иначе, с каждым годом некоторые компании отказываются от мейнфреймов, а некоторые наоборот их покупают (ЗАЧЕМ?), поэтому в целом за последние лет 20 число компаний, использующих мейнфреймы, почти не изменилось. Зато большинство компаний выросли и, как следствие, увеличилось число данных, которые необходимо обрабатывать, хранить и продавать.

Как уже было упомянуто, некоторые компании приобретают мейнфреймы не имея их ранее и, субъективно, на это есть всего одна причина: они надёжны. Да-да, мейнфреймы надёжны и летящие в меня камни, помидоры и негативные комментарии не изменят этого факта. Вот в чём заключается надёжность:

  • Софтовая. Т.к. большая часть софта была написана давно, она уже изрядно проверена временем. С большой долей вероятности код работающий 10,20,30 лет проработает ещё.

  • Физическая. Мейнфремы изначально разрабатываются чтобы переживат

    ь различные природные катастрофы, или хотя бы минимизировать потери, связанные с ними. Большинству читателей, думаю, это трудно понять, т.к. такие вещи мы видели только по телевизору, когда его ещё смотрели, да и то в других странах где-то далёко.

  • Кибербезопасность. Скорее всего самый аргументный аргумент. Невзирая на тот факт, что большинство новшеств из «обычного» мира в мейнфреймы приходят с запозданием, и даже если будет существовать какая-нибудь уязвимость, ею просто будет трудно воспользоваться. Скорее всего, если я дам свой логин и пароль любому из читателей 99,(9)% из вас даже не смогут залогиниться в систему в первые пару минут.

Свой собственный мир

Если честно, есть безумное множество вещей в мире мейнфреймов, о которых я хотел бы рассказать, но превращать статью в пересказ книги «Principles of Operation» я не вижу смысла, поэтому ещё упомяну наиболее необычные вещи.

Пользователи мейнфреймов платят за процессорное время.

Да-да, вы купили СВОЙ мейнфрейм, купили продукт (или подписку на продукт), а потом ещё в конце месяца, вместе с выплатами зарплат сотрудникам, уплаты коммунальных платежей отстёгиваете IBM денежку за процессорное время … которое тратили продукты, за которые вы уже заплатили.

Возможно, именно поэтому высокоуровневые языки трудно приживаются в этом мире.

Более того, т.к. никто не хочет платить за процессорное время, появились разновидности «конфигурации» процессора (а точнее их аналога ядер), типо zAAP (для Java) или zIIP (для баз данных) — за которые пользователи уже не платят (или платят по более дешёвым тарифам). Причём вы ваше обычное «ядро» CP, например, можете поменять в zAAP если у вас много Java приложений, тем самым можно сэкономить пару тысяч долларов.

Датасеты наше всё

В мире мейнфреймов нет файлов и директорий, есть только датасеты.

Датасеты — есть всё. Т.е. единственный способ сохранить информацию на мейнфреймах это создать датасет и записать в него данные. Датасеты бывают разные и для разных целей.

Например, вы хотите сохранить текст «Hello world». Вы аллоцируете датасет, например, с фиксированной длинной в строке 80 и просто редактируя датасет, пишите в него всё что вам нужно. Но ведь фиксированная длинна в строке — не удобно, иногда может что-то не помещаться — тогда можно использовать датасет с переменной длинной строки. Вам нужны логически похожие вещи — вы можете аллоцировать датасет и создать в нём мемберы (будет выглядеть как директория с файлами, но нет — это просто один датасет). Хотите одновременно читать и писать данные? — всё можно, нужно использовать VSAM датасет и обращаться к нему через RLS (Record Level Sharing) — тогда вы сможете писать данные в одни блоки, а читать из других. И таких вещей тут не мало.

Что такое мейнфрейм?

Попробуйте объяснить, что такое «майнить биткоин» людям за 70, вот примерно так же я чувствую себя, когда пытаюсь объяснить что такое Мейнфрейм чуть больше чем всем. Я намерено не давал определение в начале статьи, потому что даже если сказать его — понятней людям не будет. Проще просто говорить, что мейнфрейм — это специфичный сервер … или большой компьютер.

ZZZzzz

В мире мейнфреймов почти всё или начинается, или имеет в себе букву Z: z/OS, z/Linux, z/Storage, Zowe, shopZ, IZSME, z16, modernize. На это есть 2 версии: правильная и моя.

Правильная: Z от Zero downtime … ещё в бородатые времена первых полётов в космос отказоустойчивость была очень важным показателем (будто сейчас Tier 4 дата центры рядом с мандаринами по одной цене стоят) и IBM решили заявить отказоустойчивость как один из ключевых показателей их систем. Собственно, и всё.

Моя: на самом деле буква Z звучит очень сексуально и добавляет +10 к надёжности и брутальности. Сравните: Кот vs zКот, Игорь vs Zигорь, Школа vs ШколаZ.

Заключение

Мейнфреймы живы, развиваются, но вряд ли догонят остальной мир в плане технологий (хотя рывок за последние лет 5 был большим … догонять всегда проще чем прокладывать дорогу). У них есть очевидные недостатки (цена, нераспространённые технологии) так и свои скрытые достоинства.

P.S. Это моя первая статья на Habr, поэтому щадить меня не нужно, мне нужно учиться. Статья скорее всего выглядит рвано с быстрыми сменами тем, но очень трудно рассказывать про мейнфреймы, не вдаваясь в детали и конкретику некоторых вещей. Попробуйте объяснить людям 80+, что такое интернет и как им заказать еду на дом с предоплатой по карте, опустив объяснения про мышь, клавиатуру, браузер, сайт и т.д.

© Habrahabr.ru