Toggle Server Synchronization for Code Version Management

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Upgrading software on complex computer systems with multiple server systems and clients is challenging due to the need for synchronized code execution across different versions, especially when some clients require different code versions, leading to complexity in managing which version to use for execution.

Innovation Solution

A system utilizing toggle servers to centrally manage feature toggles, which are flags indicating whether specific code segments should be run, with dependencies and logical functions to ensure synchronized transition between code versions across servers, allowing each server to decide whether to run the updated or original version based on toggle values and dependencies.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If code upgrades are performed on multiple server systems simultaneously, then productivity is improved through faster deployment, but device complexity increases due to synchronization requirements across servers and clients

Engineering Contradiction:
Improvedeployment speedVSAvoidsynchronization complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

A toggle server is introduced as an intermediary component that centralizes the management of feature toggles. The toggle server receives requests from client systems, determines the appropriate code version based on toggle states and dependencies, and returns decisions to clients. This mediator architecture enables coordinated code version transitions across multiple servers and clients without requiring complex peer-to-peer synchronization mechanisms, thus improving deployment productivity while managing complexity through centralization.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Device complexity

If feature toggles are managed independently on each server, then device complexity is reduced, but reliability deteriorates due to inconsistent code version execution across the system

Engineering Contradiction:
Improvemanagement complexityVSAvoidcode version consistency
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The toggle server implements a feedback mechanism where it continuously monitors the states of multiple toggles and their dependencies. When a toggle state changes or a dependency relationship is established, the system evaluates the combined state to determine the appropriate code version. This feedback loop ensures that all servers and clients receive consistent decisions about which code version to execute, maintaining reliability while keeping individual server management simple.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The toggle server acts as a centralized intermediary that receives toggle state information from various servers, processes the dependency relationships, and distributes consistent code version decisions back to all participants. This mediator approach ensures that independent servers maintain simple local configurations while achieving system-wide consistency through the central coordination of the toggle server.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If toggle dependencies are evaluated centrally, then code version consistency is improved, but processing time increases due to dependency resolution across multiple toggles

Engineering Contradiction:
Improveversion consistencyVSAvoidtoggle evaluation time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary evaluation of toggle dependencies by pre-processing and caching the dependency relationships between toggles. When a code version decision is needed, the toggle server can quickly retrieve pre-analyzed dependency information rather than evaluating all dependency chains from scratch. This preliminary action reduces the processing time for toggle evaluation while maintaining the reliability of consistent code version selection across the distributed system.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10198256B2Synchronization of code execution
Publication Date: 2019.02.05 WORKDAY INC
  • US10198256B2 patent drawing
  • US10198256B2 patent drawing
  • US10198256B2 patent drawing

AI summary

A system for determining a toggle value includes an input interface and a processor. The input interface is to receive a request for the toggle value associated with a toggle. The processor is to determine an indicated toggle value associated with the toggle; determine the toggle value associated with the toggle based at least in part on the indicated toggle value and a set of dependencies; and provide the toggle value associated with the toggle.