1️⃣ What is this project about?
This project is a manual deployment of an Expense Tracking web application using AWS cloud services. The application follows a three-tier architecture consisting of a frontend, backend, and database, each running on a separate EC2 instance. The goal of this project was to understand how real-world applications are deployed and accessed in the cloud without using automation tools.
2️⃣ What did I do in this project?
Created separate EC2 instances for frontend, backend, and database services.
Manually installed and configured Nginx for the frontend.
Deployed a Node.js backend application and managed it using systemd.
Installed and secured MySQL database, including schema initialization.
Generated SSH key pairs using Bash and connected to EC2 instances using private keys.
Configured password-based and key-based authentication for server access.
Purchased a custom domain (daws86s.me) from Hostinger.
Configured DNS records using Amazon Route 53 to map the domain to the application.
Made the application accessible via a public domain instead of IP addresses.
3️⃣ What did I learn and what skills did I develop?
🔧 Technical Skills
AWS EC2 provisioning and management
Linux server administration
SSH key generation and secure access
Nginx reverse proxy configuration
Node.js service management using systemd
MySQL installation and schema management
DNS fundamentals and Route 53 configuration
🧠 Conceptual Learnings
Understanding three-tier architecture
How frontend, backend, and database layers communicate
Importance of DNS and domain management in production
Real-world troubleshooting without automation
4️⃣ What are the advantages and disadvantages of this project?
✅ Advantages
Strong understanding of cloud and Linux fundamentals
Full visibility into how each component works
Excellent learning experience for DevOps beginners
Easy to troubleshoot since everything is manually configured
Strong foundation before moving to automation tools
❌ Disadvantages
Manual setup is time-consuming
Not scalable for large or production-grade systems
Higher risk of human error
No automation, CI/CD, or Infrastructure as Code
Maintenance becomes difficult as infrastructure grows