Insights  /  Cloud

Cloud engineering and SRE for small teams

Service level objectives, observability and reducing toil, sized for a team of five rather than five hundred.

Microsoft AzureGoogle CloudAmazon Web Services

Site reliability engineering was invented to manage systems at a scale most organisations will never reach, but the ideas behind it are sound enough that a five-person team can apply them without a dedicated SRE function, expensive tooling, or a library of runbooks nobody will ever read. The key is borrowing the thinking while resizing the effort to match reality.

What site reliability engineering actually means

At its core, site reliability engineering is the practice of treating reliability as a deliberate feature of a product rather than something that is hoped for after launch. The discipline emerged from the recognition that the gap between software that mostly works and software that users can depend on is not bridged by heroics or individual effort, but by systematic measurement, honest target-setting, and a clear-eyed view of what each increment of reliability costs.

For a small team, the most valuable thing to take from SRE practice is not a specific tool or process. It is the habit of asking two questions before shipping anything: what does reliable mean for this service, and how will we know when we are meeting that standard? Everything else follows from those questions.

Service level indicators, objectives and error budgets

Three terms appear throughout SRE literature and they are more straightforward than the jargon suggests. A service level indicator is a quantitative measure of some aspect of service behaviour as experienced by users. Common examples include the proportion of requests that complete successfully, the time taken to respond at a given percentile, or the fraction of scheduled jobs that finish within an acceptable window. The point is that the indicator reflects something a real user would notice if it degraded.

A service level objective is the target you set for an indicator over a defined period. A team might commit to ensuring that ninety-nine and a half percent of requests to their payments API complete successfully over any rolling thirty-day window. The objective is an internal standard, not a published customer contract; it exists to guide engineering decisions rather than to expose the organisation to commercial liability. Setting that target before an incident occurs is what gives it credibility.

An error budget is the amount of failure the objective permits. If ninety-nine and a half percent of requests must succeed, then half a percent may fail. When the budget is healthy, the team has room to move quickly and take measured risks. When it is close to exhausted, the budget signals that it is time to slow down and concentrate on the underlying causes of unreliability rather than shipping new features. This is what makes the error-budget idea practically valuable for small teams: it converts the perennial argument between reliability and velocity into a data-driven conversation.

Observability without building your own stack

Observability is the property of a system that allows you to understand its internal state from the outputs it produces. In practice that means three kinds of output: logs that record discrete events, metrics that track aggregated measurements over time, and traces that follow a request across multiple services. Together they give an engineering team the information needed to diagnose failures, understand trends, and make informed capacity decisions.

For a small team the practical guidance is to avoid building a custom observability stack. All three major cloud providers offer capable, fully managed monitoring services. AWS provides CloudWatch Logs, CloudWatch Metrics, X-Ray for distributed tracing, and Application Signals built on open standards. Azure provides Azure Monitor, Application Insights, and Log Analytics Workspaces. Google Cloud provides Cloud Monitoring, Cloud Logging, and Cloud Trace. Each of these offerings is mature, integrates with the surrounding platform, and requires no infrastructure for the team to operate.

The most sensible approach to instrumentation is to emit telemetry using OpenTelemetry, the vendor-neutral standard maintained by the Cloud Native Computing Foundation. Instrumenting once against an open standard means the signals can be routed to whatever backend the team chooses, whether that is a provider-native service today or a specialist third-party platform later. It avoids lock-in to any single vendor's instrumentation libraries and keeps options open without requiring a rewrite.

In terms of sequencing, structured logging should come first because it is the most useful signal during an incident. Basic latency and error-rate metrics follow. Distributed tracing is worth adding once a service genuinely spans multiple components and the cost of hunting through logs without a trace becomes apparent. Doing all three at once before a service has users is work that does not yet have a return.

Reducing toil through good defaults

Toil, in SRE terms, is manual, repetitive work that scales linearly with service growth and produces no durable improvement. Deploying an environment by hand, running a migration script on a schedule, restarting a process that dies overnight: these are all toil. For a small team toil is not just inefficient; it is genuinely threatening, because there is no slack capacity to absorb it.

