The CARMA Capstone - Deploying a Resilient Application End-to-End

Objective: To apply the cloud-agnostic principles learned throughout this course to a real-world scenario. You will take a pre-packaged application, deploy it onto a cloud provider of your choice, and configure it to be secure, scalable, and highly available. This project will test your ability to integrate skills across networking, security, data management, and infrastructure automation, demonstrating the end-to-end expertise valued by modern technology teams.

Scenario: You have just joined a promising new startup as their first Cloud Engineer. The development team has handed you their flagship application as a .zip file. The application is stateful and requires a database to store user data. The file contains the application's source code, a Dockerfile to containerize it, and a basic Infrastructure as Code (IaaC) configuration file. Your mission is to get this application running in the cloud and ready to serve customers globally.

Step 1: Foundational Setup & Security Baseline

First, you must build the secure "digital land" where your application will live. This involves creating a private, isolated network and defining the specific permissions your cloud resources will need to operate, adhering to the Principle of Least Privilege.

Step 2: Provisioning the Persistent Data Store

Because the application is stateful, it needs a database that "remembers" information between user sessions. You will provision a managed database and place it within the secure private subnet you created in the previous step.

Step 3: Building and Storing the Application Container

Next, you will containerize the application to ensure it runs consistently across any environment. This package, called a container image, will then be stored in a private repository in the cloud, ready for deployment.

Step 4: Deploying the Application with Infrastructure as Code (IaaC)

With your network and database ready and your application image stored, it's time to deploy. You will use the provided IaaC file to declaratively define and launch the compute service that will run your container.