Since the beginning of time (of Lab Digital, that is), we’ve been all-in on cloud-native software engineering. Initially, through the use of Amazon Web Services, that now includes Microsoft Azure as well.
All the software applications we build are effectively cloud-native, which is why the MACH and Composable movement is a natural fit for us. The concepts used to implement it are effectively cloud-native software engineering concepts. We have been doing this since well before the term MACH was coined.
Building something in a cloud-native way means that we build our software ‘in’ the cloud, rather than ‘on top of’ the cloud. We often use services provided ‘as a service’ by the cloud provider, and we manage these in an automated way through tools such as Terraform for infrastructure-as-code.
In practice, this approach leads to robust applications and largely automated infrastructures. Concepts such as ‘Cattle vs Pets’ are incorporated into any application we build, which is an excellent foundation for a mature CI/CD environment. But also, the application of ‘blue/green’ and ‘zero downtime’ deployments are applied everywhere.
infrastructure-as-code
Having previous experience with several IaC tools such as Puppet, Chef and Ansible, Terraform is the infrastructure-as-code tool we’ve settled on early on.
We know it inside-out and use it for all of our cloud infrastructures. And as a result, over the years, we have captured many of our internal standards in Terraform modules and boilerplates, which means that we can start up new projects exceptionally quickly.
Around 2018 we also started creating our own Terraform Providers to manage 3rd party SaaS services using infrastructure-as-code principles, beginning with the Commercetools terraform provider. This provider is now a best practice used by most of the Commercetools partner ecosystem, including by Commercetools themselves.
Most of us worked with Amazon Web Services (AWS) before Lab Digital started, so it was only logical to start the company ‘all in’ on AWS. We have intimate knowledge of all of the aspects of AWS and leverage its functionality to the fullest.
Over the years, we’ve expanded to include Microsoft Azure at the request of our clients. Since most Cloud Providers are based on the same concepts, it was relatively straightforward for us to embrace it. And the availability of Terraform for Azure, which Microsoft fully supports, ensures we don’t have to make too many changes to our way of working.
We host our applications in several different environments in the cloud. Something that’s almost always consistent is the implementation of the 12 Factor methodology, which allows us to easily switch between runtime environments.
We are experienced in deploying applications in the following environments:
Based on the workload, we decide what environment works best. In recent years, we’ve developed a preference to use serverless and event-driven concepts where we can reside in Docker-based deployments when we really need it.