Working with software, whether it be as applications or infrastructure, can be challenging to manage and track when changes/improvements are being made regularly. Manually testing new versions of code can be time consuming and significantly slow down the workflow of your deployments. Even when your code has made it through the testing phase, hidden errors can arise when you try to push it to your production environment, which can potentially have a negative impact on your customers.
To do this safely, without fear of taking down critical production services, Vandis can use AWS features to implement CI/CD, (Continuous Integration/Continuous Delivery) pipelines into your workflow. By leveraging tools like AWS CodePipeline, Vandis can create a development workflow that will allow you to test new code on live instances before pushing them to their production environment. This automated process allows for quick iterating and implementation of features for your development team. New features can be built and tested at a much faster pace than traditional methods of deployments. This kind of version control is useful not only for software applications, but also for software-defined infrastructure. If you decide to make a change such as upgrading RAM or changing an instance image, it will be tracked, and utilize all the benefits of version control like being able to roll back changes if issues occur with minimal downtime quickly.
AWS also provides services like Route 23 for DNS management of your application. A useful method for implementing this into your workflow is by running Blue/Green deployments. In a blue/green deployment, two identical production instances exist within your environment, but your live environment will only exist on one. When you have finished your internal testing and are ready to deploy a new version, you deploy it to the production instance that is not currently live. You can then slowly reroute the DNS to send a small amount of traffic from your live instance to your second one; this gives developers a chance to see how their new version is doing on a small scale before it is fully deployed. This style of deployment can significantly reduce downtime and help catch critical errors before going live.
Vandis finds it useful to design this pipeline with well-defined environment variables to distinguish builds that are meant for testing and builds that are ready for production. In a project done for a client using Gitlab CI as the CI/CD pipeline, environment variables were set for every code reference that had to do with the environment being deployed to, the resources being used, and how to handle the build. Done correctly, and combining it with a well-designed pipeline, will ensure that your development builds will only ever be pushed to development instances using test resources. Once your build is ready for production, a manual push to production from users with the proper IAM roles will be able to quickly and cleanly send those builds to the live environment.
For more information on tracking your application infrastructure with ease, contact the team at Vandis for a free consultation.