Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

For the sake of simplicity the following explanations assume use of three tiers for rollout with from dev -> test -> prod environments.

  • Users might apply different wordings such as staging, user acceptance, integration etc.
  • User Users might use fewer environments (such as test -> prod) or more environments (such as dev -> int -> uat -> prod).

Key Indicators

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


Flowchart
JOC1 [label="JOC Cockpit",fillcolor="lightskyblue1",fontname="Arial",fontsize="10pt"]

FOLDER1D [label="Folder: dev",fillcolor="white",fontname="Arial",fontsize="10pt"]
FOLDER1T [label="Folder: test",fillcolor="white",fontname="Arial",fontsize="10pt"]
FOLDER1P [label="Folder: prod",fillcolor="white",fontname="Arial",fontsize="10pt"]

CONTROLLER1 [shape="box",label="Controller",fillcolor="lightskyblue1",fontname="Arial",fontsize="10pt"]

AGENT1D [shape="box",label="Agent: dev",fillcolor="darkolivegreen1",fontname="Arial",fontsize="10pt"]
AGENT1T [shape="box",label="Agent: test",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]
AGENT1P [shape="box",label="Agent: prod",fillcolor="darkolivegreen3",fontname="Arial",fontsize="10pt"]

JOC1 -> FOLDER1D [label="  assign Agent: dev  ",fontname="Arial",fontsize="10pt"]
JOC1 -> FOLDER1T [label="  assign Agent: test  ",fontname="Arial",fontsize="10pt"]
JOC1 -> FOLDER1P [label="  assign Agent: prod  ",fontname="Arial",fontsize="10pt"]

{ rank = same; FOLDER1D -> FOLDER1T [label="rollout",fontname="Arial",fontsize="10pt"] }
{ rank = same; FOLDER1T -> FOLDER1P [label="rollout",fontname="Arial",fontsize="10pt"] }

FOLDER1D -> CONTROLLER1 [label="deploy",fontname="Arial",fontsize="10pt"]
FOLDER1T -> CONTROLLER1 [label="deploy",fontname="Arial",fontsize="10pt"]
FOLDER1P -> CONTROLLER1 [label="deploy",fontname="Arial",fontsize="10pt"]

CONTROLLER1 -> AGENT1D [label="  deploy  ",fontname="Arial",fontsize="10pt"]
CONTROLLER1 -> AGENT1T [label="  deploy  ",fontname="Arial",fontsize="10pt"]
CONTROLLER1 -> AGENT1P [label="  deploy  ",fontname="Arial",fontsize="10pt"]


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 the Agent assignment having copied workflows between top-level folders to consider environmentsfor consideration of environments.
      • to deploy modified scheduling objects.
    • This approach denies use of Import/Export and use of Git Integration for rollout.

Single JOC Cockpit, Dedicated Controllers, Dedicated Agents


