Введение
IBM CICS (Customer Information Control System) — это семейство серверов приложений, поддерживающих различные языки программирования, которые обеспечивают управление онлайн-транзакциями и подключение приложений на мейнфреймах IBM под z/OS и z/VSE. Продукты семейства CICS разработаны как промежуточное программное обеспечение и поддерживают быструю обработку онлайн-транзакций с большим объемом данных. Транзакция CICS — это единица обработки, инициированная одним запросом, который может затронуть один или несколько объектов. Эта обработка обычно интерактивна (ориентирована на экран), но возможна и фоновая обработка. CICS Transaction Server (CICS TS) является флагманским продуктом семейства CICS и предоставляет сервисы, расширяющие или заменяющие функции операционной системы. Эти сервисы могут быть более эффективными, чем обобщенные сервисы операционной системы, а также проще в использовании для программистов, особенно в части взаимодействия с различными терминальными устройствами. Приложения, разработанные для CICS, могут быть написаны на различных языках программирования и использовать расширения языка, предоставляемые CICS, для взаимодействия с ресурсами, такими как файлы, соединения с базами данных, терминалы или для вызова функций, например, веб-сервисов. CICS управляет всей транзакцией таким образом, что в случае сбоя любой ее части все выполненные изменения могут быть отменены. Хотя CICS TS наиболее известен среди крупных финансовых учреждений, таких как банки и страховые компании, многие компании из списка Fortune 500 и государственные организации также используют CICS. Другие, более мелкие предприятия также могут использовать CICS TS и другие продукты семейства CICS. CICS часто используется в качестве основы для таких приложений, как системы обслуживания клиентов в банках, банкоматы, системы управления производством, страховые приложения и многие другие интерактивные приложения. Недавние усовершенствования CICS TS включают новые возможности для улучшения опыта разработчиков, такие как выбор API, фреймворков, редакторов и инструментов сборки, а также обновления в ключевых областях безопасности, надежности и управления. В более ранних версиях CICS TS была добавлена поддержка веб-сервисов и Java, обработки событий, Atom-каналов и RESTful-интерфейсов.
IBM CICS (Customer Information Control System) is a family of mixed language application servers that provide online transaction management and connectivity for applications on IBM mainframe systems under z/OS and z/VSE. CICS family products are designed as middleware and support rapid, high volume online transaction processing. A CICS transaction is a unit of processing initiated by a single request that may affect one or more objects. This processing is usually interactive (screen oriented), but background transactions are possible. CICS Transaction Server (CICS TS) sits at the head of the CICS family and provides services that extend or replace the functions of the operating system. These services can be more efficient than the generalized operating system services and also simpler for programmers to use, particularly with respect to communication with diverse terminal devices. Applications developed for CICS may be written in a variety of programming languages and use CICS supplied language extensions to interact with resources such as files, database connections, terminals, or to invoke functions such as web services. CICS manages the entire transaction such that if for any reason a part of the transaction fails all recoverable changes can be backed out. While CICS TS has its highest profile among large financial institutions, such as banks and insurance companies, many Fortune 500 companies and government entities are reported to run CICS. Other, smaller enterprises can also run CICS TS and other CICS family products. CICS can regularly be found behind the scenes in, for example, bank teller applications, ATM systems, industrial production control systems, insurance applications, and many other types of interactive applications. Recent CICS TS enhancements include new capabilities to improve the developer experience, including the choice of APIs, frameworks, editors, and build tools, while at the same time providing updates in the key areas of security, resilience, and management. In earlier, recent CICS TS releases, support was provided for Web services and Java, event processing, Atom feeds, and RESTful interfaces.
История
CICS предшествовала более ранняя, однопоточная система обработки транзакций IBM MTCS. Позже был разработан "мост MTCS CICS", позволяющий выполнять эти транзакции под управлением CICS без изменения исходных прикладных программ. Система управления информацией о клиентах (CICS) IBM, впервые разработанная совместно с Michigan Bell в 1966 году. Бен Риггинс был системным инженером IBM в компании Virginia Electric Power Co., когда ему пришла в голову идея онлайн-системы. CICS первоначально разрабатывалась в Соединенных Штатах в Центре разработки IBM в Де-Плейнс, штат Иллинойс, начиная с 1966 года, для удовлетворения потребностей предприятий коммунальной отрасли. Первый продукт CICS был анонсирован в 1968 году под названием Public Utility Customer Information Control System, или PU CICS. Сразу стало ясно, что он может быть применен во многих других отраслях, поэтому префикс Public Utility был исключен с выпуском первого релиза Программного продукта CICS 8 июля 1969 года, вскоре после системы управления базами данных IMS. В течение следующих нескольких лет CICS разрабатывалась в Пало-Альто и считалась менее важным, "младшим" продуктом по сравнению с IMS, которую IBM тогда считала более стратегически важной. Однако, благодаря настойчивости клиентов, CICS оставалась в разработке. Когда IBM решила прекратить разработку CICS в 1974 году, чтобы сосредоточиться на IMS, ответственность за разработку CICS перешла к подразделению IBM Hursley в Соединенном Королевстве, которое только что завершило работу над компилятором PL/I и поэтому знало многих тех же клиентов, что и CICS. Основная часть работы по разработке продолжается в Херсли и сегодня, наряду с вкладом лабораторий в Индии, Китае, России, Австралии и Соединенных Штатах.
Ранняя эволюция
Первоначально CICS поддерживал лишь несколько устройств IBM, таких как терминал на базе пишущей машинки IBM 2741 Selectric (с «гольф-шариком») 1965 года выпуска. Позднее широко использовались видеотерминалы IBM 2260 1964 года и IBM 3270 1972 года. В первые годы развития мэйнфреймов IBM компьютерное программное обеспечение бесплатно поставлялось в комплекте с компьютерным оборудованием, без дополнительной платы. Операционная система OS/360 и прикладное программное обеспечение, такое как CICS, были доступны клиентам IBM задолго до появления инициативы по разработке программного обеспечения с открытым исходным кодом. Такие корпорации, как Standard Oil of Indiana (Amoco), внесли значительный вклад в развитие CICS. Команда IBM Des Plaines пыталась добавить поддержку популярных терминалов других производителей, например, ASCII Teletype Model 33 ASR, но небольшая команда разработчиков с ограниченным бюджетом не могла позволить себе аппаратное обеспечение стоимостью 100 долларов в месяц для его тестирования. Руководство IBM ошибочно полагало, что будущее будет похоже на прошлое, с пакетной обработкой данных с использованием традиционных перфокарт. IBM неохотно выделила лишь минимальное финансирование, когда коммунальные предприятия, банки и компании, выпускающие кредитные карты, потребовали экономически эффективную интерактивную систему (аналогичную программе управления авиакомпаниями IBM 1965 года, используемой компьютерной системой бронирования American Airlines Sabre) для высокоскоростного доступа к данным и обновления информации о клиентах для их телефонных операторов (без необходимости ожидания ночной пакетной обработки данных с перфокарт). Когда CICS с поддержкой Teletype Model 33 ASR была поставлена компании Amoco, это привело к сбою всей операционной системы OS/360 (включая приложения, не связанные с CICS). Большая часть программы управления терминалами CICS (TCP – ядро CICS) и часть OS/360 должны были быть трудоемко переработаны и переписаны компанией Amoco Production Company в городе Тулса, штат Оклахома. Затем она была возвращена IBM для бесплатного распространения среди других пользователей. В течение нескольких лет CICS принесла IBM более 60 миллиардов долларов дохода от продаж нового оборудования и стала самым успешным программным продуктом для мэйнфреймов. В 1972 году CICS была доступна в трех версиях: DOS ENTRY (номер программы 5736 XX6) для машин DOS/360 с очень ограниченной памятью, DOS STANDARD (номер программы 5736 XX7) для машин DOS/360 с большим объемом памяти и OS STANDARD V2 (номер программы 5734 XX7) для более мощных машин, работающих под управлением OS/360. В начале 1970-х годов ряд оригинальных разработчиков, включая Бена Риггинса (главного архитектора ранних версий), переехали в Калифорнию и продолжили разработку CICS в Центре разработки IBM в Пало-Альто. Руководство IBM не осознавало ценность программного обеспечения как источника дохода до тех пор, пока федеральный закон не потребовал раздельного распространения программного и аппаратного обеспечения. В 1980 году руководство IBM не прислушалось к настоятельным рекомендациям Бена Риггинса о том, что IBM должна разработать собственную операционную систему на базе EBCDIC и интегральную микросхему для использования в IBM Personal Computer в качестве интеллектуального терминала CICS (вместо несовместимой микросхемы Intel и незрелой ASCII-ориентированной Microsoft 1980 DOS). Из-за ограниченной производительности даже самых мощных процессоров того времени каждая установка CICS должна была собирать исходный код всех системных модулей CICS после выполнения процесса, аналогичного генерации системы (sysgen), называемого CICSGEN, для задания значений условным директивам языка ассемблера. Этот процесс позволял каждому клиенту исключить поддержку любых функций, которые он не планировал использовать, например, поддержку типов терминалов, которые не применялись. CICS обязана своей ранней популярностью относительно эффективной реализации в условиях дорогостоящего оборудования, многопоточной архитектурой обработки, относительной простотой разработки приложений для обработки транзакций в реальном времени на основе терминалов и многочисленными вкладами клиентов, включая отладку и расширение функциональности.
Z обозначение
Часть CICS была формализована с использованием Z-нотации в 1980-х и 1990-х годах в сотрудничестве с Оксфордской университетской вычислительной лабораторией под руководством Тони Хоара. Эта работа была удостоена премии королевы за технологические достижения.
CICS как распределенный файловый сервер
В 1986 году IBM объявила о поддержке CICS для файловых сервисов, ориентированных на записи, определенных архитектурой распределенного управления данными (DDM). Это позволило программам на удаленных компьютерах, подключенных к сети, создавать, управлять и получать доступ к файлам, которые ранее были доступны только в средах обработки транзакций CICS/MVS и CICS/VSE. В новых версиях CICS поддержка DDM была исключена. Поддержка компонента DDM в CICS z/OS была прекращена в конце 2003 года и удалена из CICS для z/OS, начиная с версии 5.2. В CICS TS для z/VSE поддержка DDM была стабилизирована на уровне V1.1.1 с объявленным намерением прекратить ее поддержку в одной из будущих версий. В CICS для z/VSE 2.1 и выше CICS/DDM не поддерживается.
CICS и всемирная паутина
CICS Transaction Server впервые представил собственный интерфейс HTTP в версии 1.2, вместе с технологией Web Bridge для заключения программ, основанных на терминалах с экраном зеленого цвета, в HTML-оболочку. В CICS TS V1.3 веб- и документные API CICS были расширены, чтобы обеспечить возможность написания веб-приложений, более эффективно взаимодействующих с веб-браузерами. Версии CICS TS 2.1–2.3 были сосредоточены на внедрении технологий CORBA и EJB в CICS, предлагая новые способы интеграции ресурсов CICS в распределенные модели компонентных приложений. Эти технологии полагались на размещение приложений Java в CICS. Среда размещения Java претерпела множество улучшений в течение многих выпусков. Многопоточный ресурс JVM с именем JVMSERVER был представлен в выпуске CICS TS версии 4.1 и впоследствии был усовершенствован для использования 64-битной технологии JVM в версии 5.1. В версии 5.1 также был представлен веб-контейнер профиля WebSphere Liberty. В конечном итоге WebSphere Liberty была полностью встроена в CICS Transaction Server в версии 5.3. В CICS с использованием Java можно было разместить множество веб-ориентированных технологий, что в конечном итоге привело к удалению нативных технологий CORBA и EJB. CICS TS V3.1 добавил собственную реализацию технологий SOAP и WSDL для CICS, а также клиентские HTTP API для исходящей связи. Эти две технологии упростили интеграцию компонентов CICS с другими корпоративными приложениями и получили широкое распространение. Были включены инструменты для преобразования традиционных программ CICS, написанных на таких языках, как COBOL, в веб-сервисы, определенные WSDL, с минимальными или отсутствующими изменениями программы. Эта технология регулярно улучшалась в последующих выпусках CICS. В CICS TS V4.1 и V4.2 были внесены дальнейшие улучшения в веб-подключение, включая собственную реализацию протокола Atom Publishing. Многие из новых веб-ориентированных технологий были доступны для более ранних выпусков CICS с использованием моделей доставки, отличных от традиционного выпуска продукта. Это позволило ранним пользователям предоставить конструктивные отзывы, которые могли повлиять на окончательный дизайн интегрированной технологии. Примеры включают технологический предварительный просмотр Soap для CICS SupportPac для TS V2.2 или ATOM SupportPac для TS V3.1. Этот подход был использован для внедрения поддержки JSON для CICS TS V4.2, технологии, которая впоследствии была интегрирована в CICS TS V5.2. Технология JSON в CICS аналогична более ранней технологии SOAP, обе из которых позволяли заключать программы, размещенные в CICS, в современную оболочку. Технология JSON, в свою очередь, была улучшена в z/OS Connect Enterprise Edition, продукте IBM для создания JSON API, которые могут использовать ресурсы из нескольких подсистем мэйнфрейма. Многие партнерские продукты также использовались для взаимодействия с CICS. Популярные примеры включают использование CICS Transaction Gateway для подключения к CICS с серверов приложений Java, соответствующих JCA, и устройств IBM DataPower для фильтрации веб-трафика до его достижения CICS. Современные версии CICS предоставляют множество способов интеграции как существующих, так и новых программных ресурсов в распределенные потоки приложений. Доступ к ресурсам CICS можно получить из удаленных систем, и ресурсы CICS могут получать доступ к удаленным системам; идентификация пользователя и транзакционный контекст могут распространяться; RESTful API могут быть созданы и управляться; устройства, пользователи и серверы могут взаимодействовать с CICS с использованием технологий, основанных на стандартах; а среда IBM WebSphere Liberty в CICS способствует быстрому внедрению новых технологий.
МикроКИКС
К январю 1985 года консалтинговая компания, основанная в 1969 году и разработавшая масштабные онлайн-системы для Hilton Hotels, FTD Florists, Amtrak и Budget Rent a Car, объявила о создании MicroCICS. Первоначально разработка велась для IBM XT/370 и IBM AT/370.
Семейство CICS
Хотя при упоминании CICS люди обычно имеют в виду CICS Transaction Server, семейство CICS включает в себя портфель транзакционных серверов, соединителей (называемых CICS Transaction Gateway) и инструментов CICS. CICS на распределенных платформах – не на мейнфреймах – называется IBM TXSeries. TXSeries – это промежуточное программное обеспечение для распределенной обработки транзакций. Оно поддерживает приложения на языках C, C++, COBOL, Java™ и PL/I в облачных средах и традиционных центрах обработки данных. TXSeries доступен на платформах AIX, Linux x86, Windows, Solaris и HP UX. CICS также доступен для других операционных систем, в частности IBM i и OS/2. Реализация для z/OS (то есть CICS Transaction Server для z/OS) является самой популярной и значимой. Ранее для VM/CMS были доступны две версии CICS, но обе они впоследствии были сняты с поддержки. В 1986 году IBM выпустила CICS/CMS, а позднее, в 1988 году – CICS/VM. CICS/VM предназначался для использования на IBM 9370, маломощном мейнфрейме, ориентированном на использование в отделах; IBM позиционировала CICS/VM, работающий на мейнфреймах отделов или филиалов, для использования совместно с центральным мейнфреймом, работающим с CICS для MVS.
Инструменты CICS
Обеспечение, управление и анализ систем и приложений CICS осуществляется с помощью инструментов CICS. Это включает в себя управление производительностью, а также развертывание и управление ресурсами CICS. В 2015 году четыре основных базовых инструмента CICS (и пакет оптимизации CICS Optimization Solution Pack для z/OS) были обновлены с выпуском CICS Transaction Server для z/OS 5.3. Четыре основных инструмента CICS: CICS Interdependency Analyzer для z/OS, CICS Deployment Assistant для z/OS, CICS Performance Analyzer для z/OS и CICS Configuration Manager для z/OS.
Учитывания по программе
Для поддержки нескольких одновременных потоков транзакций требовалось, чтобы многопользовательские интерактивные транзакционные приложения были квази-реентерантными. Ошибка в кодировании программного обеспечения в одном приложении могла заблокировать всех пользователей в системе. Модульная конструкция реентерантных / многократно используемых управляющих программ CICS означала, что при разумной "оптимизации" несколько пользователей с несколькими приложениями могли выполняться на компьютере всего с 32 КБ дорогой физической памяти на магнитных сердечниках (включая операционную систему). Программистам приложений CICS требовались значительные усилия для обеспечения максимальной эффективности их транзакций. Распространенной практикой было ограничение размера отдельных программ до 4096 байт, или 4 КБ, чтобы CICS могла легко повторно использовать память, занимаемую программой, которая в данный момент не используется, для другой программы или других нужд хранения данных приложений. Когда в 1972 году в OS/360 была добавлена виртуальная память, стратегия 4 КБ стала еще более важной для снижения нагрузки, связанной с подкачкой и "thrashing" (непродуктивным переключением задач из-за нехватки памяти). Эффективность компилируемых программ высокого уровня на языках COBOL и PL/I оставляла желать лучшего. Многие приложения CICS продолжали писаться на языке ассемблера, даже после появления поддержки COBOL и PL/I. В 1960-х и 1970-х годах аппаратные ресурсы были дорогими и дефицитными, что привело к развитию своеобразной "игры" среди аналитиков по оптимизации систем. Когда был определен критически важный участок кода, фрагмент кода передавался от одного аналитика к другому. Каждый должен был либо (а) уменьшить количество байт кода, либо (б) уменьшить количество необходимых тактов процессора. Молодые аналитики учились у более опытных наставников. В конечном итоге, когда никому не удавалось добиться (а) или (б), код считался оптимизированным, и они переходили к другим фрагментам. Небольшие группы с одним аналитиком осваивали оптимизацию CICS очень медленно (или вообще не осваивали). Поскольку приложения могли использоваться совместно многими одновременными потоками, использование статических переменных, встроенных в программу (или использование памяти операционной системы), ограничивалось (только по соглашению). К сожалению, многие из этих "правил" часто нарушались, особенно программистами COBOL, которые могли не понимать внутреннюю структуру своих программ или не использовать необходимые ограничительные опции компиляции. Это приводило к "нереентерабельному" коду, который часто был ненадежным, вызывая ложные ошибки хранения и сбои всей системы CICS. Изначально весь раздел, или область многократного виртуального хранения (MVS), работал с одним и тем же ключом защиты памяти, включая код ядра CICS. Повреждение программ и блоков управления CICS часто приводило к простоям системы. Ошибка программного обеспечения в одном приложении могла перезаписать память (код или данные) одной или всех выполняющихся транзакций приложения. Выявление кода, вызывающего сложные временные ошибки, могло быть очень сложной задачей для аналитиков операционной системы. Эти недостатки сохранялись в течение более чем 20 лет в многочисленных новых версиях CICS, несмотря на их серьезность и дефицит высококвалифицированных специалистов CICS. Они были устранены в TS V3.3, V4.1 и V5.2 с помощью функций защиты памяти, изоляции транзакций и подпространств соответственно, которые используют аппаратные возможности операционной системы для защиты кода приложения и данных в одном адресном пространстве, даже если приложения не были разработаны для разделения. Транзакции приложений CICS остаются критически важными для многих коммунальных предприятий, крупных банков и других многомиллиардных финансовых институтов. Кроме того, можно обеспечить определенный уровень предварительной защиты приложений, проводя тестирование под управлением программы мониторинга, которая также предоставляет функции тестирования и отладки.
Макроуровневое программирование
Когда CICS был впервые выпущен, он поддерживал только транзакционные программы приложений, написанные на IBM 360 Assembler. Поддержка COBOL и PL/I была добавлена спустя годы. Из-за первоначальной ориентации на язык ассемблера, запросы к сервисам CICS выполнялись с использованием макросов языка ассемблера. Например, запрос на чтение записи из файла с помощью вызова макроса в "Программу управления файлами" CICS мог выглядеть следующим образом: DFHFC TYPE=READ,DATASET=myfile,TYPOPER=UPDATE и т.д. Это привело к появлению более поздней терминологии "CICS макроуровня". Когда была добавлена поддержка языков высокого уровня, макросы были сохранены, а код преобразовывался предварительным компилятором, который раскрывал макросы в эквивалентные операторы COBOL или PL/I CALL. Таким образом, подготовка приложения на языке высокого уровня фактически представляла собой "двухэтапную" компиляцию: вывод препроцессора подавался на вход компилятору языка высокого уровня. Особенности COBOL: в отличие от PL/I, IBM COBOL обычно не поддерживает манипулирование указателями (адресами). Чтобы предоставить программистам COBOL доступ к блокам управления CICS и динамической памяти, разработчики прибегли к своеобразному обходному решению. Секция Linkage Section в COBOL обычно использовалась для межпрограммного взаимодействия, например, для передачи параметров. Компилятор генерирует список адресов, каждый из которых называется базовым локатором для связи (Base Locator for Linkage – BLL), и они устанавливаются при входе в вызываемую программу. Первый BLL соответствует первому элементу в секции Linkage Section и так далее. CICS позволяет программисту получать доступ и манипулировать этими локаторами, передавая адрес списка в качестве первого аргумента программе. Затем BLL могут быть динамически установлены CICS или приложением для обеспечения доступа к соответствующей структуре в секции Linkage Section.
DFHFC TYPE=READ,DATASET=myfile,TYPOPER=UPDATE, etc. This gave rise to the later terminology "Macro level CICS." When high level language support was added, the macros were retained and the code was converted by a pre compiler that expanded the macros to their COBOL or PL/I CALL statement equivalents. Thus preparing a HLL application was effectively a "two stage" compile output from the preprocessor fed into the HLL compiler as input. COBOL considerations: unlike PL/I, IBM COBOL does not normally provide for the manipulation of pointers (addresses). In order to allow COBOL programmers to access CICS control blocks and dynamic storage the designers resorted to what was essentially a hack. The COBOL Linkage Section was normally used for inter program communication, such as parameter passing. The compiler generates a list of addresses, each called a Base Locator for Linkage (BLL) which were set on entry to the called program. The first BLL corresponds to the first item in the Linkage Section and so on. CICS allows the programmer to access and manipulate these by passing the address of the list as the first argument to the program. The BLLs can then be dynamically set, either by CICS or by the application to allow access to the corresponding structure in the Linkage Section.
Перевод в режиме времени выполнения
Командный уровень CICS, представленный в начале 1990-х годов, предлагал некоторые преимущества по сравнению с более ранними версиями CICS. Однако IBM также прекратила поддержку прикладных программ, написанных на макроуровне для предыдущих версий. Это означало, что многие прикладные программы требовалось преобразовать или полностью переписать для использования только команд EXEC командного уровня. К тому времени во всем мире существовали, возможно, миллионы программ, которые во многих случаях находились в эксплуатации десятилетиями. Переписывание этих программ часто приводило к появлению новых ошибок, не обязательно добавляя при этом новые функции. Значительное число пользователей продолжали использовать регионы приложений, владеющие (AOR) CICS V2, чтобы запускать макрокод еще много лет после перехода на V3. Также существовала возможность запускать старые программы на макроуровне с использованием программного обеспечения для преобразования, такого как Command CICS от APT International.
Новые стили программирования
Недавние усовершенствования CICS Transaction Server включают поддержку ряда современных стилей программирования. CICS Transaction Server версии 5.6 представила расширенную поддержку Java для обеспечения облачного опыта для Java-разработчиков. Например, новый CICS Java API (JCICSX) упрощает модульное тестирование с использованием методов имитации и заглушек и может быть запущен удаленно на локальной рабочей станции разработчика. Набор артефактов CICS в Maven Central позволяет разработчикам разрешать зависимости Java с помощью популярных инструментов управления зависимостями, таких как Apache Maven и Gradle. Также предоставляются плагины для Maven (cics bundle maven) и Gradle (cics bundle gradle) для упрощения автоматизированной сборки пакетов CICS с использованием знакомых IDE, таких как Eclipse, IntelliJ IDEA и Visual Studio Code. Кроме того, поддержка Node.js z/OS улучшена для версии 12, обеспечивая более быструю загрузку, улучшенные лимиты памяти по умолчанию, обновления движка V8 JavaScript и т. д. Также включена поддержка Jakarta EE 8. CICS TS 5.5 представила поддержку IBM SDK для Node.js, предоставляя полноценную среду выполнения JavaScript, серверные API и библиотеки для эффективной разработки высокопроизводительных и масштабируемых сетевых приложений для IBM Z. CICS Transaction Server версии 2.1 представила поддержку Java. CICS Transaction Server версии 2.2 поддерживала Software Developers Toolkit. CICS предоставляет тот же контейнер времени выполнения, что и продукты семейства IBM WebSphere, поэтому приложения Java EE переносимы между CICS и WebSphere, а также существует общий инструментарий для разработки и развертывания приложений Java EE. Кроме того, CICS делала акцент на "инкапсуляции" существующих прикладных программ в современные интерфейсы, чтобы давно устоявшиеся бизнес-функции можно было интегрировать в более современные сервисы. К ним относятся интерфейсы WSDL, SOAP и JSON, которые оборачивают устаревший код, позволяя веб- или мобильному приложению получать и обновлять основные бизнес-объекты без существенной переработки функций серверной части.
CICS Transaction Server Version 2.1 introduced support for Java. CICS Transaction Server Version 2.2 supported the Software Developers Toolkit. CICS provides the same run time container as IBM's WebSphere product family so Java EE applications are portable between CICS and Websphere and there is common tooling for the development and deployment of Java EE applications. In addition, CICS placed an emphasis on "wrapping" existing application programs inside modern interfaces so that long established business functions can be incorporated into more modern services. These include WSDL, SOAP and JSON interfaces that wrap legacy code so that a web or mobile application can obtain and update the core business objects without requiring a major rewrite of the back end functions.
Использование Sysplex
Во время CICS ESA V3.2, в начале 1990-х годов, IBM столкнулась с задачей интеграции CICS с новой линейкой мейнфреймов zOS Sysplex. Sysplex должен был базироваться на CMOS (комплементарный металл-оксид-полупроводник), а не на существующей технологии ECL (эмиттерно-связанная логика). Масштабирование уникального ECL для мейнфреймов обходилось значительно дороже, чем CMOS, который разрабатывался консорциумом (keiretsu) с крупносерийным производством, например, для Sony PlayStation, с целью снижения стоимости процессоров каждого поколения. ECL также был дорог в эксплуатации, поскольку ток стока затвора выделял так много тепла, что процессор требовал установки в специальный модуль – модуль теплоотвода (TCM) с поршнями, заполненными инертным газом, и подключением к системе охлаждения с большим объемом охлажденной воды. Однако, изначально скорость процессоров CMOS с воздушным охлаждением была значительно ниже, чем у ECL (особенно у систем, предлагаемых производителями клонов мейнфреймов Amdahl и Hitachi). Это вызывало особую обеспокоенность у IBM в контексте CICS, поскольку почти все крупнейшие клиенты мейнфреймов использовали CICS, и для многих это была основная рабочая нагрузка. Для достижения сопоставимой общей пропускной способности транзакций в Sysplex требовалось бы использовать несколько систем параллельно для каждой рабочей нагрузки. Однако, адресное пространство CICS, из-за своей квази-реэнтрантной модели программирования, не могло эффективно использовать более 1,5 процессоров на одной системе, даже с применением подзадач MVS. Без повышения параллелизма клиенты, скорее всего, перешли бы к конкурентам IBM, чем использовали бы Sysplex при увеличении нагрузки на CICS. В IBM велись активные дебаты о том, следует ли нарушать обратную совместимость приложений и переходить к модели, подобной IMS/DC, которая была полностью реэнтрантной, или расширить существующий подход, принятый клиентами, для более полного использования мощности одного мейнфрейма с помощью многорегиональной операции (MRO). В конечном итоге, после консультаций с сообществом пользователей CICS, был выбран второй путь. Сообщество категорически выступало против нарушения обратной совместимости, учитывая предстоящую проблему Y2K и не видя смысла в переписывании и тестировании миллионов строк кода, написанных в основном на COBOL, PL/I или ассемблере. IBM рекомендовала структуру для CICS на Sysplex, предусматривающую размещение как минимум одного региона владения терминалами CICS на каждом узле Sysplex, который распределял транзакции между множеством регионов владения приложениями (AOR), распределенных по всему Sysplex. Если этим приложениям требовался доступ к общим ресурсам, они использовали хранилище данных Sysplex (например, IBM Db2 или IMS/DB) или концентрировали запросы к ресурсам в отдельные регионы владения ресурсами (ROR), включая регионы владения файлами (FOR) для VSAM и таблиц данных CICS, регионы владения очередями (QOR) для MQ, временные данные CICS (TD) и временное хранилище CICS (TS) посредством перенаправления функций. Это обеспечивало совместимость с устаревшими приложениями за счет повышения сложности настройки и управления множеством регионов CICS. В последующих версиях CICS получила возможность использовать новые возможности Sysplex в VSAM/RLS, MQ для zOS и размещать свои собственные таблицы данных, TD и TS ресурсы в централизованном менеджере общих ресурсов Sysplex – Coupling Facility (CF), что позволило отказаться от большинства ROR. CF обеспечивает отображение ресурсов, включая общую временную базу, пулы буферов, блокировки и счетчики, с аппаратной поддержкой обмена сообщениями, что делало совместное использование ресурсов в Sysplex более эффективным и надежным (с использованием полусинхронизированной резервной копии CF на случай сбоя). К этому времени отдельные системы на базе CMOS превосходили по производительности самые быстрые системы ECL, имея больше процессоров на чип. При объединении 32 или более узлов можно было масштабировать общую производительность для одной рабочей нагрузки на два порядка величины. Например, к 2002 году Charles Schwab использовала "MetroPlex", состоящий из двух резервированных пар мейнфреймных Sysplexes в двух локациях в Фениксе, штат Аризона, каждый из которых включал 32 узла, управляемых единой рабочей нагрузкой CICS/DB/2 для поддержки огромного объема запросов веб-клиентов, поступавших до краха доткомов. Эта более дешевая и гораздо более масштабируемая технология на базе CMOS, а также огромные инвестиционные затраты, необходимые для перехода на 64-битную адресацию и независимой реализации функциональности CF, привели к постепенному уходу с рынка производителей клонов мейнфреймов IBM.
Компоненты
Каждый регион CICS включает в себя одну главную задачу, на которой выполняются все транзакции, хотя некоторые сервисы, такие как доступ к данным IBM Db2, используют другие задачи (TCB). Внутри региона транзакции выполняются с кооперативным многозадачным режимом – они должны быть корректными и уступать процессорное время, а не ожидать. Сервисы CICS обрабатывают это автоматически. Каждой уникальной "задаче" или транзакции CICS при запуске выделяется собственная динамическая память, а последующие запросы на дополнительную память обрабатываются вызовом "программы управления памятью" (части ядра или "ядра" CICS), которая аналогична операционной системе. Система CICS состоит из онлайн-ядра, программ пакетной обработки и прикладных сервисов.