Skip to main content
Version: development

Percentage Rollouts

Overview

Percentage rollout is a systematic procedure of gradually introducing a new feature to a segment of users. This practice mitigates potential risks associated with a full-scale release, allowing the team to gather user feedback and implement requisite modifications before launching the feature universally.

With Aperture, teams are empowered to control the launch of new features, gradually ramp up the load, and adjust in real-time based on service health feedback. This approach ensures that the introduction of new features does not cause any performance regressions, thereby reducing operational risk.

flowchart LR classDef Controller fill:#F8773D,stroke:#000000,stroke-width:2px; classDef Agent fill:#56AE89,stroke:#000000,stroke-width:2px; classDef Signal fill:#EFEEED,stroke:#000000,stroke-width:1px; classDef Service fill:#56AE89,stroke:#000000,stroke-width:2px; classDef On fill:#add8e6,stroke:#000000,stroke-width:1px; classDef Off fill:#ffb6c1,stroke:#000000,stroke-width:1px; Forward("Forward Crieria") --> Controller Reset("Reset Criteria") --> Controller subgraph "Controller" policy("Feature Rollout Policy") end Controller -- "Load Ramp 30%" --> Agent class Controller Controller subgraph " " Client -- "Incoming requests" --> Agent class Agent Agent class Client Service subgraph "Agent" Reg("Sampler 🎛️") end subgraph "Service" On("Feature On") class On On Off("Feature Off") class Off Off end class Service Service Agent -- "30%" --> On Agent -- "70%" --> Off end

This graph portrays the role of the Controller in actuating the rollout policy. The rollout policy defines the 'forward' and 'reset' criteria, which dictate when to roll forward or reset the feature, respectively. Based on these criteria, the Controller sends the defined load ramp percentage to the Agent. Subsequently, the Agent redirects traffic based on this percentage to the new feature of the service.

Example Scenario

Consider a scenario where a video streaming platform is planning to introduce a new interface design. Instead of releasing the new design to all users at once, the platform could use Aperture to facilitate a controlled rollout. With Aperture's load ramping policy, the new design could be gradually introduced to a select group of users, allowing the platform to gather feedback and make necessary adjustments. This strategy would enable the platform to continue releasing the new design to an increasingly larger user base, until it is eventually launched universally. Throughout this process, Aperture would ensure that the rollout doesn't impact the overall system performance, thereby minimizing operational risk.