All articles
Switch to dark mode
Translate

What is SRE? A Simple Guide for Everyone

Frengky Soritua ManurungFrengky Soritua Manurung
··9 min read
What is SRE? A Simple Guide for Everyone

Share this article


1. What is SRE?

Site Reliability Engineering (SRE) is an engineering discipline focused on one main goal: making sure software systems are reliable, available, scalable, and fast.

That's a lot of big words, so let's break it down into plain language:

  • Reliable — the system works the way it's supposed to, every time.
  • Available — the system is up and reachable when users need it.
  • Scalable — the system can handle more users or more traffic without falling over.
  • Performant — the system responds quickly, without annoying delays.

SRE exists because keeping all four of these things true, all the time, is genuinely hard. Systems today aren't just one server running one program. They're made of dozens of small, connected pieces (as you'll see in the diagram below), and any one of those pieces can break and cause problems for real users.

The Core Idea Behind SRE

The fundamental idea of SRE can be summed up in one sentence:

Reliability should be treated as an engineering problem, not an operational chore.

This is the heart of the whole philosophy, so let's slow down and unpack it.

In the old way of thinking, "keeping the system running" was seen as a kind of janitorial task — something you do after the real engineering work is finished. A team builds a product, ships it, and then a separate group of people is left to babysit it: restarting servers when they crash, watching dashboards, and firefighting whenever something breaks.

SRE flips that idea on its head. It says: reliability itself is a feature that must be engineered, just like any other feature of the product. That means:

  • You don't just react to outages — you design systems so outages are less likely in the first place.
  • You don't rely on someone manually noticing a problem — you build automation and monitoring that notices and reacts for you.
  • You don't treat "the system is down" as bad luck — you treat it as a signal that something in the design needs to improve.

What SRE Teams Actually Do, Day to Day

Instead of manually operating systems and reacting to every fire, SRE teams spend their time on a handful of core activities:

  • Automate repetitive operational work — If a task is done manually more than once or twice, an SRE team will usually try to write a script or a tool to do it automatically. This reduces human error and frees people up for more valuable work.
  • Define measurable reliability targets — SRE teams don't just say "we want the system to be reliable." They set specific, measurable goals (often called SLIs, SLOs, and SLAs) — for example, "99.9% of requests must succeed" or "the checkout page must load in under 2 seconds." Numbers make reliability something you can actually track and improve.
  • Monitor system health proactively — Rather than waiting for a customer to complain that something is broken, SRE teams set up dashboards, alerts, and logs that flag problems the moment they start — often before users even notice.
  • Reduce operational toil — "Toil" is SRE-speak for the repetitive, manual, low-value work that comes with running a system (like restarting a stuck service every day). SRE teams actively work to eliminate this kind of work so people can focus on improving the system instead of just keeping it alive.
  • Design for failure from the start — SRE teams assume that things will break — a server will crash, a network will hiccup, a database will slow down. Instead of hoping this never happens, they build systems that can handle failure gracefully (for example, automatically restarting a crashed piece, or routing traffic around a broken part).
  • Balance reliability with feature delivery — This is one of the trickiest parts of SRE. A company always wants to ship new features quickly, but every new feature is also a new opportunity for something to break. SRE teams help find the right balance — moving fast, but not so fast that the system becomes unstable.

A Real-World Example: An E-Commerce Platform on Kubernetes

To make all of this concrete, let's look at a simplified example of an e-commerce platform running on Kubernetes, a popular system for running applications made up of many small, connected services.

Kubernetes microservices architecture and traffic flow for an e-commerce platform: users → load balancer → ingress gateway → frontend / order / payment / inventory services → database.

Here's how traffic flows through the system, step by step:

  1. Users open the website or app on their phone or computer.
  2. Their request first hits a Load Balancer (in this example, an AWS Network Load Balancer). Its job is to spread incoming traffic evenly across the system so no single part gets overwhelmed.
  3. From there, traffic passes through an Ingress Gateway (using tools like NGINX or Envoy). Think of this as the "front door" of the system — it decides where each request should go next.
  4. Inside the Kubernetes Services layer, the request is handled by a chain of smaller, specialized services:
  • Frontend — the part users actually see and interact with.
  • Order Service — handles creating and managing customer orders.
  • Payment Service — processes payments securely.
  • Inventory Service — checks and updates stock levels.
  1. Finally, information is stored in a Database (a relational database such as MySQL or Amazon RDS), which keeps a permanent record of orders, payments, and inventory.

This is what's called a microservices architecture — instead of one giant program doing everything, the work is split across many small, independent services that talk to each other. It's powerful and flexible, but it also means there are many more places where something could go wrong: the load balancer, the gateway, any one of the four services, or the database itself.

Why Pods Running Isn't the Same as the System Working

This brings us to one of the most important lessons in SRE.

If you only look at Kubernetes and see that every pod (a running instance of a service) shows a healthy 1/1 Running status, it might look like everything is fine. But that status only tells you the containers haven't crashed — it doesn't tell you whether the system is actually doing its job for real people.

An SRE team's real responsibility isn't simply to keep the pods green on a dashboard. It's to make sure that:

  • Users can successfully browse products and load pages quickly.
  • Users can successfully place orders without errors.
  • Payments are processed correctly and securely, every time.
  • Inventory numbers stay accurate, so no one buys something that's out of stock.

In other words, SRE cares about the end-to-end experience — whether the whole chain, from the user's click all the way down to the database, works reliably, quickly, and consistently. A single healthy-looking pod means very little if, somewhere along that chain, orders are failing or payments are timing out.

Putting It All Together

So, to summarize this first section in one simple thought:

SRE is the discipline of engineering reliability into a system on purpose — through automation, clear goals, proactive monitoring, and thoughtful design — instead of just hoping things don't break and scrambling to fix them when they do.

It's not about babysitting servers. It's about making sure that when a real person clicks "buy now," the entire system — load balancer, gateway, services, and database — works together smoothly enough that they never even have to think about how complicated it all is behind the scenes.


Other Articles