Technical Guide April 11, 2022 3 min read

Microservices with 99.7% Uptime: How We Meet Enterprise SLAs

Our architecture and operations principles for 99.7% uptime — circuit breakers, health checks, blue-green deployments, and incident response.

Deka Technology
Software Engineering
microservicesuptimeSLAreliability

Enterprise clients do not negotiate uptime as an aspirational target. They negotiate it as a contractual obligation. When Deka Technology commits to 99.7% uptime for a microservices platform, that commitment translates to less than 22 hours of downtime per year — across all services, deployments, infrastructure events, and dependency failures. Meeting that commitment consistently, across clients in regulated and non-regulated industries, requires systematic reliability engineering rather than heroic intervention after incidents.

Defining the Right SLIs and SLOs

Before designing for reliability, you must define what reliability means for the specific system. We start every engagement with SLI (Service Level Indicator) definition workshops with the client's technical and business stakeholders. The wrong SLIs produce the right numbers against the wrong outcomes. For most B2B platforms, the SLIs that matter are: request success rate (4xx and 5xx responses as a fraction of total), latency at P95 and P99 (not average — average hides the tail), and data freshness for systems with eventual consistency requirements.

A 99.9% success rate sounds impressive until you realize that 0.1% of requests on a platform processing 10 million transactions per day means 10,000 failed transactions daily. SLO definition is a business conversation, not a technical one.

Circuit Breaker Pattern in Practice

Microservices fail at the dependency level more often than at the service level. A payment microservice that calls a fraud detection service is only as reliable as the fraud detection service — unless it is designed otherwise. We implement the circuit breaker pattern using Resilience4j (JVM services) or Polly (.NET services) with three states: closed (normal operation), open (dependency is failing, fast-fail all requests rather than queuing them to time out), and half-open (probing for recovery). Circuit breaker thresholds — failure rate percentage and slowness rate percentage — are calibrated per dependency based on observed baseline behavior, not generic defaults.

Health Checks and Readiness Probes

Stay ahead in enterprise tech.

Get our latest insights — no spam, unsubscribe anytime.

Kubernetes liveness and readiness probes are the first line of defense against degraded services receiving traffic. We define three probe types for every service: liveness (is the process alive? — restart if not), readiness (is the service ready to handle traffic? — remove from load balancer if not), and startup (is the service still initializing? — do not count startup as a liveness failure). Readiness probes test actual dependency connectivity — database connection pool health, downstream service reachability — not just process status. A service that is alive but cannot reach its database must be removed from rotation immediately.

Blue-Green Deployments for Zero-Downtime Releases

Our standard deployment strategy for enterprise platforms is blue-green with automated smoke testing. The new version (green) is deployed alongside the existing version (blue), smoke tests run against the green environment using production traffic shadows, and traffic is shifted in weighted increments (10% → 50% → 100%) with automated rollback if error rate exceeds the SLO threshold at any increment. The entire traffic shift sequence completes in under 15 minutes. If the green deployment fails at any increment, rollback to 100% blue is automatic and completes in under 60 seconds.

Incident Response Runbooks

Reliability engineering is 80% preparation and 20% response. Every service we operate has a structured runbook covering: alert definition and severity classification, initial triage steps (what to check first, in what order), escalation contacts per severity level, common failure modes and their remediation procedures, and rollback instructions. Runbooks are version-controlled alongside the service code and are referenced directly from alert notifications. An on-call engineer receiving a PagerDuty alert sees the runbook link in the alert body — they do not search for it under incident conditions.

Common Incident Patterns in Enterprise Platforms

The incidents that typically contribute most to downtime in enterprise microservices platforms include: third-party service outages (mitigated by circuit breakers that isolate impact to the affected flow), Kubernetes node failures during cluster upgrades (mitigated by pod anti-affinity rules that limit blast radius), and database connection pool exhaustion (often caused by misconfigured connection limits in new service versions). Systematic post-incident reviews that improve runbook libraries are essential for continuous reliability improvement.

microservicesuptimeSLAreliabilityKubernetesDevOps
Share

Want to learn more about this topic?

First consultation is free — no strings attached.

Talk to our experts
All articles
Related Articles
Technical Guide

FieldSales: Offline-First Architecture for 45,000 Field Representatives

How we built our FieldSales platform with offline-first design for areas without network coverage — synchronization, conflict resolution, and lessons learned.

Technical Guide

DekaFlow: How We Built an Enterprise BPM Platform with Camunda

The architecture decisions behind DekaFlow — our Camunda-based BPM platform for process automation in enterprise environments.

Technical Guide

.NET Legacy Modernization: How We Gradually Replace Monolithic Systems

Our proven approach to gradually modernizing .NET monoliths — Strangler Fig pattern, domain-driven design, and zero-downtime migration.

Let's build something that works.

First consultation is free.

Get in Touch