Ring Deployment

[et_pb_section fb_built=”1″ admin_label=”Template Basic Section” _builder_version=”4.16″ global_colors_info=”{}”][et_pb_row admin_label=”Header Row” _builder_version=”4.27.4″ _module_preset=”default” collapsed=”off” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”][et_pb_image src=”https://mitchellberg.com/wp/wp-content/uploads/2025/02/banner_portfolio.png” alt=”My Portfolio” title_text=”banner_portfolio” admin_label=”Header Image” _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”][/et_pb_image][et_pb_menu admin_label=”Site Main Menu” _builder_version=”4.27.4″ _module_preset=”default” min_height=”31px” custom_padding=”||0px|||” global_colors_info=”{}”][/et_pb_menu][et_pb_text admin_label=”Expository Text” _builder_version=”4.27.4″ _module_preset=”default” custom_padding=”0px|||||” global_colors_info=”{}”]

Ring Deployment (“Patch for Neurons”, Ivanti, 2024)

Ring Deployment – allowing users to “test” patch content like any other software, in 2-3 successively larger “rings”,- was the biggest customer ask, once we rolled out Patch for Neurons itself.

We wanted to improve on what Microsoft did.   I think we achieved it.

[/et_pb_text][et_pb_divider _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”][/et_pb_divider][/et_pb_column][/et_pb_row][et_pb_row column_structure=”3_5,2_5″ admin_label=”Situation Row” _builder_version=”4.16″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”][et_pb_column type=”3_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_text admin_label=”Situation Text” _builder_version=”4.27.4″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”]

Situation

Once Patch for Neurons got out into the market, the biggest single “ask” was Ring Deployment (sometimes called Rollout or Campaign deployment) – allowing the users to structure the rollout of patches in “Rings”

  • A small “Test” ring of machines where the user would make sure there were no catastrophic problems with the patches
  • A larger, optional “early adopter” ring where the user would make sure the content was compatible with the full network
  • “Production” – the entire network.

[/et_pb_text][/et_pb_column][et_pb_column type=”2_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][/et_pb_column][/et_pb_row][et_pb_row column_structure=”3_5,2_5″ admin_label=”Task Row” _builder_version=”4.16″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”][et_pb_column type=”3_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_text admin_label=”Task Text” _builder_version=”4.27.4″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”]

Task

Add a “ring deployment feature to Patch for Neurons.  

Make it better than Microsoft’s ring deployment feature, which arbitrarily divides a network – whether 100 machines or 100,000 – into three groups (1% into a Test group, 9% into “early adopters”, and the remaining 90% into “Production”. 

 

[/et_pb_text][/et_pb_column][et_pb_column type=”2_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][/et_pb_column][/et_pb_row][et_pb_row column_structure=”3_5,2_5″ admin_label=”Action Row” _builder_version=”4.16″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”][et_pb_column type=”3_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_text admin_label=”Action Text” _builder_version=”4.27.4″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”]

Actions

There were two real functional requirements:

  1. Allow the user to view how rings were performing, and see problems emerging in a testing process
  2. Divide the network’s machines into “rings”, of roughly the same proportion as MIcrosoft’s model – but avoid some of the problems that model causes.

Ring Operations View

The Ring Operations View allows the user to see the progress of the patch content as it moves through the rings (figure 1), and the state of the devices who are the parts of the rings (figure 2).

[/et_pb_text][/et_pb_column][et_pb_column type=”2_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][/et_pb_column][/et_pb_row][et_pb_row column_structure=”3_5,2_5″ admin_label=”Action/Ring Ops Patch Row” _builder_version=”4.16″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”][et_pb_column type=”3_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_text admin_label=”Action/Ring Ops Patch Text” _builder_version=”4.27.4″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”]

Patch Operations View

The Patch state of the Ring Operations view showed the status of the content as it moved through the configured patches.   It was optimized to allow the user to zoom in on deployment problems using the active charts at the top of the page.

[/et_pb_text][/et_pb_column][et_pb_column type=”2_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_image src=”https://mitchellberg.com/wp/wp-content/uploads/2025/02/Ring-Ops-Patches.png” alt=”Patch state of the Ring Operations view.” title_text=”Ring Ops : Patches” show_in_lightbox=”on” admin_label=”Ring Opts/Patch Image” _builder_version=”4.27.4″ _module_preset=”default” border_radii=”on|1px|1px|1px|1px” global_colors_info=”{}”][/et_pb_image][/et_pb_column][/et_pb_row][et_pb_row column_structure=”3_5,2_5″ admin_label=”Action/Ring Ops Dev Row” _builder_version=”4.16″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”][et_pb_column type=”3_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_text admin_label=”Action/ Ring Ops Devs Text” _builder_version=”4.27.4″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”]

Device operations

The “Device” state of the ring operations view and monitor the status of attempted installations, across the network and (via the tabs) within each ring.  

The active graphics allowed the user to zoom in and redraw the grid to highlight the devices that were having problems – the ones they were actually interested in.

[/et_pb_text][/et_pb_column][et_pb_column type=”2_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_image src=”https://mitchellberg.com/wp/wp-content/uploads/2025/02/Ring-Ops-Devices.png” alt=”Device state of the Ring Operations view.” title_text=”Ring Ops : Devices” show_in_lightbox=”on” admin_label=”Ring Ops/Devices Image” _builder_version=”4.27.4″ _module_preset=”default” border_radii=”on|1px|1px|1px|1px” global_colors_info=”{}”][/et_pb_image][/et_pb_column][/et_pb_row][et_pb_row column_structure=”3_5,2_5″ admin_label=”Action / Config List Row” _builder_version=”4.16″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” collapsed=”off” global_colors_info=”{}”][et_pb_column type=”3_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_text admin_label=”Action Ring Opts List Text” _builder_version=”4.27.4″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”]

Ring Config List

As in most companies’ lines of software products, the word “configuration” gets overused.

For simplicity’s sake, I opted to have every patch settings configuration have a 1:1 relationship with a Ring Configuration.   Every Patch Configuration would show up in the Ring Config list – but if it didn’t ‘have rings configured, it’s should show as “Unconfigured”.  Otherwise, the top level ring operations state would display.  

[/et_pb_text][/et_pb_column][et_pb_column type=”2_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_image src=”https://mitchellberg.com/wp/wp-content/uploads/2025/02/Ring-Config-List.png” alt=”Ring Configurations for a system’s Patch configurations.” title_text=”Ring Config List” show_in_lightbox=”on” admin_label=”Ring Config List Image” _builder_version=”4.27.4″ _module_preset=”default” border_radii=”on|1px|1px|1px|1px” global_colors_info=”{}”][/et_pb_image][/et_pb_column][/et_pb_row][et_pb_row column_structure=”3_5,2_5″ admin_label=”Ring Configuration Row” _builder_version=”4.16″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”][et_pb_column type=”3_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_text admin_label=”Action Text” _builder_version=”4.27.4″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”]

Ring Assignment Wizard

Before rings can operate, they have to be configured.

Microsoft’s automatic ring configurator splits the user’s environment more or less arbitrarily into three rings:

  1. A Test ring (1% of the endpoints)
  2. An Early Adopter ring (9% of endpoints)
  3. The Production ring, with the remaining 90%.

This produces some problems:

  • There are some users and machines – C-suite execs, salespeople making critical presentations, vital servers – that the user absolutely does not want included in a test ring.
  • Microsoft’s model selects machines at random – without explicit regard for the applications on those machines that are being patched in the first place.

So I designed a multi-step ring configurator – a “Wizard”.  It walked the user through five steps:

  1. Specify the percentage of devices the user wants in each ring.   This can be skipped.  The user also specifies the minimum number of instances of each product (e.g. Chrome, Office 365, OSX) to be tested in each ring to create a valid test sample.
  2. Specify Devices and Device Groups that are to be included in the Test and Early Adopter rings.  If Step 1 is skipped, the user explicitly adds groups or devices to the rings.  If the user specified random sets in Step 1, these assignments will be in addition to the random set.
  3. Specify device groups or devices to exclude from rings.
  4. Ensure that, after making adjustments in steps 2-3, there are still enough instances of products being tested in each ring.
  5. Summary and adjustment.

[/et_pb_text][/et_pb_column][et_pb_column type=”2_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_image src=”https://mitchellberg.com/wp/wp-content/uploads/2025/02/Ring-Wizard-Step-1.png” alt=”Ring Wizard Step 1 – Random Selection of Devices” title_text=”Ring Wizard Step 1″ show_in_lightbox=”on” admin_label=”Wizard Step 1″ _builder_version=”4.27.4″ _module_preset=”default” border_radii=”on|1px|1px|1px|1px” global_colors_info=”{}”][/et_pb_image][et_pb_text admin_label=”Wiz 1 Caption” _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”]

Step 1 – sets the percentage of devides to be included in each ring, and tbe instances of each product to be included.   This step can be skipped.

[/et_pb_text][et_pb_image src=”https://mitchellberg.com/wp/wp-content/uploads/2025/02/Ring-Wizard-Step-3Dev.png” alt=”Ring Wizard, Step 3 (Device state)” title_text=”Ring Wizard Step 3Dev” show_in_lightbox=”on” admin_label=”Wizard Step 2a” _builder_version=”4.27.4″ _module_preset=”default” border_radii=”on|1px|1px|1px|1px” global_colors_info=”{}”][/et_pb_image][et_pb_image src=”https://mitchellberg.com/wp/wp-content/uploads/2025/02/Ring-Wizard-Step-2DG.png” alt=”Ring Wizard, Step 2 – Device Group state” title_text=”Ring Wizard Step 2DG” show_in_lightbox=”on” admin_label=”Wizard Step 2b” _builder_version=”4.27.4″ _module_preset=”default” border_radii=”on|1px|1px|1px|1px” global_colors_info=”{}”][/et_pb_image][et_pb_text admin_label=”Wiz 2 Caption” _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”]

Step 2 – If the user used the random assignment in Step 1, they add any desired  devices or groups to the rings. 

If random assignment was skipped, the user adds devices or device groups (e.g., a “Test” device group). 

[/et_pb_text][et_pb_image src=”https://mitchellberg.com/wp/wp-content/uploads/2025/02/Ring-Wizard-Step-3Dev.png” alt=”Ring Wizard, Step 3 (Device state)” title_text=”Ring Wizard Step 3Dev” show_in_lightbox=”on” admin_label=”Wizard Step 3a” _builder_version=”4.27.4″ _module_preset=”default” border_radii=”on|1px|1px|1px|1px” global_colors_info=”{}”][/et_pb_image][et_pb_text admin_label=”Wiz 3 Caption” _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”]

Step 3 – similarly, the user excludes devices or groups – e.g., the server group, the CEO – from desired testing rings.  (Everyone is in production). 

[/et_pb_text][et_pb_image src=”https://mitchellberg.com/wp/wp-content/uploads/2025/02/Ring-Wizard-Step-4.png” alt=”Ring Wizard Step 4″ title_text=”Ring Wizard Step 4″ show_in_lightbox=”on” admin_label=”Wizard Step 4″ _builder_version=”4.27.4″ _module_preset=”default” border_radii=”on|1px|1px|1px|1px” global_colors_info=”{}”][/et_pb_image][et_pb_text admin_label=”Wiz 4 Caption” _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”]

This is a big one.  The system compiles a list of all the applications that can be patched on the entire network (this was pre-existing functionality, which we leveraged).  If the user selects “random assignment”, the system attempts to ensure that the minimum number of instances of each application are tested.  This page warns the user if the number of instances of applcations falls below the threshold the user set in Step 1, so they can adjust accordingly. 

[/et_pb_text][et_pb_image src=”https://mitchellberg.com/wp/wp-content/uploads/2025/02/LoonTake1-2.png” title_text=”LoonTake1″ show_in_lightbox=”on” admin_label=”Wizard Step 5″ _builder_version=”4.27.4″ _module_preset=”default” border_radii=”on|1px|1px|1px|1px” global_colors_info=”{}”][/et_pb_image][et_pb_text admin_label=”Wiz 5 Caption” _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”]

This is a summary, which also allows the user to manually tweak device assignments. 

[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row column_structure=”3_5,2_5″ admin_label=”Results Row” _builder_version=”4.16″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”][et_pb_column type=”3_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_text admin_label=”Results Text” _builder_version=”4.27.4″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” global_colors_info=”{}”]

Results

Complex as it appears, ring deployment has performed well in usability tests.  It should be rolled out in April 2025. 

[/et_pb_text][/et_pb_column][et_pb_column type=”2_5″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][/et_pb_column][/et_pb_row][/et_pb_section][et_pb_section fb_built=”1″ admin_label=”Footer Section” _builder_version=”4.27.4″ _module_preset=”default” background_color=”rgba(12,113,195,0.15)” global_colors_info=”{}”][et_pb_row column_structure=”1_5,1_5,1_5,1_5,1_5″ admin_label=”Footer Row” _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”][et_pb_column type=”1_5″ _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”][et_pb_text admin_label=”Home Text” _builder_version=”4.27.4″ _dynamic_attributes=”link_option_url” _module_preset=”default” link_option_url=”@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF9saW5rX3VybF9wYWdlIiwic2V0dGluZ3MiOnsicG9zdF9pZCI6IjE2MCJ9fQ==@” global_colors_info=”{}”]

Home

Back to the top

[Home]

[/et_pb_text][/et_pb_column][et_pb_column type=”1_5″ _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”][et_pb_text admin_label=”WID Text” _builder_version=”4.27.4″ _module_preset=”default” hover_enabled=”0″ global_colors_info=”{}” sticky_enabled=”0″]

What I Do

All about the things I do and how I do them, and what I’ve achieved so far.

[/et_pb_text][/et_pb_column][et_pb_column type=”1_5″ _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”][et_pb_text admin_label=”Portfolio Text” _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”]

Portfolio

Links to illustrations and case studies of several important projects. (You’ll need to contact me for a password)

[Portfolio Page]

[/et_pb_text][/et_pb_column][et_pb_column type=”1_5″ _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”][et_pb_text admin_label=”Resume Text” _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”]

Resume

My most current resume.

[Resume]

[/et_pb_text][/et_pb_column][et_pb_column type=”1_5″ _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”][et_pb_text admin_label=”Contact Text” _builder_version=”4.27.4″ _module_preset=”default” global_colors_info=”{}”]

Contact Me

How to reach Mitch Berg

[Contact]]

[/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]