Over recent years ‘DevOps’ has become a complicated and convoluted world. There are now so many combinations of services and infrastructure that require experts and dedicated frameworks to design, build and maintain them.
The purpose of this document is to show you that you can achieve scalable, reliable and dependable CI/CD workflows with minimal effort and skill.
Although the ‘app’ we’re focussing on is Drupal, this tutorial could be easily extrapolated to any other type of app or dev framework.
Other than the Drupal codebase, only 3 other services will be used throughout this tutorial.
- Bitbucket - Code repository & pipelines to trigger testing and deployment
- Docker - Containers will be used for development, testing and deployment.
- AWS - Hosting
That’s right, no Kubernetes, no TerraForm, no Jenkins etc etc.
In terms of hosting, as we are going ‘serverless’, we will be using AWS Fargate to host the NGINX+PHP docker container and RDS Aurora for the database. In our example we are also using Elasticsearch but this is optional. You could also add managed Memcached instances and such if required. Persistent files will be stored using Elastic File Store (EFS).
There are quite a lot of steps in this tutorial, but believe me, there isn't as many steps as I actually took using trial-and-error. I'm hoping the little 'gotchas' and important notes I've added will be greatly valued so that you don't make the same mistakes I did!
Next section: Local setup