The most reliable way to reduce toil is to default to managed services, infrastructure as code, and automated delivery from the beginning rather than retrofitting them later. The three work together. Managed services remove entire categories of operational work by delegating them to the cloud provider, so the team is not responsible for patching, replication configuration, or backup schedules on the underlying infrastructure. Infrastructure as code ensures that every environment is reproducible from source control and serves as living documentation of the architecture, which matters when the person who provisioned a resource is no longer available. Our guide on landing zones and infrastructure as code covers the foundations in more detail. Automated delivery pipelines are arguably the single most effective reliability investment available to a small team: consistent, repeatable deployments eliminate entire categories of human error and reduce the cognitive load of shipping.

The goal is an operational baseline in which routine tasks, provisioning, scaling, and deploying, require no manual intervention. On-call engineers should be responding to genuine incidents, not performing maintenance that could have been automated.

Incident response and blameless reviews at small-team scale

Incidents are inevitable regardless of how well a team has prepared. The question is whether the organisation has a consistent, low-friction way to handle them that does not exhaust people or leave the same problems unsolved.

For a small team, incident response does not need to be elaborate. Clear ownership during an incident matters more than process: one person drives the response, findings are recorded in a shared document as the investigation progresses, and external communication is handled separately from the technical work. A dedicated channel and a simple document template are sufficient for most organisations of this size.

After an incident, a blameless postmortem converts the experience into institutional knowledge. Blameless does not mean without consequences; it means the analysis focuses on what in the system or process made the failure possible, rather than on identifying an individual to hold responsible. The output should be a short list of concrete action items with owners and due dates. A postmortem that is never read has no value.

On-call arrangements need to be sustainable. A rotation that covers the same people every week without relief is not a rotation; it is a path to attrition. Even a simple weekly rotation across three or four engineers, with documented escalation paths and basic runbooks, reduces the exhaustion that makes on-call miserable. Alert fatigue is the most common source of on-call suffering and is almost always a measurement problem: if alerts fire for conditions that do not require human action, they should be suppressed or reclassified, not ignored.

The honest trade-off between reliability, cost and speed

Higher reliability costs more, in cloud spend, in engineering time, and in the slower pace that comes from being more careful. A second availability zone, a standby replica, a more thorough test suite: each increment of reliability has a price. The value of explicit service level objectives is that they make these trade-offs visible. Once a team has agreed on what reliable enough means for each service, infrastructure decisions can be evaluated against that standard instead of defaulting to either over-engineering or ignoring reliability altogether.

For most small teams the right objectives are lower than engineers instinctively want them to be. An internal administration tool probably does not need the same availability target as a customer-facing checkout flow. Being precise about which services genuinely require high availability allows investment to be concentrated where it has the most impact, and cost to be reduced everywhere else. Our post on cloud cost optimisation for startups addresses the relationship between reliability targets and infrastructure spend in more detail.

The same reasoning applies to tooling decisions. Before building a custom reliability dashboard or an in-house incident management system, it is worth understanding what the cloud provider already supplies. For context on when building something custom is genuinely worthwhile, see our analysis of build versus buy.

How Lambdaserve approaches reliability work

Lambdaserve is a South African software studio and cloud-engineering practice working across Azure, Google Cloud, and AWS, with AWS engagements delivered in partnership with Datagnu. When we engage with a team on reliability, the starting point is always an honest assessment of what the business needs from its systems before any tooling or process changes are recommended.

In practice this means helping teams define their first meaningful service level objectives, connecting observability to provider-native services and open-standards instrumentation, building the infrastructure-as-code foundations that reduce toil, and putting in place enough incident-response process to avoid chaos without creating bureaucracy. The aim is a posture the team can own and sustain independently, not a dependency on continued external support.

Written by the Lambdaserve team as general, informational guidance for founders and engineers. It is not legal, financial or tax advice. Third-party product names, programmes and logos belong to their respective owners and are referenced for identification only.

Building something? Let's talk.

We bring the products and the engineering.

hello@lambdaserve.com