This is the first of a series of posts that will describe the process of creating a complete set of tools to provide Continuous Delivery for your business in the cloud.
Continuous Delivery Platform
What is expected a continous delivery platform to have? We think a build platform will need an orchestrator/building tool (that in our example will be Jenkins), a code repository (Gitlab), Artifact repository (Nexus) and a Static Code Analysis tool (Sonarqube).
Requirements for the Continuous Delivery Platform
The requirements for this platform are:
- High Availability
What does HA mean? HA means that the platform needs to be available 24/7 and it has to be able to recover from failures so, we need each component to be able face failures and minimize their impact for the users. We will use a clustered deployment for all the elements in the platform.
The platform being replicable means that we will are capable of re-build the platfrom from a source code repository and we will have all the features ready to use.
The scalability requirement implies the platform needs to adapt to the required load for the system so that, in case there are too many users and the performance gets degraded, it will be able to grow.
The continuous delivery platform will have to provide reports about the tasks is carrying such as builds, tests and promotions. These reporting will be included in a management to make it easily accessible for the people working in the projects that will use the platform. Messaging with updates from the platform will also be required.
Technologies to be used
To cope with these requirements we will use:
- Terraform (IaC)
- Kubernetes over AKS in Azure
- Helm (Manage deployments in Kubernetes)
In the next post we will focus in the creation of managed cluster in AKS.