surfup

Logistics SaaS

15-minute deploys instead of manual night releases

Logistics · DevOps · Kubernetes · CI/CD · Monitoring
Project context

The client is a logistics service processing tens of thousands of orders a day, with evening and sale-period peaks and strict SLAs to retail partners. Its infrastructure had grown organically: scattered VPS instances, configurations living “on the servers”, and manual deployments following a wiki guide. Every release meant a night-time rollout with downtime, and every peak carried a risk of lost orders. The trigger for contacting us was an incident during a pre-New-Year sale, when the platform was unavailable for four hours and the service had to compensate partners.

01 · Challenge

Move the platform to managed infrastructure without stopping the business:

infrastructure as code, automated delivery, containerization and orchestration, observability, and predictable outage recovery. The founder defined success as “deploying during working hours, with no downtime and no person with SSH access”.

02 · Work completed

We followed a proven sequence: containers and reproducible environments first, delivery automation next, and orchestration with autoscaling only after that.

  • Audited the infrastructure: mapped services and dependencies, measured the peak load profile and listed the manual operations most likely to cause incidents.
  • Containerized the services: standardized builds, moved configuration out of code into environment variables and created identical dev/stage/prod environments.
  • Described infrastructure as code in Terraform: environments are deployed from the repository, and manual changes in the cloud provider’s console are prohibited.
  • Built a GitLab CI pipeline: tests and image builds run automatically; deployment to stage happens immediately, production deployment is triggered by a button after review, and rollback takes one action.
  • Moved the platform to Kubernetes with autoscaling: the platform now meets evening and sale peaks with extra instances instead of emergency manual work.
  • Set up monitoring and alerting around the golden signals—latency, errors, traffic and saturation—with on-call coverage and scheduled escalation.
  • Configured backups and disaster recovery: documented recovery procedures and rehearsed an outage on stage while measuring the actual MTTR.

The project’s most valuable result was not the technology, but the shift in responsibility: the infrastructure no longer depended on a “person with SSH access”. Every deployment is reproducible, every environment can be restored from code, and dashboards reveal any outage before the first customer writes in. This turns downtime from a catastrophe into a routine incident with a clear playbook and measurable recovery time.

03 · Outcome

The project’s economics came together in three parts: direct infrastructure savings of 32% through autoscaling and eliminating permanently warmed “peak” capacity; team hours saved from night deployments; and, most importantly, revenue preserved during peaks that now pass without incidents. A major retail-chain client renewed its contract after the first sale event on the new infrastructure.

04 · Key results
MetricResult
Release deployment3–4 hours by hand → 15 minutes automatically
Release frequency2–3 per month → Almost daily
Platform availability97.8% → 99.95%
Peak loadsRisk of downtime → Autoscaling without human intervention

Metrics are transcribed from the original case materials. A period is stated where it is recorded in the source.

Five months in
release deploy (was 3–4 hours by hand)
15 min
platform availability (was 97.8%)
99.95%
recovery after an outage (was 2–4 hours)
20–30 min
infrastructure cost
−32%
Before and after
Release deploy, minutes
Before3–4 hours
After15 min
Lower is better
Recovery (MTTR), minutes
Before2–4 hours
After20–30 min
Lower is better
Platform downtime
Before2.2%
After0.05%
Lower is better

Upper bounds of ranges are drawn (4 hours, 30 minutes). Downtime = 100% − availability.

Delivery pipeline
  1. 01Commit
  2. 02Tests
  3. 03Image build
  4. 04Stageimmediately
  5. 05Prodon a button after review
Next steps

Infrastructure improvements for the next cycle:

  • FinOps practices: alerts for cost anomalies and transparent costs by team.
  • A GitOps approach: production state described in the repository, with changes made only through pull requests.
  • Multi-region setup: replicas of critical services to withstand a provider outage.
Quote
A release used to mean a night, coffee and a prayer. Now it’s a button and fifteen minutes. We celebrated the first incident-free sale together as a company.

— Technical Director of the Logistics Service

Latest materials

All materials

Practical articles and guides by SurfUp.

Guide · 10 min

“What is…” pages and AI answers: lost clicks or falling demand

A bank’s reference section lost 24% of visits as demand fell 13%. How to tell clicks lost to an AI block from falling demand and how to measure it.

Read
Guide · 8 min

Traffic dropped after a Google update

How to tell whether a traffic drop comes from a Google update, seasonality or a site fault. 2026 update timeline, a six-question check and a plan for the first 14 days.

Read
Guide · 9 min

Demand fell or the site lost: reconciling traffic with Wordstat

Demand for deposits fell 75%, traffic 37%; for cards demand −35%, traffic −63%. How to reconcile traffic with demand and not blame the site for the market.

Read