Why SOASAP
Why SOASAP's local-first runtime differs from remote-evaluation feature flag systems — and what that means for latency, reliability, and production operations.
Why teams choose SOASAP
Most feature flag platforms evaluate flags at request time — each read may call a remote service or relay. SOASAP is built around local evaluation: SDKs hold a synchronized snapshot in memory and resolve flag values without network calls on the hot path.
- O(1) local evaluation — constant-time reads from an in-memory snapshot
- No network requests during evaluation — sync runs in the background, not on the request path
- Real-time synchronization via SSE — configuration changes push when they occur
- Persistent cache across restarts — snapshots restore from disk on cold start
- Offline operation during outages — the last known snapshot continues to serve
- Consistent behavior across SDKs — the same runtime contract on every platform
The result is lower latency, reduced infrastructure dependency, and more predictable production behavior.
Introduction
Most feature flag platforms optimize for dashboards, targeting rules, and management workflows. Those capabilities matter for operators, but they are not what your application executes on every request.
SOASAP focuses on runtime behavior. The critical question is not where a flag is created — it is how evaluation behaves inside production applications when traffic spikes, networks partition, or you need to disable a feature immediately.
That focus shapes five architectural pillars:
- Local evaluation — flag reads are in-memory lookups, not remote API calls
- Real-time synchronization — configuration changes propagate over SSE, not poll intervals
- Persistent cache — snapshots survive process restarts and cold starts
- Offline-first operation — evaluation continues from the last known snapshot when the control plane is unreachable
- Unified SDK architecture — every official SDK implements the same runtime contract
This page explains why those choices exist and what operational outcomes they produce. It assumes you already understand feature flags; it does not re-teach the concept.
Traditional feature flag platforms vs SOASAP
| Traditional platforms | SOASAP |
|---|---|
| Polling | SSE — push-based updates on change |
| Request-time evaluation | Local evaluation — in-memory snapshot reads |
| Network dependency | Local snapshot — connectivity required only for background sync |
| Cold-start fetch | Persistent cache — restore snapshot before first SSE frame |
| Divergent SDK behavior | Unified SDK architecture — same runtime model across platforms |
Why this matters
Feature flags are frequently evaluated on hot paths — per-request routing, kill switches, feature gates in tight loops, and runtime configuration checks under load.
How a platform evaluates flags directly affects:
- Latency — remote evaluation adds RTT and relay hops to every read
- Startup behavior — cold starts may block on the first network fetch without persistent cache
- Resilience — control-plane outages can stall request handling when evaluation is remote
- Operational safety — kill switch propagation speed depends on sync model, not poll intervals
SOASAP treats flags as local configuration with background synchronization — not as another service dependency on the request path.
Local evaluation vs remote evaluation
Traditional feature flag systems often evaluate at request time. The application asks a remote service — or a relay in front of it — for the current flag value before continuing work.
SOASAP inverts that dependency. The SDK maintains a local snapshot synchronized in the background. Evaluation reads that snapshot directly.
SOASAP performs no network requests during evaluation. Every read is an in-memory lookup — effectively O(1) per flag key. Sync is background infrastructure; the hot path does not wait on SOASAP Cloud.
That distinction has direct production consequences:
| Dimension | Remote evaluation | SOASAP local evaluation |
|---|---|---|
| Latency | Includes vendor RTT, relay hops, and cache miss penalties on the request path | Bounded by in-process memory access; no network hop per read |
| Reliability | Flag availability couples to control-plane and network health during each request | Reads succeed as long as a snapshot exists locally; sync failures do not block evaluation |
| Network dependency | Every evaluation may require connectivity to a remote evaluator | Connectivity required only for background synchronization |
| Scalability | Read volume multiplies outbound calls to the flag service or relay tier | Read volume stays local; control-plane load scales with connected SDKs, not per-request fan-out |
Under high traffic, remote evaluation turns every flag check into a potential synchronous dependency. A service handling millions of requests per minute does not add another network hop per flag read without affecting tail latency and failure domains. Local evaluation keeps flag checks off the critical path.
Deep dive: Local Evaluation.
Why real-time SSE
Local evaluation requires a current snapshot. The question is how updates reach running applications.
Polling asks the server repeatedly whether anything changed. Even with efficient delta endpoints, polling introduces:
- Delayed updates — changes apply only after the next poll interval
- Repeated requests — every instance polls on a schedule regardless of whether flags changed
- Unnecessary traffic — steady-state overhead grows with fleet size and poll frequency
Server-Sent Events (SSE) push updates when they occur:
- Push-based updates — the control plane notifies subscribers on change
- Immediate propagation — healthy connections receive deltas within milliseconds
- Lower steady-state overhead — one long-lived stream per SDK replaces periodic full or delta polls
Kill switches and operational rollbacks depend on propagation speed. A 30-second poll interval means a disabled feature may remain active across your fleet for up to 30 seconds. SSE treats flag changes as live configuration events, not cache refresh luck.
Each SDK opens an SSE stream scoped to its environment API key, applies incoming deltas atomically, and reconnects with backoff on disconnect while continuing to serve the last known snapshot.
Deep dive: Real-Time Synchronization.
Why persistent cache
In-memory snapshots alone do not survive process restarts. Without disk-backed state, every cold start must wait for the network before flags are trustworthy.
SOASAP SDKs persist the latest snapshot to local storage. Startup restores cache first; synchronization catches up in the background.
This matters in environments where processes restart frequently:
- Cold starts — serverless and scale-to-zero runtimes can evaluate flags before the first SSE frame arrives
- Container restarts — orchestrator health checks and first requests do not block on SOASAP availability
- Rolling deployments — new pods serve traffic with the previous snapshot while SSE connects
- Autoscaling events — new instances join the fleet without a synchronous bootstrap call to the control plane
Storage mechanism varies by platform — disk files, DataStore, AsyncStorage, app sandbox storage — but the runtime model is identical: restore, serve, sync.
Deep dive: Persistent Cache and Non-Blocking Startup.
Why offline-first
Production networks and third-party services fail. A feature flag system that blocks evaluation when the control plane is unreachable adds a synchronous dependency to every hot path that checks a flag.
SOASAP SDKs continue evaluating from the last known snapshot when:
| Condition | Application behavior |
|---|---|
| SOASAP Cloud unavailable | Evaluation continues from cached snapshot; dashboard changes queue until connectivity returns |
| Internet unavailable | Same — local snapshot serves reads; no request-path timeouts against SOASAP |
| Temporary network partition | Bounded staleness; application remains functional with last synced state |
| SSE disconnect | Automatic reconnect with backoff; evaluation unchanged until sync resumes |
The design principle is explicit: prefer stale data over unavailable data. A kill switch frozen at false during an outage is operable — users see the safe path. A flag read that throws or times out on every request is not.
That is a deliberate trade-off. You accept bounded staleness during partitions in exchange for continued request handling. Not every flag tolerates staleness equally — operational runbooks should document which flags are safe to freeze and which require freshness guarantees.
Deep dive: Offline Operation.
Unified SDK architecture
Most platforms evolve SDKs independently. Capabilities diverge: one runtime gets streaming sync, another polls; one persists to disk, another does not; startup semantics differ across languages.
SOASAP SDKs intentionally share the same runtime model. Every official SDK implements:
- Local evaluation — O(1) reads from an in-memory snapshot
- SSE synchronization — push-based updates from SOASAP Cloud
- Persistent cache — snapshot survives process restarts
- Offline operation — last-known snapshot when the network or API is down
- Non-blocking startup — restore cache and sync in the background; preload so hosts do not await first fetch
| Capability | All SDKs |
|---|---|
| Local evaluation | ✓ |
| SSE synchronization | ✓ |
| Persistent cache | ✓ |
| Offline operation | ✓ |
| Non-blocking startup | ✓ |
Consistency matters for multi-platform teams. A mobile client, a Node.js API, and a .NET worker can reason about the same failure modes, startup sequence, and rollback behavior without per-platform caveats.
Platform guides: SDK Installation.
Production outcomes
The architectural decisions described above are not implementation details.
They directly influence latency, startup behavior, outage resilience, deployment safety, and operational control in production systems.
Architecture choices translate into measurable operational behavior. Each outcome below maps directly to a design decision on this page — not to dashboard features.
| Outcome | Architectural basis |
|---|---|
| Lower request latency | Local evaluation removes per-read network hops; tail latency no longer includes vendor RTT |
| Faster deployments | Code ships independently of flag state; activation is a configuration change, not a redeploy |
| Safer rollbacks | Kill switches propagate over SSE immediately; disabling a feature does not require a new artifact on the critical path |
| Reduced infrastructure dependency | Request paths do not synchronously depend on SOASAP Cloud uptime for flag reads |
| Better outage resilience | Offline-first operation serves the last snapshot during control-plane or network failures |
| Predictable runtime behavior | Unified SDK contract means the same evaluation, cache, and sync semantics across every platform |
These outcomes compound. A team running high-throughput services, frequent deploys, and multi-platform clients benefits when flag infrastructure behaves like local configuration with background sync — not like another service on the request path.
Related: Production Safety.
SOASAP at a glance
- ✓ O(1) local evaluation
- ✓ Real-time SSE synchronization
- ✓ Persistent cache
- ✓ Offline-first operation
- ✓ Non-blocking startup
- ✓ Unified SDK architecture
These properties define how SOASAP behaves in production — before you dive into platform-specific SDK guides or architecture deep dives.
Summary
SOASAP is not differentiated by dashboard features or targeting rule editors. It is differentiated by runtime architecture — how flags are evaluated, synchronized, cached, and served when production systems fail.
The core model is straightforward:
- Evaluate locally — O(1) in-memory reads on the hot path
- Synchronize in real time — SSE pushes changes when they occur
- Persist state — snapshots survive restarts and cold starts
- Remain operational during outages — serve the last known snapshot rather than failing requests
Continue with:
- Architecture — Local Evaluation — evaluation model and read path
- Real-Time Synchronization — SSE lifecycle and reconnect behavior
- Persistent Cache — cold starts and storage
- Offline Operation — failure modes and staleness trade-offs
- Quick Start — evaluate a flag in minutes
Background: What is SOASAP and Core Concepts.