Bundle
In the context of z/OS, a `bundle` is a deployable package that groups related resources or artifacts for a specific purpose, enabling their collective management, deployment, and lifecycle control. It simplifies the deployment of complex applications or services by treating multiple components as a single unit.
Key Characteristics
-
- Atomic Deployment: Resources within a bundle are deployed, enabled, and disabled as a single logical unit, ensuring consistency and simplifying operational procedures.
- Version Control: Bundles can be versioned, allowing for controlled updates, easy rollbacks, and management of different application releases.
- Resource Encapsulation: It encapsulates all necessary components (e.g., programs, transactions, DB2 plans, service definitions, configuration files) required for a specific function or application.
- Declarative Definition: Often defined using manifest files (e.g.,
bundle.xmlfor CICS bundles,server.xmlfor z/OS Connect EE API packages) that specify the contained resources and their properties. - Runtime Management: Managed by specific runtime environments (e.g., a CICS region, a z/OS Connect EE server, or a Liberty profile server) that understand and process the bundle's contents.
- Portability: Designed to be portable across different z/OS systems or environments, facilitating consistent deployments from development to production.
Use Cases
-
- CICS Application Deployment: Deploying a new CICS application or updating an existing one, where the
CICS bundlecontains programs, transactions, DB2 plans, map sets, and other CICS resources. - z/OS Connect EE API Deployment: Packaging RESTful APIs and their associated service providers (e.g., for CICS, IMS, DB2) into a deployable unit for the z/OS Connect EE server.
- Liberty Profile Application Deployment: Deploying a Java EE application (e.g., a
.waror.earfile) along with its specific Liberty server configuration as a cohesive unit on z/OS. - Microservice Deployment: Grouping all artifacts for a z/OS-based microservice, which might include COBOL programs, CICS resources, and database access definitions, for unified deployment.
- CICS Application Deployment: Deploying a new CICS application or updating an existing one, where the
Related Concepts
Bundles represent a modern approach to application deployment on z/OS, contrasting with traditional methods that often involved deploying individual resources separately. They are closely related to application servers like CICS and z/OS Connect EE, which provide the runtime environment for managing and executing bundle contents. Bundles often leverage JCL for batch deployment processes and interact with system libraries (e.g., PDS/PDSEs) where the physical resources reside. They promote a more DevOps-friendly approach by standardizing deployment artifacts and enabling automation.
- Granularity: Design bundles to be appropriately granular, grouping only truly related resources to minimize impact during updates and facilitate independent deployment.
- Versioning: Always version your bundles to enable clear tracking, controlled deployments, and easy rollbacks to previous stable states.
- Automation: Integrate bundle creation, packaging, and deployment into automated CI/CD pipelines using tools like z/OSMF, IBM UrbanCode Deploy, or Jenkins.
- Dependency Management: Clearly define and manage dependencies between bundles or external resources to ensure correct deployment order and operational integrity.
- Security: Ensure bundles only contain necessary resources and that deployment processes adhere to security best practices, including proper authorization and access control.