Technology

CI/CD Pipelines for Small Teams: What Actually Matters

Most small teams either ship straight to production with no pipeline at all, or copy an enterprise setup that takes longer to maintain than the product itself. Neither is right. Here is what I actually build.

CI/CD Pipelines for Small Teams: What Actually Matters

I have set up a CI/CD pipeline for every business I have built, from Crocodile HR through to CampSuite, and I have made both mistakes you can make. Early on I shipped straight to production by SSHing in and pulling the latest code, which is exactly as terrifying as it sounds. Later, on a client project, I inherited a pipeline with fourteen stages, three approval gates and a deployment that took forty minutes for a team of two developers. Both were wrong for completely different reasons.

A good CI/CD setup for a small team is not a scaled down version of what Google does. It is a different thing built for a different problem. You do not have a platform team, you do not have a release manager, and you cannot afford a pipeline that needs its own maintenance schedule. What you actually need is something that catches your mistakes before your customers do, and gets working code live without you having to think about it.

Why Small Teams Get CI/CD Wrong in Both Directions

The teams that skip it entirely usually tell themselves they will add it later, once things settle down. Things never settle down. Every week without a pipeline is another week of manual deploys, forgotten steps and the particular dread of pushing a change on a Friday afternoon and hoping for the best. I did this for the first year of CampSuite and it cost me at least two evenings a month firefighting problems a five minute automated check would have caught.

The teams that overbuild it are usually developers who came from a big company and are recreating what they know, regardless of whether it fits. Multiple environments with manual sign off between each one, security scanning tools that need their own configuration and upkeep, and deployment pipelines with more steps than the actual application has features. All of that has a place somewhere. It rarely has a place in a team of two or three people trying to ship a product.

What a Small Team Pipeline Actually Needs

Strip it back and there are really only four things a CI/CD pipeline needs to do well for a small SaaS team. Run your tests automatically on every push. Build the application the same way every time, so you never get the "works on my machine" problem. Deploy automatically to a staging environment so you can see changes before customers do. And deploy to production with one click, or automatically after a short wait, rather than a manual process that only one person on the team actually knows how to do.

That is genuinely most of it. GitHub Actions or Azure DevOps Pipelines will do all four of those things for free or close to it, and you can have a working setup running inside a day rather than the weeks I have seen some teams spend building an internal deployment platform nobody asked for.

Tests First, Everything Else Second

If you only automate one thing, automate your test suite running on every pull request. This is the single highest value thing a pipeline does, because it catches the bug before it ships rather than after a customer reports it. I do not think every codebase needs a hundred percent test coverage, and I have written before about why technical debt is not automatically the enemy for a small team moving fast. But the core paths through your product, the ones that would actually hurt if they broke, need tests that run automatically and block a merge if they fail.

Staging Environments Do Not Need to Be Fancy

A lot of small teams either skip staging entirely or build an exact mirror of production that costs almost as much to run. Neither is necessary. A cut down staging environment, running on the smallest instance size that will hold your application, is enough to catch the obvious problems before they reach real customers. I keep mine deliberately minimal, and I have written separately about how to keep your Azure bill under control, because a staging environment you are scared to run because of the cost is a staging environment that quietly gets skipped.

One Click Production Deploys, Not Manual Ones

The goal is not necessarily full continuous deployment where every merge goes live automatically, although that works well once you trust your test suite. The goal is removing the manual, error prone steps from the process. If deploying to production currently means someone remembering a checklist of six things to do in the right order, that checklist should be a pipeline stage instead. People forget steps under pressure. Pipelines do not.

Building It Around a Small Team, Not Against One

The biggest difference between a good small team pipeline and an enterprise one is what happens when something goes wrong. A big company can afford a slow, heavily gated pipeline because they have the headcount to staff it. A small team cannot. Your pipeline needs to fail loudly and clearly, tell you exactly what broke, and let you fix it and redeploy within minutes, not escalate through three layers of approval before anyone can act.

This matters even more if you are running a multi tenant product. When I built the deployment process for CampSuite, which I have gone into in more depth when writing about multi tenant SaaS architecture, the pipeline had to account for database migrations running safely across every customer's data without anyone babysitting the process by hand. That kind of safety net is worth building properly. A ten stage approval process for a marketing page change is not.

Rollbacks Matter More Than People Think

Every pipeline conversation focuses on getting code out. Fewer focus on getting a bad deploy back out just as fast. If your pipeline can deploy in two minutes but rolling back a broken release takes an hour of manual database surgery, you have not actually reduced your risk, you have just moved it. This connects directly to something I cover when I write about disaster recovery for small SaaS businesses. A fast, boring, well tested rollback path is worth more than almost any other feature of your pipeline, and it is the bit teams skip most often because it never feels urgent until the day it very suddenly is.

My Honest Take

You do not need a platform engineering team to have a good pipeline. You need four things done properly rather than fourteen things done badly. Automated tests, a consistent build, a cheap staging environment and a deploy process that does not depend on someone remembering the right order of steps. Everything past that is solving a problem you probably do not have yet.

This is the same discipline I talk about in The 28 Day Startup, building the boring infrastructure properly early rather than bolting it on once things are already creaking. A CI/CD pipeline is not exciting. It is one of those things that only gets noticed when it is missing, usually at the worst possible moment. Get the basics right now and it will quietly save you from a very bad Friday afternoon at some point down the line.

More from the blog

Technology7 min read

Technical Debt Is Not the Enemy: A Practical Guide for Small Teams

Read more
Technology7 min read

Disaster Recovery for Small SaaS Businesses: What You Actually Need

Read more
Technology8 min read

Multi-Tenant SaaS Architecture: Lessons From Building CampSuite

Read more