Building the infrastructure made it possible to quickly and efficiently deliver software to the customer. It was not without technical problems. Using hardware and calling from the build server and creating test environments on them both for development, dest and releases.
When building the infrastructure, we had three goals:
- CI/CD integration
- test data prep
- execution parallelism
We were very interested in creating the infrastructure as code, using:
Until now, many tasks have been done manually, that is:
- update version
- deploy new relese
- DB backups/updates
- recover app
- add/recover servers
Additionally, we had both a test and production environment, so most of these tasks had to be repeated on two of these servers. Infrastructure as Code made it possible to automate all these tasks at such a level that you no longer have to worry about the manual execution of tasks on individual servers. IoC is a concept using tools/programs which carry out these tasks. Of course, there is no single tool for building such an infrastructure, which is why several were used, for example::
- Terraform was used for initial infrastructure setup, manage infrastructutre, initial applicationn,
- Ansible was usee for manage application: install and deaploy application
If I’m honest, it didn’t take long for the results. We managed to build an infrastructure ready to implement development, several test environments and a production environment very quickly. Build private network space, EC2 server instances, Docker installation and other tools, set up security.
Of course, we have not forgotten about the tests. Many of them were hooked up to the build server in this way to quickly give feedback related to positive or negative information. Tests are still being added, both to the application and to the operating system also built from the source.
Of course, it was not without its problems:
- equipment problems and forced optimization on prototype files
- signing a pick to deploy for proclamations (as it turns out, he can’t do it correctly)
- time balancing && time limitations
- problems with server same while building, increasing resources
- talks with management;)
- failing ~ flaky tests
Currently, the infrastructure is well-adjusted to allow for building, testing and deployment almost every day, and at the customer’s request. There are still a few tasks to refine, but they are not important enough to obstruct normal functioning.
- Automation Journey - episode I
- Automation Journey - episode II
- Automation Journey - episode III
- Automation Journey - episode IV
- Automation Journey - episode V
- Automation Journey - episode VI