Этапы разработки большинства приложений в современных реалиях выглядят примерно одинаково, независимо от того, пишите ли вы прошивку для пульта от кондиционера или запускаете дрона на Марсе. Однако, проблемы, возникающие из-за особенностей платформы или приоритета конкретных приложений, очень разнообразны.
Я хочу поделиться с вами некоторыми особенностями, с которыми сталкиваются команды при разработке приложений для мейнфреймов.
Debug
Не знаю почему, но дебаг приложений на z/OS в 2021 происходит примерно так же как и лет 30 назад. Самый удобный/мощный дебагер который есть - это консольный XDC дебагер работающий на z/OS с доступом из ISPF панели. Он реально крутой, но вообще не user-friendly и его нельзя прикрутить к IDE, что заставляет большинство джунов использовать printf в первый год и избегать дебагер (но долго бегать не получится, рано или поздно придётся заглянуть в пасть льву).
Да, есть дебагер от IBM с собственной IDE, но лично моё мнение, что он подходит или для "Hello World!" проектов или для небольших карманных проектов.
Legacy код
Я не утверждаю, что другие платформы не сталкиваются с легаси, тут скорее даже проблема не в самом легаси коде, а в его возрасте: он может быть написан на старых языках программирования и с применением устаревших практик разработки. И в данном случаем ты даже не знаешь что хуже: разбирать код на HLASM (High Level Assembler) или пытаться понять код на C++, написанный с использованием большого числа глобальных переменных.
Т.е. код, который ты читаешь, может быть написан до публикации книги Clean Code (2008) ... да что уж там, даже до публикации Code Complete (1993).
Да и в целом найти человека, умеющего хотя бы читать HLASM или REXX, намного сложнее чем C, C++, PHP, Java разработчиков. Отсюда, кстати, вытекает следующая особенность.
Кадровый голод
Если у вас появляется свободная вакансия в команде, с большой долей вероятности, её место займёт человек, который о мейнфреймах слышал не более чем среднестатистический читатель этой статьи. Вам в любом случае нужно обучить человека тому, что человек будет слышать впервые в жизни: TSO, JCL, USS, ISPF, Datasets, JES, SDSF, SMP/E.
Как правило, первые полгода разработчик не будет приносить пользы, но на него будет требоваться время Техлида, Скрам-мастера, Менеджера и других членов команды.
Справедливости ради, хочу отметить, что т.к. все понимают, что учить нужно будет почти всех и происходить это будет часто, как правило, очень хорошо развиты системы тренинга, обучения, планов развития компетенций и т.п.
Частота релизов и Quality First
Все мы читали о том, что очень важно поставлять ценность кастомерам как можно быстрее, поэтому эффективные команды делают релизы очень часто. С другой стороны мейнфрейм продукты это Enterprise решения в котором качество играет одну из ключевых ролей.
Мы используем немного изменённый Scrum фреймворк в нашем процессе разработке и живём двухнедельными спринтами, в конце которых мы делаем релиз продукта с обязательным проходом всех юнит-тестов и полной регрессии. Звучит довольно стандартно, но у нас возникают следующие трудности:
Исторически мы можем поддерживать несколько версий продукта. Для нас это значит, что в конце спринта мы делаем релиз только для одной версии продукта. Как следствие, новые обновления для каждой версии выходят примерно раз в месяц. Также, по личным наблюдениям, мультиверсионность стоит нам примерно 20% времени команды - что очень много.
Даже с учётом ежемесячных обновлений, больше половины кастомеров обновляют продукты только если у них случилась проблема или пришло время ежегодного обновления (если так за год ничего критического не случилось). Из-за этого у нас бывают кастомерские проблемы, в которых решение было релизнуто год назад (клиенты на ещё более старой версии), и ты настаиваешь на установке самого свежего релиза, чтобы вновь не пытаться чинить то, что уже давно исправно работает.
Утечки общей памяти
Архитектурно z/OS имеет общую память, которая доступна для чтения/записи всем процессам. И исторически z/OS имеет 24, 31 и 64 битную адресацию, т.е. чисто теоретически память может утекать в мизерной 24-битной адресации, в уже нормальной 31-битной памяти или в бездонной 64-битной. Любое привилегированное приложение (Key 0, SUPER MODE) может аллоцировать память в общем пространстве.
Одним из примеров использования общей памяти может служить следующая ситуация: у нас есть продукт "A", который хочет получить данные о продукте "B", для этого "A" запрашивает общую память, кладёт туда код, который запустится в адресном пространстве продукта "B" (это называет schedule SRB - Service Request Block), пройдёт по нужным блокам памяти, заполнит нужную структуру и вернётся в "A" для дальнейшей обработки результатов и затем "A" очистит общую память.
Но что если "A" будет запрашивать общую память, скажем, каждые 15 минут, но чистить не будет? Размер общей памяти будет уменьшаться до тех пор, пока различные приложения не начнут падать (ABEND) из-за нехватки этой памяти. Фишка в том, что даже если убить "A" z/OS не вернёт неочищенную общую память (на то она общая, особенная и может быть использована только привилегированными приложениями). Т.к. этой памяти станет мало, придётся рестартовать LPAR, это процесс называется IPL.
Поэтому нам, как разработчикам, нужно быть очень внимательными с общей памятью и пытаться чистить её даже в случае ненормального (kill) завершения приложения.
Нестабильность системы
"В смысле мейнфреймы нестабильны?". Тут суть в том что конфигурация боевых мейнфреймов и наших девелоперских мейнфреймов - это совершенно разные подходы к отказоустойчивости и администрированию. Как разработчик, я могу отключать диски(DASD), менять каталоги, смотреть информацию по системе, менять приоритет процессов (джобов) и многое другое, что в реальной жизни даже не всем администраторам мейнфреймов позволено делать. Всё это нужно, чтобы разработчики больше времени тратили на разработку, а не на ожидание получения доступов и разрешений.
Например, кто-то отключил DASD на котором есть датасет, нужный для вашего джоба. Вы видите проблему и идёте разбираться что произошло, почему это произошло и кому писать в слак.
Или кто-то включил PRIMEPSA, которая не занулит всю запрашиваемую вашим приложением память, а, например, всё заполнит байтом 0xAA. Тем самым ваш продукт начинает падать с ABENDами в разных модулях потому, что проверки на NULL теперь пропускают то, что обычно было NULL.
Или кто-то стал делать нагрузочное тестирование на том же LPAR что и вы. В итоге у вашего приложения CPU голодание, и вам нужно переезжать на другой LPAR или другой мейнфрейм.
Всё это приводит к перезагрузке (IPL) LPARов раз в 1-2 недели, когда как на боевых мейнфреймах это происходит 1-2 раза в год.
На боевых мейнфреймах, если у вас нет на что-то прав, вы либо просите администратора что-то сделать для вас, либо запрашиваете новые права, которые не факт что вам дадут, а если дадут - могут попросить подписать новые документы, например, NDA.
Google не поможет
И Stack Overflow тоже. Очень часто сталкиваешься с тем, что при гуглении вопроса или ключевого слова находится всего несколько результатов поискового запроса. Более того, это могут быть форумы на которых человек задавал тот же самый вопрос что и вы ... лет 10 назад ... на него так никто и не ответил. Такое происходит не всегда, но чаще приходится скачивать и читать документации чтобы самому ответить на собственный вопрос.
Особенно это заметно на контрасте с поисковым запросами по автоматизации, питону и т.п. где это уже пыталось сделать сотню людей, можно узнать что-то новое и обсудить с командой какой вариант лучше.
Поэтому, у нас есть свои собственные wiki, где ответ найти намного проще, чем в интернете. В любом случае, всегда найдётся ответ на свой вопрос или человек, который тебе поможет.
Кастомеры
Как и все, мы пишем продукты, которые используются кем-то, в нашем случае это кастомерами по всему миру. Основная цель наших продуктов - решать бизнес-процессы кастомеров, мониторить системы, упрощать им жизнь, выявлять потенциальные проблемы на ранних стадиях и т.д. Фишка в том, что разные бизнесы имеют свои особенности, в них работают люди с разным мышлением и они пытаются решать разные проблемы с помощью наших продуктов. Как следствие, в продуктах существует множество как задокументированных, так и незадокументирумых фич.
Таким образом, у нас есть кастомеры, которые хотят видеть наш продукт, как конструктор, и тонко настраивать под себя, другие хотят больше встроенных решений чтобы то, что они считают важным для себя, работало из коробки и им ничего не нужно было бы настраивать.
Например, один из бразильских кастомеров имеет много баз данных Adabas на z/OS и им критически было важно мониторить информацию о том, как эти базы используют хранилище данных. Собственно, нам пришлось это реализовывать в наш продукт за короткий промежуток времени. В итоге это фича доступна всем, хотя ценность приносит только малому числу кастомеров.
Азиатские кастомеры, как ABC или CCB, очень дотошны, они пытаются разобраться во всём. Если они найдут незначительный баг, то будут требовать объяснения о причинах этого бага и того, как он был пофикшен. В итоге разработчик может тратить несколько часов на объяснения техподержке, менеджеру, кастомеру вместо выполнения реальной работы.
Есть принципиальные кастомеры, которым нужно, чтобы всё было готово вчера, есть понимающие, с которыми можно обсудить примерные сроки, или которым можно подготовить тест-фикс для проверки решения (особенно если на своих системах проблема не воспроизводится).
Заключение
Нельзя сказать, что процесс разработки приложений на мейнфреймах радикально отличается от того, с чем сталкиваются большинство разработчиков в мире, но всё же есть свои особенности, которые не такие уж уникальные и могут пересекаться с различными отраслями.
В целом, если зайти в офис (после того как их откроют, разумеется) к мейнфрейм разработчикам, вы не увидите сильных различий: тот же scrum, те же сопутствующие митинги, всем знакомые IDE, автоматизация на том же Python, какие-то web UI, те же тикеты в Jira и много чего ещё узнаваемого. Думаю, глобализация и желание всех компаний работать эффективно делает всё везде похожим.
splatt
Как и с другими статьями о мейнфреймах, основной вопрос который остался после прочтения — "зачем"?
Ну то есть реально интересно, какие задачи сегодня все еще требуют разработки на мейнфреймах, и не могут быть решены в облаке (более эффективно)? Понимаю, что статья не об этом, но мне правда любопытно.
alexagoltsov Автор
Часть компаний не может уйти с мейнфреймов, потому что любая миграция с одной платформы на другую — дорогое удовольствие и затратное по времени. Просто представьте вам нужно поменять железо, уволить/переобучить старых специалистов, нанять новых и т.п.
Часть компаний патылись и у них не вышло (списка историй нет, но, например, помню, в каком-то штате в США отделение полиции по выдаче водительских прав пытались уйти с мейнфреймов, в итоге имели очень много проблем с этим и вернулись обратно).
Т.к. всё ещё есть крупные компании, использующие мейнфреймы, существуют и ПО мониторинга (сети, хранилища данных, базы данных, самой z/OS и т.п.). Это ПО тоже разрабытывается.
apapacy
Немного напоминает на переход с ЕС на персоналки. Тянули пока можно было найти специалистов и запчасти для поддержания в состоянии. Потом наконец дошли что ни того ни другого. При переезде оказалось что процентов 90 задач н кому не нужны и табуляграммы использовались исключительно в хозяйственных целях.
splatt
Легаси код поддерживают в основном по экономическим причинам. Но экономика легаси кода на php или питоне мне понятна. Компаниям дешевле нанять студентов на entry level зарплату, чем переписывать.
Но с теми проблемами которые вы описали в статье (в том числе нехватки кадров), неужели выгоднее находить программистов мейнфреймов, чем переучивать или нанять новых итд?
Тот же пример с водительскими правами. Я, конечно, не в курсе всех деталей, но мне почему то кажется, что это симптом плохого управления, а не конкретных технических решений. Зачем вообще локальному DMV свои кастомные решения? Почему нельзя воспользоваться готовыми? А если нельзя, то я уверен, что талантливая команда ребят с горящими глазами, и опытным лидом, может написать систему управления выдачи водительских прав на современном стэке, за несколько месяцев. Зачем им свои программисты, почему нельзя нанять подрядчика? Да и какие там задачи требуют вычислений на мейнфреймах? Это же же обычный CRUD.
anonymous
Нехватка кадров для мейнфреймов — проблема частично надуманная.
Там где мейнфреймы исторически более распространены: США, отдельные страны Европы — специалистов больше. В России — постепенно становится меньше, ибо и самих мейнфреймов, особенно современных, очень мало.
Да и новых специалистов обучить — не космически сложная задача. Выпускник после ИТ-вуза, который ни разу не сталкивался с платформой вполне осваивается за полгода-год.
Насчет миграции. Не зная конкретной задачи и всех ее взаимосвязей очень сложно оценить затратность миграции на другую платформу и другой стек софта. И совсем не факт, что после смены платформы стоимость эксплуатации останется такой же или снизится.
Насколько я знаю, многие конечные пользователи (компании) вполне довольны мейнфреймами и их возможностями и не собираются менять платформу в обозримой перспективе.
Да, любой бизнес считает стоимость владения и пытается ее снизить. Миграция на другой стек/платформу — один из вариантов.
Лично видел несколько проектов, когда руководству компании «заносили» идею что на другой платформе/стеке все станет гораздо быстрее/эффективнее/дешевле. И ни один раз видел что после выстраивания аналогичного решения на другой платформе оно не давало достаточных преимуществ и принималось решение остаться на мейнфрейме.
vkni
Хотелось бы дополнить. У нас рыночная экономика, поэтому за исключением каких-то совершенно космически редких случаев, вопрос всего лишь в цене. То есть, всегда к «не хватает специалистов» нужно приписывать «за такие-то деньги».
Так ведь очевидно, что можно же нанять людей напрямую из IBM. Правда платить им придётся чудовищно дорого, но специалисты там всегда есть.
Jef239
Нехватка кадров — она для задач, а не для компьютеров. Если у вас задача требует мейнфрейма (или пары тысяч машин в кластере), специалиста вы будете искать долго. И выращивать — тоже.
rezdm
На моей памяти, мне приходили письма от хедхантеров между 2009-2014годах, и, судя по приватной беседе, в 2019-ом, что-то шевелилось, но человек был из другого проекта; свежее информации нет. Один немаленький банк всё пытался переписать процессинговую софтину с мейнфреймов на что-то современное. Собственно преблемы (было?) две.
— управленческая (смена проджект менеджеров, смены приоритетов, т.п.)
— сложность проекта: как это переписать так, чтобы и старое жило, и на новое переключить, и перформанс старого вцелом ок;
Я, когда собеседовался туда в эээ… 2013 (или '14), и разговаривал с одним из ПМов, было грустно — проект переписывания сложный, система живёт и работает, писать много.
(Могу поинтересоваться, как там сейчас, если интересует).
anonymous
Облако — не панацея от всех бед.
Везде есть своя стоимость внедрения и сопровождения и под конкретную задачу нужно много разных факторов учитывать.
Опять, же современный мейнфрейм вполне себе интегрируется в облако.
Ну и большой вопрос, а что именно значит «эффективнее»?
Если мейнфрейм(ы) в компании уже есть, есть коллектив который сопровождает существующее ПО, есть своя команда или партнеры, которые разрабатывают что-то новое (или модернизируют существующее ПО), то может запросто оказаться, что разработать или внедрить что-то новое, что будет работать «рядом» на той же платформе, гораздо более эффективно (по времени реализации, по времени внедрения, по стоимости сопровождения), чем пытаться это сделать на другой платформе.
Кроме того, автор статьи описывает проблемы, с которыми сталкивается далеко не каждый разработчик ПО для ОС z/OS. Работа в нулевом ключе, это по сути работа с правами «ядра» системы. Это весьма привилегированный режим, который дает доступ к памяти других процессов/приложений. Обычному прикладному ПО, которое занимается обработкой данных или обслуживанием веб-запросов это не требуется.
Соответственно и «тяжелая артиллерия» для специфичной отладки требуется тоже далеко не всегда и не всем. Для той-же Java например, инструментарий отладки/трассировки тот же самый что и для других платформ.
spqr_voldi
Очевидные банки, например.
CrzyDocTI
Затем что linux и x86 платформа не справится с потоком данных. К примеру сейчас на рынке нет realtime менеджера сообщений способного пережевать то что проходит через наш мэйнфрейм
tmin10
Кластер кафки?
CrzyDocTI
кафка не реалтайм и если не править настройки — может потерять сообщение(а оно может ой как много стоить), а если править — кластер кафки по цене будет как весь мейнфрейм на котором еще и бд работает. еще пожалуй стоит упомянуть что кафка это не менеджер, а очередь сообщений — в брокера превращается легко, а в менеджера очень не просто
tmin10
По умолчанию там семантика at-least-once, и если не пожадничать с репликацией, то вроде бы не должна терять сообщения.
Насчёт реалтайм тут больше вопрос к консьюмерам, чтобы успевали всё вычитывать и процессить, скорее.
CrzyDocTI
«вроде бы не должна», когда вопрос стоит о потерях сопоставимых с твоей зарплатой за полжизни — очень неуверенная формулировка. кафка по умолчанию не синхронизирует запись на диск, сразу помечает как принятое
«Насчёт реалтайм тут больше вопрос к консьюмерам», нет, если сделать из кафки менеджера сообщений — вопросы будут именно к ней. вы видимо не понимаете различий:
очередь — передает в том же порядке как и поступило, конечные точки неизменны
брокер — может менять конечные точки сообщений
менеджер — способен менять порядок, тело сообщений, конечные точки
основы можете прочесть тут: www.oreilly.com/library/view/understanding-message-brokers/9781492049296
для более глубокого понимания google и comparison message broker
Yaschik
Ну как уже отметили раньше — достаточно сложно уйти с этой инфраструктуры.
Вот причины:
Многие компании уже влили достаточно денег на этот мейнфреймовый ад. (Речь идёт не о десятках тысяч УЕ, и даже не о сотнях) — а все благодаря (практически) безграничному вертикальному масштабированию.
Носители — отдельная проблема. Тейпы используются активно, а перегон архива — это не просто загнать данные на флешку.
Ходят ещё мнение среди мейнфрейм-адептов что мейнфрейм предоставляет недостижимый уровень безопасности, что достаточно часто является правдой, но с ньюансом — когда есть непопулярная архитектура — сторонних адептов в ней будет не так много.
А ещё система которая работает 30 лет, конфиги трогались 25 лет назад последний раз по мануалу 40-летней давности — это прекрасно (нет). Страшно трогать.
Но, минусы… Про них нужен отдельный пост. Лицензирование, интерфейсы, особенности разработки, процессы и кастомер-сервис.
Имхо. Это просто айти в общем понимании, только наоборот.
CrzyDocTI
Хочу добавить — безопасность совмещенная уровнем производительности
anonymous
Я считаю большим плюсом менфреймов и z/OS то, что код, написанный и скомпилированный десятки лет назад можно исполнять на современных мейнфреймах и современном уровне ОС/ПО. Для бизнеса это вполне себе выгода, что софт не придется «внезапно» переписывать или перекомпилировать при апгрейде железа/ОС.
Если система работает 30 лет и почти не требует обслуживания — с точки зрения бизнеса это прекрасно. Если даже за это время сменилось поколение специалистов, но есть документация, по которой вновь пришедшие специалисты могут конфигурацию починить или поменять — тоже отлично.
А вот если знания о том как работает система успешно «потеряны» — то это вопрос к тому же бизнесу и менеджменту и тут сама платформа не принципиальна. Любое «давно и стабильно работающее» решение можно превратить в черный ящик который «страшно трогать» если не позаботиться о сохранности документации и хранении/передаче знаний о системе/решении. Это один из рисков, который бизнес должен учитывать.
Почему все таки «мейнфреймовый ад»?
Если речь про операционную систему (z/OS) — там действительно очень много особенностей, которые изначально непонятны при наличии Windows/Linux/Unix бекграунда.
Но, если принять «правила игры» в архитектуре системы, она становится вполне понятной, предсказуемой и управляемой.
Некоторые особенности накоплены исторически, сейчас выглядят архаично, но как раз обеспечивают долговременную совместимость, что востребовано у клиентов.
Уже настроенная система/комплекс как правило работает стабильно и не требует существенных усилий по поддержке. Как отмечено в статье, можно годами не ставить апдейты и спокойно эксплуатировать то что есть.
Yaschik
Имею мнение, что дело тут далеко не в мейнфрейме. Любая система настроенная правильным образом позволит наращивать производительность и при этом не требовать обслуживания.
vlsinitsyn
«Я считаю большим плюсом менфреймов и z/OS то, что код, написанный и скомпилированный десятки лет назад можно исполнять на современных мейнфреймах и современном уровне ОС/ПО».
Это как бы половина истории, мед.
Однако, полуправда — это не правда, ведь так?
Код написанный и откомпилированный хх лет может и работает. Но написан он на древнем синтаксисе языков с использованием приемов и практик, которые сегодня не просто устарели — многие просто запрещены для использования в новых программах.
В результате, поддержка такого кода становится малоприятным и бесперспективным занятием. В том смысле, что навыки полученные на такой работе не получиться применить в чем то новом, потому что теперь подобные вещи делаются по-другому и, зачастую, гораздо проще. Рекомендовать такую работу молодым я бы не стал. Те кто ожидают пенсии — пусть занимаются. Все равно этот код по-хорошему надо переписывать.
Ну, и, конечно, гладко все миграции проходят только на бумаге и в рекламных проспектах. В реальности, можно просто побраузить список ошибок в RETAIN на эту тему чтобы увидеть что далеко не все так гладко.
Кроме того, надо посмотреть какими силами обеспечивается эта совместимость. А цена за это — жесткий вендор лок по всему начиная от железа и заканчивая компиляторами. Потому и очень ограниченный список софта. Если уж так сравнивать, то программы написанные под MS DOS можно запускать на Win10 :-).
anonymous
Эмм, но это же «перпендикулярно».
Совместимость — это хорошо. Позволяет меньше «бояться» апгрейдов ОС и прикладного ПО. Но, никто не мешает параллельно, при необходимости, планово обновлять и заменять прикладной код, если он чему-то не соответсвует.
Миграции прикладного ПО со старых версий z/OS и старого железа периодически выполнял своими руками или участвовал в команде, которая этим занималась.
Да, мир не идеален и проблемы бывают, но обычно так или иначе решаются. Специальными опциями операционной системы или прикладного ПО, небольшими ухищрениями или обращением в поддержку IBM, если это «баг».
В современную версию z/OS портировано много опенсорсного ПО и ЯП (Java, Python, Perl и т.д.), даже докер-контейнеры (внутри которых линукс) можно внутри z/OS запускать.
vlsinitsyn
«В современную версию z/OS портировано много опенсорсного ПО и ЯП (Java, Python, Perl и т.д.), даже докер-контейнеры (внутри которых линукс) можно внутри z/OS запускать.»
И смысл запускать докер контейнеры в специфической архитектуре на супердорогом железе, если это можно делать гораздо проще и сильно дешевле в Linux/AMD64/ARM/Power?
anonymous
Потому что это позволяет запускать очень много «docker-based» ПО и решений без прямого их портирования в z/OS и при этом «рядом» с нативными z/OS приложениями. Ну как банальный пример — это может быть веб-приложение на любом современном фреймворке, которое будет «ходить» за данными к z/OS приложениям (DB2, MQ, CICS, IMS и т.д.) по очень короткому маршруту, т.е. с минимальными задержками.
При этом коллектив, сопровождающий приложения внутри докера, будет работать с привычными для них кросс-платформенными инструментами, возможно даже не зная того, что докер-инстанс работает как один из процессов внутри z/OS.
Т.е. это опять же про совместимость, оптимизацию и совместное существование того, что уже работает на платформе System z, с новыми/популярными технологиями и методиками.
vlsinitsyn
Ну т.е. как костыль для дедушки.
Покупать Z чтобы запускать на нем только контейнеры смысла нет.
То же относится к приложениям на Java, Python и т.д.
anonymous
Можно конечно и так это воспринимать.
Я не знаю, обосновано ли сейчас покупать новый мейнфрейм под контейнеры. Это нужно смотреть задачу, узнавать стоимость решения и считать стоимость покупки и владения.
Я точно знаю, что IBM продает мейнфреймы для «Linux-only» решений и цена на них может быть весьма привлекательной.
Читал что есть кейсы, когда определенное количество x86 серверов вместе с сопутствующим оборудованием (коммутаторы, маршрутизаторы и т.п.) заменялось одним мейнфреймом и это приносило выгоду. Меньшее потребление электроэнергии, меньше задержек, больше резерв по мощности.
У меня самого таких проектов не было, но вполне допускаю, что приобрести один мейнфрейм определенной конфигурации может оказаться дешевле, чем пачка X86-серверов и смежного оборудования.
vlsinitsyn
Хех, учитывая что IBM продает сервера на Power для этих целей, я не то чтобы сомневаюсь в ваших словах, но это как минимум странно.
anonymous
Может запросто оказаться что подразделения IBM по продаже System p (Power) и System z конкурируют между собой за потенциальных клиентов. Но — это уже мои догадки фантазии. Я не работал внутри IBM и не знаю как там устроена внутренняя кухня.
vlsinitsyn
System p уже давно нет, больше 10 лет. Их сменили IBM Power Systems, которые одинаковые для i, aix и linux.
anonymous
А мне так нравилось тогда именование: System p, System z, System i, System x.
Ок, спасибо, запомню, Power Systems :)
Да, System z теперь тоже именуется IBM Z. Никак не привыкну.
vlsinitsyn
Хех, а я все живу в мире S/390, AS/400 и RS/6000 :-).
Но тут смысл в том, что сегодня Power — это общее железо для 3-х oc (если не считать разные версии Linux).
IBM перманентно хочет унифицировать вообще все железо, в том числе и для Z сфокусировавшись на Power. Пока c Z не получилось, но, я так думаю, попытки не оставят. Просто слишком дорого продолжать делать процессор для одной специфической машины. Думаю, в конце концов, сделают какой нибудь оптимизированный транслятор с z в Power или что нибудь в этом роде и таким образом разрешится.
anonymous
Согласен, с точки зрения оптимизации затрат на R&D такой шаг как совмещение линеек процессоров вполне может быть сделан.
Надеюсь увидим, как IBM будет жить и действовать дальше.
vlsinitsyn
«При этом коллектив, сопровождающий приложения внутри докера, будет работать с привычными для них кросс-платформенными инструментами, возможно даже не зная того, что докер-инстанс работает как один из процессов внутри z/OS».
У меня закрадывается устойчивое подозрение, что вы никогда в жизни не создавали контейнер, признайтесь, а повторяете тексты из рекламы, не совсем понимая о чем речь ;-). Потому что как бы «подозревать» на какой платформе будет крутиться контейнер разработчик начинает еще на этапе его создания ;-).
anonymous
Ну вообще мы с коллегой как раз недавно разворачивали z/CX у себя в системе и собирали Docker-образы для публикации туда.
Нюанс конечно есть, образ нужно собрать для архитектуры s390x (Linux for z).
На docker-hub готовых образов для этой платформы (IBM Z) сейчас чуть более 7300.
Redhat, Suse, Ubuntu имеют готовые дистрибутивы и пакеты для платформы.
Т.е. собрать докер-образ точно не сложнее чем под любую другую платформу.
А если приклад написан на чем-то более «высокоуровневом», Java, Node.js и т.п., то при наличии «базового» образа с бинарными зависимостями от платформы поверх него построить образ с прикладным приложением — в принципе ровно те же действия что и для других платформ. Скрипты, Javascript-код или Java-классы будут ровно те же самые.
И точно докер-контейнеру не будет заметных глазу различий между докером на Linux for z и докером работающим внутри z/OS.
vlsinitsyn
Вот, вот, уже ближе к реальности ;-). Но, согласитесь, есть же разница между «не сложнее чем» и «даже не зная».
Что касается сложности, то это сильно зависит от приложения. Да, c Java и JS будет попроще.
Но вот с приложениями на C и CPP все может быть гораздо интереснее. Линукс под платформу — это одно. А вот куча зависимостей — это совсем другое. А собирать либы самому под очень специфическую архитектуру — это ой какое интересное занятие. И это еще до всяких контейнеров.
А дальше, когда изрядно помучившись, вы все соберете, и оно даже заработает, окажется, что скорость работы как на не самом свежем лаптопе :-). И вот тут начинаются настоящие танцы с бубном.
Да, сейчас глянул на докере действительно 7340 образов под Z. Для сравнения, на x86-64 — 4,182,380.
anonymous
Cогласен, нужно было выразиться точнее, «не зная» в разрезе «докер в Linux on z» или «докер в z/OS».
А часто приходится сталкиваться с самостоятельной сборкой библиотек? Правда любопытно.
Да, там бывают интересности иногда, например с ассемблерными вставками. Но, по моему, процесс компиляции/сборки для s390x будет не особо отличаться от такого же для, например, ARM или PowerPC. Компилятор для s390x вполне стандартный gcc, никакой «проприетарщины».
В моей нынешней «практике» практически всегда пользуюсь уже готовыми пакетами от Redhat/Suse/Ubuntu, но и собственно Linux-ов у меня в «ведении» мало, поэтому не показатель конечно.
vlsinitsyn
Ну вы попробуйте просто даже код из какого нибудь среднего размера проекта на CPP перекомпилировать под Z с x86-64 и потом позапускать.
anonymous
Лет 7 назад точно собирал «свежий» на тот момент PostgreSQL, так как в доступных бинарных пакетах была более старая версия.
С одной стороны — раз были бинарные пакеты, значит работу по портированию кто-то когда-то уже выполнил.
С другой стороны — новая версия собралась и заработала без каких-то особых усилий.
А вот собрать Java (по моему это был Oracle JDK) у меня в свое время не получилось. В коде попадались вставки ассемблера X86. Моих познаний в ассемблере было точно недостаточно чтобы «сконвертировать» это в ассемблер IBM z, поэтому тогда бросил эту затею.
Я хочу сказать что усилия по портированию проекта C/C++ на платформу s390x (Linux for IBM Z) будут сравнимы с такими же усилиями по портированию на другие платформы (Linux на ARM например).
При этом, портирование такого же проекта в z/OS уже будет гораздо сложнее, так как архитектура системы значительно отличается от Linux.
vlsinitsyn
1. Просто PG делает официальную версию под Z, поэтому в их код уже внесены нужные патчи.
2. Нет, не будут, потому что ARM поддерживается гораздо лучше в библиотеках.
anonymous
1. Да, я про это и говорил.
2. Т.е. только потому, что готовых библиотек под ARM скорее всего больше?
Я имел в виду, что если взять проект, написанный на C/C++ для Linux/X86, который имеет зависимости от готовых библиотек, входящих в стандартный «пакет» дистрибутивов (Redhat, Ubuntu, Suse), то затраты на адаптацию этого проекта под новую для проекта платформу будут примерно одинаковы для разных Linux-платформ, включая Linux/IBM z.
vlsinitsyn
Ну там же еще и версии имеют значение. Вообщем, не простое это дело — портировать на другие платформы. Но чем более популярна платформа — тем больше шансы что решение (в виде фиска, например) уже имеется. Менее популярна — все хуже. С компиляторами, опять же. Например, есть CLang для z?
anonymous
Да, есть.
Для Linux/z, пакеты Ubuntu: clang s390x.
Для z/OS clang идет в составе продукта «XL C/C++ V2.4.1». Ссылочка: XL C/C++ V2.4.1 for z/OS V2.4
zVlad101
Я, МФ-щик, сейчас работаю на проекте перевода приложения (ERP class) с МФ в Azure. Приложение это много лет прекрасно работает на МФ и все вокруг понимают что в Azure все будет хуже. Но переходят.
Поэтому логично сделать вывод что переводя приложения на МФ можно сделать лучше. И это действительно так потому что во первых МФ это и есть облако, во вторых МФ это гораздо более граммотная архитектура чем облако (куча серверов под управлением сомнительного, нестабильного, не эффективного софта). Любой одиночный МФ это и есть куча серверов граммотно, эффективно, надежно увязано друг с другом в одну архитектуру. Посмотрите еще не новую уже тему zEnterprise.
vlsinitsyn
Не лучший настрой для проекта по миграции :-).
Таким проектом должны рулить полные энтузиазма и уверенности в своих способностях люди. А тут слышится крайний скепсис и недоверие к новым технологиям.
Ну и MФ — это, конечно, не облако. Расширяемость МФ ограничена конкретным физическим железом в вашем вц. А по времени добавление новой z системы в энвайромент — это месяцы (если не годы) от начала переговоров и оформления требований, закупки, поставки, тестирования и т.д.
zVlad101
С энтузиазмом у меня все в порядке. В прошедшие выходные я отгрузил практически всю базу данных из DB2 в Аzure, используя Oracle GoldenGate, который я никогда не назову ни новой ни вообще приемлемой технологией. Новой является zOS 2.5 и IBM InfoSphere Data Replication.
Изначальные тесты с Оракл ГГ показывали что нам нужны месяца чтобы тот объем что ушел позавчера за 33 часа перекачать. Были совещания с Оракл, возил я их мордами по столу, в итоге сначала мы же нашли выход и они подогнали идею модофицирующюю наше решение.
Я как раз тороплюсь чтобы все ушло с нашего МФ. По двум причинам: хочу на пенсию (мне 66), и хочу увидеть как они обламаются в облаке с тем что переносят с МФ и, возможно, вернутся назад. Тем не менее я искренне желаю им успеха и прилагаю все свои силы для этого.
Облако тоже ограничено тем что стоит в Дата Центре облака. А вот в случае МФ все иначе. Просто пример. У нас два МФ. У них одинаковая начинка с точностью до винтика. Но один МФ сконфигурирован на мощность, условно, 1000 л.с. второй 100 л.с. Оба МФ друг для друга дизастер рековери сайт. Когда случится DR, МФ с меньшеми л.с. будет на раз-два-три без ИБМ сделан в три раза мощнее первого — 3000 л.с.
Диапазонов уровней мошности, за которые платятся деньги, сотни в каждом семействе и они покрываются несколькими физическими комплектации. Основных комплектаций две.
vlsinitsyn
Разница не в том, что у вас есть дополнительные мощности. А в том, как быстро вы эти мощности можете расширять по необходимости за пределы имеющегося железа (2 МФ в вашем случае). Т.е. сколько времени у вас займет покупка, доставка, настройка третьего, например.
Насчет InfoSpere. Я не знаю человека, который сталкивался и его бы не тошнило от всего, что связано с IBM WebSphere. Я, конечно, допускаю, что конкретно с z у оракла были проблемы. Ну в целом, мой опыт использования DataStage на проектах по миграции в не в пользу этого продукта. Но, в любом случае, если есть компетенции, так и использовали бы DataStage. Это же не проблема облака. Я уверен, что в облаке серверов x86-64 DataStage будет работать не хуже чем на z.
zVlad101
Вы недопоняли. Мы меняем мощности в имеющемся железе. Без какой либо покупки нового.
Каждые пять лет (иногда чаще) мы меняли наши МФ. С 2006 годы я менял МФ-ы не менее шести раз (по записям). В прошлом году мы заменили один МФ на новый zBC12 на z14.
Естественно эти идела не делаются на бегу. Они планируются заранее, составляется план-график с ИБМ и выполняется. Могу Вас убедительно заверить что переход на новый МФ со старого происходит намного проще чем если бы это был сервер Windows или Unix. Я не говорю об облаке. Пока не говорю.
В случае с МФ происходит другая интересная фигня. Лет десять назад один придурок из нашей команды подфартил руководству сказав что можно сэкономить уменьшив мощность МФ с 1200 л.с. до 1000 л.с… Уменьшили, сэкономили. Но начились в пиковые часы некоторые проблемы нехватки мощностей. CPU подолгу был загружен на 100%. Клиент этого не замечал, у него все было как надо. Позднее, перейдя на новый МФ с теми же 1000 л.с. проблемы исчезли потому что ввод-вывод стал мощнее (что не входит в л.с.), память быстрее.
А потом начались переводы приложений из-под Юних/Оракл. Я алармил мол у нас и так МФ под завязку. Не услышали. Но МФ новую нагрузку проглатил. Далее еще одно приложение с новыми ~2000 пользователями из-под Юникс/Оракл (SAP) перевели на МФ. Я уже не алармил, знал что бесполезно. МФ и это проглотил. Мы так и остаемся с 1000 л.с. но обновление МФ дает больше мощности.
Сейчас идет миграция данных в Azure. Это новая нагрузка. Справляемся и с ней.
InfoSphere и WebSphere это, как Вы понимаете, две разные вещи. Я работал с обеими, плотно. С WebSphere и на z и под Линукс на х86. Прекрасные продукты. WebSphere одинаковы и там и там.
У Оракл были проблемы не с z, а с теми девелоперами которые писали EXTRACT для таблиц с LOB.