DevOps Foundational Project
Overview
In this first lab, we're going to create a complete application from the ground up, consisting of a React frontend and a Python backend. While our focus in this course is DevOps rather than application development, understanding the basics of the application you're deploying is crucial for effective DevOps practices.
By the end of this lab, you'll have a functioning web application running in development mode. This will serve as the foundation for subsequent labs where we'll containerize, deploy, and manage this application in a production-like environment. ✨
Purpose
The purpose of this lab is not to teach you advanced application development, but rather to:
- Provide you with a complete understanding of the application's architecture
- Give you hands-on experience with the codebase you'll be working with throughout the course
- Establish a baseline for future DevOps operations
- Demonstrate how frontend and backend components interact in a modern web application
Lab Environment
To help you focus on the core concepts, we've prepared a development environment with all necessary tools pre-installed:
- Git for version control
- Node.js for the React frontend
- Python for the backend API
- Code editor and terminal
- Required libraries and dependencies
This allows you to concentrate on understanding the application structure and DevOps concepts without getting caught up in environment setup issues!
What We'll Accomplish
In this lab, you will:
- Clone the starter code repository
- Explore the React frontend structure
- Understand the Python backend API
- Run both applications in development mode
- Test the complete application
Looking Ahead: From Development to Production
While this lab has us running the application in development mode, this approach has several limitations for real-world scenarios:
- Development servers aren't optimized for performance
- Environment configurations are hard-coded
- Scaling is difficult
- Deployment is manual and error-prone
- Dependencies are managed inconsistently
In our next labs, we'll address these challenges by containerizing both the frontend and backend components using Docker. This will allow us to:
- Package our application with all dependencies in isolated containers
- Create consistent environments across development, testing, and production
- Implement environment-specific configurations
- Prepare for orchestration with Kubernetes for scaling and management
- Set up continuous integration and deployment pipelines
- Implement monitoring and logging solutions
By starting with a functioning application in development mode, you'll gain a clear understanding of what we're containerizing and deploying, which will make the DevOps concepts more concrete and relevant.
Let's begin by exploring the code and getting our application up and running!
Part of this Project
DevOps Foundational Project
Containerizing Your Application with Docker
Deploying UI and API in Kubernetes
CI/CD Pipeline Fundamentals
AWS DynamoDB Fundamentals
Monitoring Your Cloud-Native Application with Prometheus, Grafana, and Loki
Python
Node.js
Ubuntu