Amazon Web Services (AWS) is the most mature and comprehensive cloud computing platform available today, and as such it was a natural choice for BubbleCorp in terms of infrastructure hosting.
If you haven't used AWS previously, don't worry; we'll only focus on a few of its services, as follows:
- Elastic Compute Cloud (EC2): A service that provides users with the ability to rent virtual computers to run their applications in.
- Relational Database Service (RDS): This can be thought of as a specialized version of EC2 that provides managed database services.
- CloudFormation: With CloudFormation, users have the ability to specify the infrastructure templates, called stacks, of several different AWS resources (such as EC2, AWS, and many others), as well as how they interact with each other. Once it has been written, the infrastructure template can be sent to AWS to be executed.
For BubbleCorp, the idea was to write the infrastructure templates, which once submitted would result in a completely new, isolated environment containing all of the data and components required to run its app. At any given time, there would be dozens of these environments running, with developers working on them.
As decent a plan as this sounds, big corporations usually have an added burden: cost centers. Unfortunately, BubbleCorp couldn't simply allow developers to log in to the AWS Console (where we can manage AWS resources) and spin up environments at will. They needed a way to, among other things, add cost center metadata to the environment, in order to handle their internal billing process.
This brings us to the application that we will be focusing on for the remainder of this chapter.