I recently have been working on single pipelines. The idea behind it is that with the growth of software development and the increase in how we manage, write and maintain our software and out infrastructure as separate items, there are a lot of complications that come out when integrating both in people and processes.

There is only 1 Team

A regular setup when imagining software projects appears to be that despite the dream of DevOps making software teams more interoperable, they have potentially become more divided. Generally I often see teams that are separated as such:

  1. Software Development (this can be 1 or 4/5 teams)
  2. Project Management/Owners
  3. DevOps
  4. Infrastructure
  5. Security
  6. Marketing

I remember discussing some time ago about finding Unicorns where you look for people who have all of these skills, which as the suggestions of Unicorns may assume is almost impossible.

The aim of the single pipeline is that you can build the whole product in a single pipeline. In the demo shown below we deploy:

  1. Linting
  2. Testing/Validating
  3. Packaging of Code
  4. Planning of infrastructure deployment
  5. Infratructure deployment
  6. Infrastructure/software removal and tidy

What we start to get when this is achieved not only is the essence of the product team working together, but also that each member has visibility and transparency to the workings of others allowing a greater amount of understanding, communication and collaboration over the whole product lifecycle.

GitLab, Terraform and AWS: The Perfect Combination

Hello Terraform Serverless (Demo)