Polled flags vs pushed flags

A polled flag is cached in each instance and refreshed when its time ends. A pushed flag is cached for long, and a change message updates every instance at once. When you turn a flag off at 0:50, instances with a 5-minute cache run the feature in 149,950 replies. The limit is 3,000. Push passes.

Play the level

A canary before the whole fleetTap to change the deployment method

Canary · 5% of requests fail for 15 seconds · 750 failed requests

Case 1

3 API instances check a flag for 3,000 requests/s. The flag store restarts for 20 s at 0:20. At 0:50 the flag goes off. Fewer than 3,000 replies may still run the feature.

Case 1
Measure Goal Poll: 5-minute cache Push: change message
Error rate under 1% 0.6% Pass 0% Pass
Data mismatches under 3,000 149,950 Fail 600 Pass
p99 latency under 100 ms 26 ms Pass 26 ms Pass
Monthly cost 30 USD/mo 34 USD/mo
HTTP/2SQLSQLHTTP/2SQLUsersLoad balanc…1 vCPU · 1 GBPostgres2 vCPU · 2 GBAPI server1 vCPU · 1 GBLocal cache0.1 vCPU · 0.5 GBAPI server1 vCPU · 1 GBLocal cache0.1 vCPU · 0.5 GBAPI server1 vCPU · 1 GBLocal cache0.1 vCPU · 0.5 GB
HTTP/2HTTP/2SQLHTTP/2HTTP/2SQLHTTP/2HTTP/2SQLUsersLoad balan…PostgresAPI serverLocal cacheAPI serverLocal cacheAPI serverLocal cache
Poll: 5-minute cache: misses a goal
HTTP/2SQLHTTP/2SQLAMQPHTTP/2HTTP/2UsersLoad balanc…1 vCPU · 1 GBPostgres2 vCPU · 2 GBAPI server1 vCPU · 1 GBLocal cache0.1 vCPU · 0.5 GBAPI server1 vCPU · 1 GBLocal cache0.1 vCPU · 0.5 GBAPI server1 vCPU · 1 GBLocal cache0.1 vCPU · 0.5 GBManaged pub…1 vCPU · 1 GB
HTTP/2HTTP/2SQLHTTP/2HTTP/2SQLHTTP/2HTTP/2SQLHTTP/2HTTP/2HTTP/2UsersLoad bala…PostgresAPI serverLocal cac…API serverLocal cac…API serverLocal cac…Managed p…
Push: change message: meets the goals