Cloud DevOps: pipelines, infrastructure as code and monitoring on AWS, Azure and Google Cloud

We set up and run the delivery side of the applications we build and maintain: CI/CD pipelines, infrastructure written as code, containers where they help, environments, secrets, alarms and migrations between hosts. Our project records hold 60+ deployment and infrastructure engagements and 15+ projects on CI/CD and infrastructure tooling. This website is deployed the same way.

An aisle of server racks with blue and white status lights

60+

Deployment and infrastructure engagements in our records

15+

Projects on CI/CD and infrastructure tooling

3

Clouds we deploy to: AWS, Azure, Google Cloud

20+

Years in business, since 2005

Counts come from our project records. An engagement counts when its recorded work is deployment, infrastructure, server management or a hosting migration; a tooling project is one whose recorded stack names a CI/CD or infrastructure tool.

What we do

Examples from our own projects, described in general terms and linked to the case studies that show them.

CI/CD pipelines

GitHub Actions, CodeBuild and CodeDeploy, Azure DevOps or Jenkins, checked in with the code. See QCare, Xpress Money and Rainbow Options.

Infrastructure as code

The AWS CDK and CloudFormation on AWS, Terraform on Azure, so every environment can be rebuilt from the repository. See this website, Xpress Money and the TryBooking IVR.

Containers

Docker images for applications that need the same runtime from a laptop to production, on Cloud Run or a container host. See the database performance SaaS, RoofReveal and a React front end with Docker.

Environments, releases and secrets

Separate development, staging and production configurations, as on QCare; gated releases with rollback, as on the database performance SaaS; secrets in SSM or Secrets Manager and deployment roles instead of stored keys, as on this site.

Monitoring and alerting

CloudWatch alarms with e-mail for errors, throttling and failed deliveries; Datadog where a client already uses it. See this website and the React front end with Datadog.

Migrations between hosts and clouds

Moves from shared hosting, platform hosts or another cloud, with a rollback path and the DNS, redirects and SSL handled. Read how we moved this site from WordPress to AWS.

What we do and do not offer

We run the pipelines and infrastructure for the applications we build and maintain, and we set them up for applications you build yourself. We do not sell a 24/7 operations desk or an on-call engineer: our aim is a set-up where failures are visible, rollbacks are routine and nothing depends on one person's memory.

  • You have an application and releases still happen by hand or from one developer's machine.
  • You want the infrastructure written down so a second person, or a second supplier, can rebuild it.
  • You are moving hosts or clouds and want the move planned with a way back.

For the platforms themselves, see AWS development, Azure development and Google Cloud and Firebase; for containers in depth, Docker development. Our plain-English guide to cloud computing covers the vocabulary.

Technologies we use

The services and tools in our deployment work. Linked technologies open our page for them.

Frequently asked questions

Do we need Kubernetes?

Usually not at the size of the systems we build. Most of our clients run well on managed services: Lambda and Elastic Beanstalk on AWS, App Service and Functions on Azure, Cloud Run on Google Cloud, or a small container host. Kubernetes earns its keep when you run many services with their own scaling needs, and we say so when that is the case.

Which CI service do you use?

The one that fits where the code lives: GitHub Actions for repositories on GitHub, CodeBuild and CodeDeploy on AWS, Azure DevOps on Azure, Jenkins where a client already runs it. The pipeline is checked into the repository with the code.

How do you handle secrets and access?

Accounts stay in the client's name. Pipelines deploy through short-lived roles rather than stored keys where the platform allows it, secrets live in the platform's secret store (SSM or Secrets Manager on AWS), and nobody shares credentials by e-mail or chat.

What happens when a deployment fails?

The pipeline stops before the change reaches users: tests and type checks run first, deployments keep the previous version until the new one is healthy where the platform supports it, and alarms report failures by e-mail. Rolling back is a redeploy of the last good version, not a manual rebuild.

How does a project start?

With a review of what runs today: repositories, environments, how releases happen now, where the secrets are, what is monitored. We come back with a short written plan, usually starting with the pipeline and the infrastructure definition, and you own everything we set up.

How can we work together?

There are three ways, on the same terms:

  • Dedicated team, best for ongoing work: interview the developers, then they work on your project full or part time.
  • Fixed scope, best when requirements are clear: we agree the scope and the price up front, and deliver against it.
  • Time and material, best when the scope will change: you pay for the time used and can change priorities as the work goes on.

Whichever you choose, we sign an NDA before work starts, you own the code we write, and every change is reviewed in your repository.

Can I interview the developers before we start?

Yes. For a dedicated team you meet the developers in an online call and interview them before they join your project.

Releases still happen by hand?

Tell us where the code lives, how it is deployed today and what breaks. We come back with questions and a short written plan.