Quick answer: a small team needs a pipeline with five stages: run automated checks on every change, build once, deploy to a staging copy, release to production in a repeatable way and watch the result with a quick rollback ready. Keep it simple, automate the boring steps and never deploy by hand copying files on a Friday evening.
Most outages we are called in to investigate have a depressingly similar origin story. A developer made a small change late in the day. They copied files to the server by hand, or ran a few commands from memory. Something was missed. The site went down, and nobody was sure exactly what had been changed.
The fix is not heroics or an expensive platform. It is a short, boring, automated path from a change on a developer's laptop to production. Teams call it CI/CD, short for continuous integration and continuous delivery. Here is a version that suits a team of two to ten people.
What CI and CD actually mean
- Continuous integration: every time someone saves a change to the shared code, a machine automatically builds it and runs checks. Problems show up in minutes, not at the end of the month.
- Continuous delivery: the same change can be released to production through a repeatable automated process, with a human pressing the button or, for mature teams, nobody at all.
The five stage pipeline
Stage 1: Check every change automatically
When code is pushed, a service runs, on a clean machine:
- Formatting and style rules, so reviews focus on substance.
- Static analysis, which finds a surprising number of bugs without running the code.
- Automated tests for the important behaviour.
- A dependency vulnerability audit. See our note on supply chain security.
If any check fails, the change cannot be merged. That one rule prevents most self inflicted damage.
Stage 2: Build once
Create the deployable package a single time, version it, and use that exact package everywhere. Rebuilding separately for staging and production invites the classic "but it worked on staging" problem.
Stage 3: Deploy to staging
Staging is a copy of production with fake or anonymised data. The pipeline deploys there automatically and runs a few smoke tests: can I sign in, load the home page, create an order, send an email. Humans can also click around and approve.
Stage 4: Release to production, the same way every time
- Run database changes in a safe, ordered way, ideally compatible with both old and new code.
- Switch traffic to the new version only when health checks pass. Methods like rolling or blue and green releases avoid downtime.
- Release during hours when people are around to react, and keep Friday evening for rest.
Stage 5: Watch and be ready to roll back
After each release, monitor error rates, response times and key business numbers such as sign ups or orders. Define in advance what triggers a rollback, and make the rollback a single command or button. The ability to undo quickly is what makes releasing frequently safe.
Small habits that make it work
- Keep changes small. Small releases are easy to review, easy to test and easy to reverse.
- Use feature flags. Ship unfinished work switched off, then turn it on for a few users first.
- Store configuration and secrets securely. Never inside the code, and different for each environment.
- Back up before risky changes and rehearse restoring, as in our recovery planning guide.
- Write a short runbook. One page that says how to deploy, how to roll back and who to call.
What to automate first if you have nothing
- Run tests automatically on every change.
- Automate the deployment to a staging server.
- Automate the production deployment with one command.
- Add health checks and a rollback command.
- Add monitoring and alerts.
Each step is useful alone, so you gain safety as you go.
Tools, without the fashion
Popular code hosting platforms include built in automation that is perfectly adequate for small teams. Containers help make environments consistent. Cloud providers offer managed deployment services. The specific tool matters far less than the habits: automatic checks, one build, a staging copy and a fast way back.
Signs your pipeline is working
- Releases are boring and happen often.
- Nobody dreads deployment day.
- Bugs are found by the machine before customers see them.
- Any developer can release, not only the one person who knows the commands.
Setting up delivery pipelines, monitoring and safe releases is a standard part of what our engineers build into client projects. Explore our custom software development service, or read how we work as a technical partner through launch and beyond.
Frequently Asked Questions
What is CI/CD in simple terms?
It is an automated process that tests every code change and delivers approved changes to your live system in a safe, repeatable way, replacing manual file copying and guesswork.
Does a small team really need CI/CD?
Yes. Small teams have fewer people to catch mistakes, so automation is more valuable. A basic pipeline can be set up in a day or two.
How do I deploy without downtime?
Use rolling or blue and green releases, keep database changes backwards compatible and send traffic to the new version only after health checks pass.
What should I monitor after a release?
Error rates, response times and the business actions that matter most, such as sign ups, payments or orders. A drop in any of them is a signal to investigate or roll back.
Be the first to comment.