Привет, ребята, я Приянш Мехта, студент предпоследнего курса, энтузиаст открытого исходного кода. У меня есть склонность быстро скучать, и именно поэтому это путешествие LFX'23 стало не чем иным, как невероятным приключением для меня как ученика проекта Open Mainframe.

Хотя я начинал как новичок, я очень много узнал о Zowe, мейнфреймах и работе с языками низкого уровня. Этот путь был непростым, но под руководством нашего наставника Леонида и поддержки моего коллеги Сидхарта мы добились значительного прогресса.

Понимание Zowe и моей роли

Мое путешествие началось с простого вопроса: что такое Zowe и почему это важно? Меня заинтересовало то, как Zowe использовала веб-технологии для создания среды, похожей на рабочий стол, которая легко подключает вас к удаленной системе мэйнфреймов. Разве это не увлекательно?

Когда я впервые отправился в это путешествие, я, как и любой новичок, тоже был незнаком с концепцией Zowe. Проще говоря, Zowe — это программное обеспечение с открытым исходным кодом, которое упрощает взаимодействие с обычными мэйнфреймами системами, делая их более доступными для разработки и эксплуатации.

Теперь вам может быть интересно, что же такое мэйнфрейм? Что ж, это надежный крупномасштабный компьютер, используемый в основном крупными организациями для обработки огромных объемов данных. Чтобы сделать работу с мэйнфреймами более эффективной, Zowe и другие поставщики разработали множество плагинов и приложений. Однако в этой головоломке недостает одного звена — нет централизованного центра для установки и управления этими плагинами.

Вот тут-то и пригодится наш проект… Цель нашего проекта — создать App Store, который упростит установку этих разнообразных плагинов с помощью одного приложения. Без этого разработчикам пришлось бы искать каждое приложение индивидуально, а это трудоемкий и трудоемкий процесс.

Поездка на американских горках

С момента начала наставничества и до конца его путешествие никогда не было чем-то меньшим, чем поездка на американских горках.

2 июня 2023 года полная версия z/OS была мне немного незнакома, я был парнем, работающим на C и Angular, с опытом написания серверов и все такое. Первая неделя была предназначена только для понимания всего о проекте, Z/OS, Zowe, различных плагинах, Dataservices, Iframe, ZSS, ZLUX, AppServers, NodeServer, ZSS Servers и многом другом.

Это может показаться устрашающим списком, и поверьте мне, так оно и было. Я не волшебник; Мне пришлось столкнуться с изрядной долей трудностей, чтобы понять эти новые концепции. Но мне повезло, что меня окружала замечательная группа, которая сделала процесс обучения намного более гладким. Наш наставник Леонид и мой товарищ Сидхарт оказали нам неоценимую помощь. Леонид дал нам непоколебимую мотивацию, а Сидхарт был нашим важным сотрудником.

Имея немного больше ясности в уме, мы начали разрабатывать высокоуровневый дизайн нашего проекта, тщательно учитывая функциональные требования. Вооружившись этим высокоуровневым проектом, мы были готовы работать над системой мэйнфрейма.

Недостающая часть головоломки

Сначала мы попробовали протестировать пробную версию, предоставленную IBM. Однако возобновлять судебное разбирательство каждые три дня стало весьма затруднительно. Благодаря неустанным усилиям Леонида мы в конечном итоге получили доступ к системе мейнфреймов. Огромное спасибо Рэндалу за то, что он сделал это возможным и предоставил нам платформу, необходимую для тестирования и доработки нашего проекта.

Хотя Сидхарт, будучи мастером React, сыграл важную роль в разработке внешнего интерфейса, настала моя очередь погрузиться в внутреннюю часть, чтобы выяснить, как установить эти приложения на мэйнфрейм.

Неожиданное открытие: сервер на языке C

Как человек, который больше склоняется к бэкэнд-разработке, я был заинтригован. Что меня удивило, так это то, что весь сервер Zowe System Services (ZSS) был написан на Metal C. В мире, полном фреймворков, упрощающих разработку на стороне сервера, сервер ZSS открыл мне тонкости, которые происходят за кулисами.

Задачи, которые я раньше выполнял одной строкой кода, теперь выявили сложность, скрытую в серверной части. Даже отправка простого ответа требовала создания структуры JSON и написания функций, определяющих, как будет выполняться операция.

Хотя это было непростое начало, с некоторыми рекомендациями и неделей целенаправленного обучения мне удалось написать полную службу данных на C с использованием библиотек Zowe-Common-C. Эти библиотеки были неоценимы и сделали задачу выполнимой.

Этап тестирования

Когда часть кодирования была завершена, пришло время тестирования. Однако перед нами стояла уникальная задача. Поскольку код был написан на Metal C и опирался на библиотеки Zowe-Common-C, его нельзя было скомпилировать в наших локальных системах.

Мы подумали: нет проблем, мы можем скомпилировать его на мэйнфрейме Рэндала и проверить результат. Но было препятствие — для компиляции нам нужны были библиотеки XLClang, а в системе был только XLC. Это всего лишь компиляторы, но они имели значение.

Не имея возможности скомпилировать код самостоятельно, мы обратились за поддержкой к сообществу мейнфреймов. Большое спасибо Рэндалу, Франсу, Россу и сообществу, которые помогли нам устранить проблему. Наконец, я составил PR для службы данных, и они провели тщательное тестирование, предоставив отзывы, которые помогли усовершенствовать код. Это оказалось отличным опытом обучения во время слепого кодирования и ручного тестирования.

Несколько заключительных слов :)

Оглядываясь назад, я не могу не испытывать благодарности за возможность работать над таким сложным проектом с замечательными людьми из сообщества Open Mainframe. Мы начали с неопределенности, но теперь думаем о том, как еще улучшить наш проект и вывести его на новые высоты.

Завершая эту главу своего путешествия, я хочу поблагодарить Леонида и Сидхарта за то, что они сделали его таким интересным и полезным. Лучшие вещи в жизни часто случаются неожиданно, и этот опыт наставничества был одним из лучших, что случилось со мной. Я с нетерпением жду продолжения моего пути к открытому исходному коду и изучения новых возможностей, которые встречаются на моем пути.

Помните, иногда «Лучшие вещи случаются неожиданно…»