1. Overview
High Level Architecture Below... AWS EC2 instance: Hosts the application. Docker: Runs the website as a containerized service. Nginx/Apache: Acts as the web server and reverse proxy. MySql Database: Runs on a separate container on same instance. Redis Cache : Runs on a separate container on same instance. Elastic Load Balancer (optional): For future scalability. Amazon S3 : For static daily feed storage.
2. Architecture Diagram

3. Components
a. AWS EC2 Instance
a. AWS EC2 Instance
- Launch a t3.medium or larger EC2 instance depending on the application's workload.
- Use Amazon Linux 2 or Ubuntu as the operating system.
- Install Docker on the EC2 instance.
- Use Docker Compose to define and manage multi-container applications.
continued
c. Containers - 1.Web Server (Nginx/Apache)
c. Containers - 1.Web Server (Nginx/Apache)
- Acts as a reverse proxy, forwarding HTTP/HTTPS requests to the application server.
- Can also handle static file serving if needed.
- Use a programming language/framework like Next.js.
- Alternatively, use Node.js, Django, Flask, etc.
- The application code and dependencies are packaged into a Docker image.
- Use a programming language/framework like SprintBoot.
- Alternatively, use Node.js, Tomcat, Weblogic etc.
- The application code and dependencies are packaged into a Docker image.
- Run a database like MySQL or PostgreSQL in a separate Docker container.
- Alternatively, use Amazon RDS for a managed database solution.
- Run a cache like Redis in a separate Docker container.
- Alternatively, use Amazon Elastic for a managed caching solution.