Concepts
General
Feature
A capability of software, and it's constituent traffic flow through backend services - like 'product search', 'checkout' or 'settings'
Priority
An assigned number from 0-10 that defines the priority of a feature. Priority 0 features are highest priority, and priority 10 features are lowest. Features not assigned a prioirty are defaulted to 5.
Service
A piece of software that you operate or control, that is in a separate binary/runs independent of other code. Typically a 'Micro-service' in industry. A service owns one or many guards.
Third-Party Service
A service your code calls, but that you do not maintain the code for or operate. Examples are Stripe, RDS, GitHub, Firebase. A third-party service cannot own guards, but it may have calling guards.
Guarded Service
A service that Stanza is managing traffic inbound traffic to using guards, either in the service itself, or in the service's callers.
Environment
An environment of servers/deployments you maintain, either for production or for testing. 'dev', 'qa', 'prod', etc.
Project
Projects are simple grouping buckets to make things easy to search for and assign security permissions to. You will assign all features and services to a project.
Timeline
Updates to the guards, features, projects, and key objects will automatically be logged, and these events make up the timeline.
Back-End
Server SDK
The Stanza traffic flow control and telemetry SDK primarily for application and server development in common systems languages such as java, golang, python, or node.
Guard
A Stanza library wrapper for a code block (or set of code blocks within a single binary) in a service. Guards can support one or more features at a time, and have three types:
Inbound Guard
A guard running as an application middleware that guards a service by regulating incoming requests. These are part of request handlers for inbound requests. They allow load to be shed if necessary as requests enter the service which includes the ingress guard
Outbound Guard
A guard wrapping an outgoing call to another service, guarding the service at the caller. These wrap outbound requests, and provide a place where we can shed load before requests leave the service which includes the egress guard
Internal Guard
Any piece of code may be wrapped in a guard. The code block may make outbound requests, or it may simply do something "expensive" locally.
QPS
Queries Per Second - the number of queries that a service can handle per second.
When calling a rate-limited third party service (Stripe, GitHub) QPS is a set number.
When calling a non-rate limited service like RDS Postgres, ElasticSearch, or another microservice, QPS can be determined by load testing or though metrics.
UI Concepts
UI Toolkit
The Stanza browser based traffic flow control SDK which sends telemetry and receives configuration updates from the Stanza Hub based on control plane calculations and user preferences around features and priorities.
Stanza Config
The Stanza Config defines the configuration for Stanza in the browser - including things like API key, environment, and context.
Context
A context is a group of features that you would like to load, store and refresh together. Most likely they are on the same page, or within the same route.
Enablement Number
Because Stanza stops requests from happening to manage load, it also must have a safe way to restart them. Restarting all requests at once creates a potentially dangerous thundering herd (opens in a new tab) problem as they all slam in.
Instead, traffic is re-enabled over time. To do this, clients are randomly assigned an enablement number
between 0 and 99. Clients with a low enablement number will have requests re-enabled before clients with a high one.
If you don't want to worry about this, you don't have to. However, the UI toolkit provides an override in case you want to ensure some customers are re-enabled first. Just remember to keep the distibution fairly even or the thundering herd comes back!