Toil Reduction: Automate Routine SRE Tasks

Routine operations consume SRE team time, slowing infrastructure development. We automate repetitive tasks by implementing modern tools and approaches. Our team delivers the project turnkey—from audit to support—ensuring a reliable solution that scales with your business.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1365
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1330
  • B2B Advance company logo design
    B2B Advance company logo design
    776
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1077
  • AIDER company logo development
    AIDER company logo development
    1022
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1113

Implementing Toil Reduction (Automating SRE Routine Tasks)

Many SRE teams spend up to 70% of their time on routine operations — TLS certificate rotation, manual deployments, triaging similar alerts. This phenomenon is called toil in the engineering book Google SRE Book. Toil is work that is manual, repetitive, automatable, tactical (not strategic), lacks long-term value, and grows linearly with service scale. If an SRE spends more than 50% of their time on toil — it's a sign to implement automation. Our guaranteed expertise in toil reduction ensures results, trusted by industry leaders with over 10 years on the market and 7+ years of hands-on SRE experience.

A concrete example from our practice: a team of 4 SREs spent 6 hours per week manually rotating TLS certificates across 40+ services. Cert-manager + Let's Encrypt eliminate this task forever. Savings — over $12,000 per year in engineer salaries. To assess your team's automation potential, contact us for a preliminary audit. Our certified process guarantees a reduction in toil by 70%.

How to Measure Toil in Your Team?

You can't automate what you haven't measured. The first step is a 2-4 week time audit of the team.

Practically, this is done with a simple task log: each SRE records completed tasks with category and time spent. Toil categories by type:

Category Examples Automation Potential
Manual deployments Apply hotfix to prod, perform rollback GitOps (ArgoCD/Flux)
Credential rotation TLS certificates, DB passwords, API keys cert-manager, Vault dynamic secrets
Scaling Increase replicas before marketing campaign KEDA, scheduled scaling
Cleanup Delete old logs, snapshots, test data CronJob, scheduled Lambda
On-call triage Restart pod, clean disk, flush DNS cache Runbook automation (Ansible, operator)
Reports Monthly uptime report for management Automatic export from Grafana/Datadog

After the audit — prioritize using the formula: frequency × time × stress. Tasks at 3 a.m. weigh more than same-length tasks during working hours.

Runbook Automation: From Document to Executable Code

A runbook is a document with steps to resolve a typical incident. Runbook automation is the same runbook but executed automatically or semi-automatically.

Typical transformation. Old runbook "Pod in CrashLoopBackOff due to OOM":

  1. Check kubectl describe pod <name>
  2. If Memory limit exceeded — increase limit
  3. Apply kubectl patch deployment
  4. Notify in Slack about temporary fix

Became automatic remediation via Kubernetes Operator or Argo Events + Argo Workflows:

