I have moved this article to my personal blog. Please check it out there. The introduction remains intact below.
One of the many challenges that teams face when starting to work on a new serverless project in the cloud is how to work efficiently as a team. In traditional programming, you have your own workstation where you can test out your changes. You can use tools like Docker, pipenv, or virtual machines to create multiple isolated environments on the same machine. If you’re partnering with other coworkers, you can share your git branches to collaborate together.
With cloud services, it’s much more difficult to do that collaboration, especially if everyone is working on the same code base. Collaboration becomes even more difficult when you throw Terraform into the mix. All of a sudden, your infrastructure changes can break that shiny new feature that Bob is working on which also changes the infrastructure.
You may find yourself seeing too many messages from
terraform plan stating
Plan: 9 to add, 6 to remove, 2 to change when all you did was change a few resources. You either yell at Bob to commit his changes, or you destroy his work (seriously, Bob is annoying).