Introduction
Rollout strategies imply to determine procedures how to rollout scheduling objects such as JS7 - Workflows, JS7 - Calendars, JS7 - Schedules etc. between scheduling environments, for example from dev -> test -> prod environments.
Applicable strategies are determined by
- the JS7 - System Architecture in use,
- the JS7 - Security Architecture requirements,
- the technical tools for rollout:
Environments
For the sake of simplicity the following explanations assume use of three tiers for rollout from dev -> test -> prod environments.
- Users might apply different wordings such as staging, user acceptance, integration etc.
- Users might use fewer environments (such as test -> prod) or more environments (such as dev -> int -> uat -> prod).
Terminology
- Deployment: The term is used for the step performed with JOC Cockpit to digitally sign and to transfer a scheduling object to a given Controller and Agents, for example a workflow.
- Rollout: This term suggests to transfer a scheduling object within the same or different JOC Cockpit inventories.
- Security Level: The security architecture suggests three security levels when it comes to deployment of scheduling objects:
- low: a common private key is used for all user accounts when signing objects for deployment,
- medium: individual private keys are used per user account when signing objects for deployment,
- high: an individual private key is used per user account and outside of JOC Cockpit when signing objects for deployment.
Rollout Strategies
The JS7 - System Architecture offers a number of scenarios to use
- Single JOC Cockpit, Single Controller, Shared Agents
- Single JOC Cockpit, Dedicated Controllers, Dedicated Agents
- Dedicated JOC Cockpits, Dedicated Controllers, Dedicated Agents
Single JOC Cockpit, Single Controller, Shared Agents
![](/download/export/graphviz14833437889855327892.png)
Explanation:
- System Architecture
- In this scenario only one JOC Cockpit instance and one Controller is used. Agents are mapped to respective environments.
- Security Architecture
- A single JOC Cockpit is used in a security level low or medium.
- Rollout
- Rollout is performed within the single JOC Cockpit. This approach includes
- to map environments to separate top-level folders in the JS7 - Inventory,
- to copy scheduling objects between inventory folders and to modify Agent assignment for consideration of environments.
- to deploy modified scheduling objects.
- This approach denies use of Import/Export and use of Git Integration for rollout.
- Rollout is performed within the single JOC Cockpit. This approach includes
Single JOC Cockpit, Dedicated Controllers, Dedicated Agents
![](/download/export/graphviz17589083265238427623.png)
Explanation:
- System Architecture
- In this scenario a number of Controllers are connected to a single JOC Cockpit instance. Agents are dedicated to respective Controllers.
- Security Architecture
- A single JOC Cockpit is used in a security level low or medium.
- Rollout
- Rollout is performed within the single JOC Cockpit. This approach includes
- to map environments to separate top-level folders in the JS7 - Inventory,
- to copy scheduling objects between inventory folders, but to retain Agent assignment as the same Agent Names can be used with each Controller and environment,
- to deploy scheduling objects individually to the Controller that maps to the respective environment.
- This approach denies use of Import/Export and use of Git Integration for rollout.
- Rollout is performed within the single JOC Cockpit. This approach includes
Dedicated JOC Cockpits, Dedicated Controllers, Dedicated Agents
![](/download/export/graphviz370368945817337593.png)
Explanation:
- System Architecture
- In this scenario dedicated JOC Cockpit instances are operated per environment. Each JOC Cockpit instance is assigned a dedicated Controller with dedicated Agents.
- Security Architecture
- Each JOC Cockpit instance can be operated in any security level low, medium. or high.
- Rollout
- Rollout is performed between JOC Cockpit instances using separate inventories. This approach includes
- to map environments to separate JOC Cockpit instances with respective Controllers and Agents,
- to rollout scheduling objects from one JOC Cockpit instance to the next and to retain Agent assignment as the same Agent Names be used with each Controller,
- to deploy scheduling objects individually from each JOC Cockpit that maps to the respective environment.
- This approach allows use of Import/Export and use of Git Integration for rollout.
- Rollout is performed between JOC Cockpit instances using separate inventories. This approach includes
Rollout Tools
Deployment
This approach makes use of build-in operations available within a single JOC Cockpit instance.
Copying folder contents, selecting objects for deployment and knowing which object to deploy to which Controller and environment requires some discipline.
Complexity is low as deployment is a one-click operation that is used within a single JOC Cockpit instance.
Inventory Export/Import
The JS7 - Inventory Export and Import operations offer a valid strategy to perform rollout operations, for example from dev -> test -> prod environments.
At the same time export/import requires some discipline to consider the nature of scheduling objects to be local to a specific environment or to be prepared for rollout across environments.
Complexity is medium as the technical operation to export/import is simple, however, selection of objects requires some attention.
Git Integration
The JS7 - Inventory Git Integration offers a number of options for rollout by use of the JS7 - Git Repository Interface.
Complexity is high as this approach suggests to follow best practices for software development.
Typically we find
- developers: persons who own skills for development in teams to manage branching, merging etc. with Git,
- engineers: persons who dispose of skills in system administration and scripting languages.
The Git approach will work fine with engineers being ready to acquire skills for Git repository management.
Rollout Considerations
Determine Rollout Objects and Local Objects
A number of objects suggest to be rolled out across environments without any changes. Most prominently this includes workflows/jobs.
However, a number of objects might be specific for an environment, for example JS7 - Job Resources that hold environment variables that are specific for a machine.
Find below suggested categories for Rollout Objects and Local Objects with assigned object types. The suggested assignment does not necessarily apply to all users.
Rollout Objects
This category includes JS7 object types that are independent from a specific environment (dev, test, prod) and that can be rolled out across environments:
- Workflows
- Resource Locks
- File Order Sources
- Notice Boards
- Script Includes
Such objects can be managed with JS7 in a way that allows to re-use the objects - without any changes - across rollout environments such as dev, test, prod.
Local Objects
The following object types typically hold values that are specific for an individual environment (dev, test, prod). Such objects are not rolled out across environments.
- Job Resources
- Calendars
- Schedules
Prepare Objects for Rollout
The following measures are suggested per object type to allow rollout of a scheduling object without changes.
Workflows
- JS7 - Workflows should not include hard coded values such as paths.
- Workflows can be parameterized
- from JS7 - Order Variables that are generated by JS7 - Schedules,
- from JS7 - Job Resources.
Resource Locks
- Except for testing purposes with changing Resource Lock capacities there is no reason why not to use generic Resource Locks that can be rolled out across environments.
File Order Sources
- JS7 - File Watching is performed for directories that can be specific per environment.
- Instead of hard-wired Directory names some global environment variables can be used that are added to an Agent instance's start script.
- The bad example specifies a hard-wired Directory:
- The good example makes use of an environment variable and optionally adds a fixed part to the Directory like this:
- The bad example specifies a hard-wired Directory:
- There should be no good reason why to use different Patterns for incoming file names across environments.
Notice Boards
The generic nature of JS7 - Notice Boards suggests no changes when being rolled out across environments.
Script Includes
x