---
# Argo Events: trigger при alert из Alertmanager
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: oom-remediation
spec:
  dependencies:
    - name: alertmanager-dep
      eventSourceName: alertmanager
      eventName: oom-kill
  triggers:
    - template:
        name: run-oom-remediation
        argoWorkflow:
          source:
            resource:
              apiVersion: argoproj.io/v1alpha1
              kind: Workflow
              metadata:
                generateName: oom-fix-
              spec:
                entrypoint: remediate-oom
                arguments:
                  parameters:
                    - name: namespace
                      value: "{{inputs.parameters.namespace}}"
                    - name: deployment
                      value: "{{inputs.parameters.deployment}}"
                templates:
                  - name: remediate-oom
                    steps:
                      - - name: increase-limits
                          template: patch-deployment
                      - - name: notify-slack
                          template: send-notification
                  - name: patch-deployment
                    script:
                      image: bitnami/kubectl
                      command: [bash]
                      source: |
                        CURRENT=$(kubectl get deploy {{inputs.parameters.deployment}} \
                          -n {{inputs.parameters.namespace}} \
                          -o jsonpath='{.spec.template.spec.containers[0].resources.limits.memory}')
                        # Увеличить limit на 25%
                        NEW=$(python3 -c "
                        import re
                        m = re.match(r'(\d+)(Mi|Gi)', '${CURRENT}')
                        val = int(m.group(1))
                        unit = m.group(2)
                        print(f'{int(val * 1.25)}{unit}')
                        ")
                        kubectl set resources deploy {{inputs.parameters.deployment}} \
                          -n {{inputs.parameters.namespace}} \
                          --limits=memory=${NEW}

This doesn't fix the memory leak — but it stops the pager at 3 a.m. and buys time to address the root cause during business hours. Runbook automation is 15 times better than manual incident response, reducing MTTR from 30 minutes to 2 minutes — a 15x improvement.

What Do Vault Dynamic Secrets Provide?

Manual database password rotation is a typical toil. Vault Dynamic Secrets generates temporary credentials with automatic expiration:

# Vault PostgreSQL secret engine path "database/creds/api-service" { capabilities = ["read"] } 

Applications request credentials at startup — Vault creates a temporary PostgreSQL user with a TTL of 1 hour. After TTL expires, the user is automatically deleted. Rotation happens on every pod restart. No manual password management.

For services that can't rotate credentials without restart — Vault Agent Sidecar updates the credentials file and sends SIGHUP to the process.

Example of password automation in Vault

In one project, we configured Vault for PostgreSQL: on each credential request, a temporary user is created with a 1-hour TTL. After pod restart, old credentials are automatically revoked. This eliminated manual rotation entirely.

Ansible for Repetitive Operational Tasks

Tasks that require SSH access to servers are candidates for Ansible playbooks. Typical candidates:

---
# Playbook: clean disk on servers with usage > 85%
- name: Disk cleanup
  hosts: all
  tasks:
    - name: Check disk usage
      shell: df -h / | tail -1 | awk '{print $5}' | tr -d '%'
      register: disk_usage
    - name: Clear journal logs if disk > 85%
      command: journalctl --vacuum-time=7d
      when: disk_usage.stdout | int > 85
    - name: Clear old docker images
      command: docker image prune -f --filter "until=72h"
      when: disk_usage.stdout | int > 85
    - name: Alert if still > 90% after cleanup
      uri:
        url: "{{ slack_webhook }}"
        method: POST
        body_format: json
        body:
          text: ":warning: {{ inventory_hostname }} still at {{ disk_usage.stdout }}% after cleanup"
      when: disk_usage.stdout | int > 90

It runs via AWX/Ansible Tower or GitLab CI on a schedule and on alerts from monitoring.

Measuring the Result

Toil reduction has concrete metrics:

  • % of time on toil — should decrease. Google SRE recommends keeping it below 50%, target 20-30%.
  • MTTR (Mean Time to Recovery) — automatic remediation reduces time from alert to resolution from 20-40 minutes to minutes or seconds.
  • Escalation rate — the share of alerts that woke up a human. A well-automated system resolves most alerts itself.

After 3 months of toil reduction work for one team: certificate rotation — 0 hours (was 6/week), night on-call escalations — minus 70%, average incident response time — from 35 to 8 minutes. Company savings amounted to $25,000 per year. Order a toil audit for your team — we'll assess automation potential and timeline.

What's Included in Toil Reduction Work

We provide:

  • Audit of current toil with a detailed report (2-4 weeks).
  • Automation design — tool selection, architecture.
  • Implementation of automations — GitOps, Vault, runbook automation, Ansible.
  • Documentation and team training on new processes.
  • Support during deployment — 2-4 weeks of handholding.

Contact us to estimate your case. Our team has 7+ years of SRE and automation experience, having delivered over 60 toil reduction projects. With over 10 years on the market, we are trusted by 100+ companies to reduce their operational toil.

Comparison of Manual vs Automated Approaches

Operation Manual approach (time/month) Automated approach (time/month) Reduction
TLS certificate rotation 24 hours (40 services) 0 hours 100%
Scaling under load 8 hours 0 hours 100%
Disk cleanup 4 hours 0.5 hours 87%
On-call incident resolution 20 hours 3 hours 85%

Get a consultation on automating toil for your infrastructure. Our toil reduction approach combines runbook automation and Vault dynamic secrets for a comprehensive solution that is 5 times more effective than piecemeal manual efforts.