Skip to content

✨ This repository is a hands-on example of cloud-enabled deployment with microservices, showcasing best practices in Dockerization, database connectivity, and full-stack integration across AWS, GCP, and local environments.

License

Notifications You must be signed in to change notification settings

sasmithx/Cloud-Deployment-In-Action

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloud Enabled Deployment In Action with AWS, GCP

🚀 This project demonstrates a cloud-enabled ☁️ microservices-based deployment using Spring Boot 🍃, React ⚛️, AWS 🟨, GCP 🔵, and Docker 🐳. It showcases how to build 🛠️, containerize 📦, and deploy 🚢 backend services and a frontend application with cloud-managed 🌐 and self-hosted 🖥️ databases.

This repository contains four projects:

  • course-service (Spring Boot + MySQL)
  • student-service (Spring Boot + MongoDB)
  • media-service (Spring Boot + Local file storage, can be extended to S3/MinIO)
  • frontend-app (React + TypeScript)

Backend Services

1. course-service

  • Entity: Course(id, name, duration)
  • Endpoints:
    • GET /courses
    • GET /courses/{id}
    • POST /courses
    • DELETE /courses/{id}
  • Default port: 8081
  • Configure MySQL settings

2. student-service

  • Document: Student(registrationNumber, fullName, address, contact, email)
  • Endpoints:
    • GET /students
    • GET /students/{id}
    • POST /students
    • DELETE /students/{id}
  • Default port: 8082
  • Configure MongoDB settings

3. media-service

  • Resource: files
  • Endpoints:
    • POST /files (multipart/form-data: file)
    • GET /files (list)
    • GET /files/{id} (fetch)
    • DELETE /files/{id} (delete)
  • Default port: 8083
  • Uses local disk storage at ./data/media by default (override with env var MEDIA_STORAGE_DIR).

Frontend (frontend-app)

  • React + TypeScript + MUI + Axios + Vite app with 3 sections: Courses, Students, Media
  • Scripts:
    • npm run dev (Vite dev server)
    • npm run build (TypeScript build + Vite build)
    • npm run preview (Preview built app)

Build

  • Backend: run mvn -q -e -DskipTests package at repo root to build services.
  • Frontend: run npm install then npm run dev inside frontend-app.

⚙️ Development Environment

In development mode:

  • MySQL and MongoDB run inside Docker containers with persistent volumes.
  • Backend services are started using the dev profile.

Start MySQL (with volume)

docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql -p 15000:3306 mysql:lts

Start MongoDB (with volume)

docker run --name mongo -v mongo-data:/data/db -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=mongo -p 16000:27017 -d mongo:latest

Both containers will persist data in their respective Docker volumes (mysql-data, mongo-data).


📌 Built With

Springboot React.js TypeScript NodeJS NPM MySQL MongoDB

📌 Deploy And Containerize

AWS Google Cloud Docker


Demo Video

Connecting Database Instances in AWS and GCP

Clone Project

  https://github.com/sasmithx/Cloud-Deployment-In-Action.git

License

This project is licensed under the MIT License - see the MIT License file for details.


📄 Student Information



About

✨ This repository is a hands-on example of cloud-enabled deployment with microservices, showcasing best practices in Dockerization, database connectivity, and full-stack integration across AWS, GCP, and local environments.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published