You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Introduction

Rollout strategies imply to determine procedures how to rollout scheduling objects such as JS7 - Workflows, JS7 - CalendarsJS7 - Schedules etc. between scheduling environments, for example from dev -> test -> prod environments.

Applicable strategies are determined by 

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 across 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



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 instance. 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 Export/Import and use of Git Integration for rollout.

Single JOC Cockpit, Dedicated Controllers, Dedicated Agents



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 instance. 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 Export/Import and use of Git Integration for rollout.

Dedicated JOC Cockpits, Dedicated Controllers, Dedicated Agents



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,
      • to deploy scheduling objects individually from each JOC Cockpit that maps to the respective environment.
    • This approach allows use of Export/Import 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 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

Consider Agent Assignments

Agents are registered with a specific Controller, they are not shared between Controllers.

  • Agents are assigned a Job in a Workflow by use their Agent Name.
  • Agent Names frequently are specified from the host name for which the Agent is operated, such as drx6834. Such practice should be reconsidered as it forces to modify Agent assignment of a Job when the Workflow is rolled out across environments.
  • Instead, during registration with a Controller in addition to the Agent Name Agents can be assigned one or more Alias Names.
    • It is good practice to use generic Alias Names, such as accountingAgent, During rollout the Job's Agent assignment can remain unchanged provided that for each environment we find an Agent with the same Alias Name.
    • This includes that in a dev environment we might find fewer Agent instances than in a prod environment. Using more Alias Names for the same Agents in the dev environment maps to use of more Agents in the prod environment.

Determine Rollout Objects and Local Objects

A number of objects suggest to be rolled out across environments without 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 can be 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 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 scheduling objects without changes.

Suggested measures should not be considered a recommendation but a proposition that users might have perfect reasons not to apply.

Workflows

  • JS7 - Workflows should not include hard-wired values such as directories.
  • Workflows can be parameterized
  • Use of the JS7 - Cycle Instruction requires attention as it can be considered a competing though by far more efficient means to specify periods for repeated execution. As a rule of thumb
    • cycles in a workflow should be the same across environments,
    • orders that trigger execution of a cyclic workflow for a specific day can be specific for an environment and are created by Schedules.

Resource Locks

  • Except for testing purposes with changing capacities of JS7 - Resource Locks there is hardly any 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:



  • 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

The JS7 - Script Includes are added to job scripts.

  • Users can decide to add hard-wired values to the content of Script Includes to make them specific for an environment.
  • Users can make use of global environment variables in Script Includes that for example are injected by JS7 - Job Resources.

Job Resources

The JS7 - Job Resources suggest to be used specifically for an environment.

Calendars

The JS7 - Calendars are a flexible means to determine days for order execution:

  • Calendars allow to select hard-wired dates.
  • Calendars offer to use rules for repeated execution such as Monday to Friday, every 2nd Monday, every 3rd day of month etc.

The number of Calendars can be reduced as the JS7 - Schedules offer restrictions to further limit days for order execution:

  • A generic business day Calendar could specify Monday to Friday for most order executions.
  • A number of Schedules can use the same business day Calendar restricting order execution for example to Monday, every 4th Thursday etc.

Users should take a design decision about their Calendars to be generic across environments or to be specific for an environment.

Schedules

The JS7 - Schedules basically can be considered to be specific for an environment:

  • For testing purposes Schedules in a test environment might use more frequent periods for order execution, for example a job developer might not want to wait for end of month to test a job related to accounting.
  • Control of Schedules and of the JS7 - Daily Plan is a core competency of operators in prod environments. Importing Schedules from a dev or test environment somewhat puts control at risk.



  • No labels