Flowchart
JOC1 [label="JOC Cockpit",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"]

FOLDER1D [label="Folder: dev",fillcolor="white",fontname="Arial",fontsize="10pt"]
FOLDER1T [label="Folder: test",fillcolor="white",fontname="Arial",fontsize="10pt"]
FOLDER1P [label="Folder: prod",fillcolor="white",fontname="Arial",fontsize="10pt"]

CONTROLLER1D [shape="box",label="Controller: dev",fillcolor="darkolivegreen1",fontname="Arial",fontsize="10pt"]
CONTROLLER1T [shape="box",label="Controller: test",fillcolor="darkolivegreen1",fontname="Arial",fontsize="10pt"]
CONTROLLER1P [shape="box",label="Controller: prod",fillcolor="darkolivegreen1",fontname="Arial",fontsize="10pt"]

AGENT1D [shape="box",label="Agent: dev",fillcolor="darkolivegreen1",fontname="Arial",fontsize="10pt"]
AGENT1T [shape="box",label="Agent: test",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]
AGENT1P [shape="box",label="Agent: prod",fillcolor="darkolivegreen3",fontname="Arial",fontsize="10pt"]

JOC1 -> FOLDER1D
JOC1 -> FOLDER1T
JOC1 -> FOLDER1P

{ rank = same; FOLDER1D -> FOLDER1T [label="rollout",fontname="Arial",fontsize="10pt"] }
{ rank = same; FOLDER1T -> FOLDER1P [label="rollout",fontname="Arial",fontsize="10pt"] }

FOLDER1D -> CONTROLLER1D [label="  deploy  ",fontname="Arial",fontsize="10pt"]
FOLDER1T -> CONTROLLER1T [label="  deploy  ",fontname="Arial",fontsize="10pt"]
FOLDER1P -> CONTROLLER1P [label="  deploy  ",fontname="Arial",fontsize="10pt"]

CONTROLLER1D -> AGENT1D [label="  deploy  ",fontname="Arial",fontsize="10pt"]
CONTROLLER1T -> AGENT1T [label="  deploy  ",fontname="Arial",fontsize="10pt"]
CONTROLLER1P -> AGENT1P [label="  deploy  ",fontname="Arial",fontsize="10pt"]


Explanation:

  • System Architecture
    • In this scenario a number of Controllers are connected to a single JOC Cockpit instance. Agents are dedicated to the 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 the same or to separate separate top-level folders in the JS7 - Inventory,
      • to deploy scheduling objects individually to the Controller that maps to the respective target environment.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.

Dedicated JOC Cockpits, Dedicated Controllers, Dedicated Agents


Flowchart
JOC1D [label="JOC Cockpit: dev",fillcolor="lightskyblue1",fontname="Arial",fontsize="10pt"]
JOC1T [label="JOC Cockpit: test",fillcolor="lightskyblue2",fontname="Arial",fontsize="10pt"]
JOC1P [label="JOC Cockpit: prod",fillcolor="lightskyblue3",fontname="Arial",fontsize="10pt"]

FOLDER1D [label="Folder: dev",fillcolor="white",fontname="Arial",fontsize="10pt"]
FOLDER1T [label="Folder: test",fillcolor="white",fontname="Arial",fontsize="10pt"]
FOLDER1P [label="Folder: prod",fillcolor="white",fontname="Arial",fontsize="10pt"]

CONTROLLER1D [shape="box",label="Controller: dev",fillcolor="darkolivegreen1",fontname="Arial",fontsize="10pt"]
CONTROLLER1T [shape="box",label="Controller: test",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]
CONTROLLER1P [shape="box",label="Controller: prod",fillcolor="darkolivegreen3",fontname="Arial",fontsize="10pt"]

AGENT1D [shape="box",label="Agent: dev",fillcolor="darkolivegreen1",fontname="Arial",fontsize="10pt"]
AGENT1T [shape="box",label="Agent: test",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]
AGENT1P [shape="box",label="Agent: prod",fillcolor="darkolivegreen3",fontname="Arial",fontsize="10pt"]

JOC1D -> FOLDER1D 
JOC1T -> FOLDER1T 
JOC1P -> FOLDER1P 

{ rank = same; JOC1D -> JOC1T [label="rollout",fontname="Arial",fontsize="10pt"] }
{ rank = same; JOC1T -> JOC1P [label="rollout",fontname="Arial",fontsize="10pt"] }

FOLDER1D -> CONTROLLER1D [label="  deploy  ",fontname="Arial",fontsize="10pt"]
FOLDER1T -> CONTROLLER1T [label="  deploy  ",fontname="Arial",fontsize="10pt"]
FOLDER1P -> CONTROLLER1P [label="  deploy  ",fontname="Arial",fontsize="10pt"]

CONTROLLER1D -> AGENT1D [label="  deploy  ",fontname="Arial",fontsize="10pt"]
CONTROLLER1T -> AGENT1T [label="  deploy  ",fontname="Arial",fontsize="10pt"]
CONTROLLER1P -> AGENT1P [label="  deploy  ",fontname="Arial",fontsize="10pt"]


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 lowmedium. 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.

Security Architecture

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: an 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.

Implications towards the system architecture include that

  • a single JOC Cockpit instance can be operated in one security level only,
  • use of multiple JOC Cockpit instances allows to use separate security levels.

Skill Set

Deployment

      • ,
      • 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 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 does not suggest complexity when used with is used within a single JOC Cockpit instance.

Selecting objects for deployment and knowing which object to deploy to which Controller when used with a common JOC Cockpit instance requires some discipline.

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, the choice 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 includes suggests to follow best practices for software development.

Typically we find

  • developers: persons who own skills for development in teams that 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 an environmentfor 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 configuration object types that are independent from a specific environment (dev, test, prod) and that can be rolled out across environments include:

  • Workflows
  • Resource Locks
  • File Order Sources
  • Notice Boards
  • Script Includes

...

Local Objects

The following configuration object types typically hold values that are specific for an individual environment (dev, test, prod) and therefore usually are added to a separate repository. Such objects are not rolled out across environments.

  • Job Resources
  • Calendars
  • Schedules

Export/Import for Rollout

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 about the nature of scheduling objects to be local to a specific environment or to be prepared for rollout across environments.

Git Repository Integration for Rollout

Prepare Objects for Rollout

The following measures are suggested per object type to allow rollout of a scheduling object without changes.

Workflows

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:

      Image Added

    • The good example makes use of an environment variable and optionally adds a fixed part to the Directory like this:

      Image Added

  • 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

xThe JS7 - Inventory Git Integration offers a number of options for rollout by use of the JS7 - Git Repository Interface.