Skip to content

This repository contains my first large academic project in Cloud Computing, where I learned the foundations of microservices, Docker, Kubernetes, and observability

Notifications You must be signed in to change notification settings

VascoMaria/cloud-computing-foundations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloud Computing Foundations

This repository contains my first large academic project in Cloud Computing, developed as part of the Cloud Computing course in the MSc program at FCUL (Faculty of Sciences, University of Lisbon). It represents the starting point of my hands-on experience with cloud-native systems, where I learned and applied the fundamental concepts of distributed systems, microservices, containerization, and cloud deployment.


📌 Project Context

This project was developed in an academic context as part of a Cloud Computing course, where the objective was to design and implement a cloud-native application composed of multiple services that expose business capabilities through APIs.

The project was structured as if developed by a startup team, following a realistic cloud engineering workflow from initial design to deployment and evaluation.

The focus of the project was learning by doing, rather than building a production-ready system.


🎯 Project Goals

  • Design a cloud-native distributed application
  • Implement multiple independent microservices
  • Expose functionality through REST APIs
  • Use Docker for containerization
  • Deploy and orchestrate services using Kubernetes
  • Implement monitoring, scalability, and observability
  • Gain practical experience with cloud infrastructure and tooling

🏗️ Architecture Overview

The system is composed of several loosely coupled microservices, each responsible for a specific business capability, such as:

  • Books service
  • Reviews service
  • Recommendations service
  • User management service
  • Wishlist service
  • Frontend / API gateway service

Key architectural characteristics:

  • Microservices communicate using REST and gRPC
  • Services are containerized using Docker
  • Deployment is managed through Kubernetes manifests
  • Scalability is supported via Horizontal Pod Autoscaling (HPA)
  • Monitoring and metrics are collected with Prometheus
  • Visualization is provided through Grafana
  • Databases run in containers with persistent volumes

🧰 Technologies Used

  • Python (backend microservices)
  • Docker & Docker Compose
  • Kubernetes
  • Prometheus & Grafana
  • REST & gRPC
  • SQLite / containerized databases
  • Shell scripting for automation

📁 Repository Structure

.
├── docker-compose.yaml
├── *.yaml # Kubernetes deployments, services, HPA, monitoring
├── services/ # Application microservices
│ ├── booksService/
│ ├── reviewsService/
│ ├── recommendations/
│ ├── userManagement/
│ ├── wishlistService/
│ └── frontService/
├── prometheus.yaml
├── grafana.yaml
└── README.md

Generated files, datasets, credentials, and secrets are intentionally excluded from the repository.


🚀 Deployment & Execution

The project supports:

  • Local execution using Docker Compose
  • Local Kubernetes clusters (e.g., Minikube or MicroK8s)
  • Cloud-based Kubernetes clusters

Deployment involves:

  1. Building container images
  2. Deploying services and databases
  3. Applying Kubernetes manifests
  4. Exposing selected services through ingress or load balancers
  5. Monitoring system behavior using Prometheus and Grafana

This repository focuses on architecture, configuration, and learning, rather than providing a one-click production deployment.


📊 Monitoring & Observability

The system includes:

  • CPU and memory usage per pod
  • Request counts and response times
  • Health checks (liveness and readiness probes)
  • Centralized dashboards for visualization

These components were used to analyze:

  • system performance
  • scalability behavior
  • reliability
  • resource usage awareness

📚 Learning Outcomes

Through this project, I gained practical experience with:

  • Cloud-native application design
  • Microservices architecture
  • Container orchestration
  • Infrastructure-as-code concepts
  • Observability and system evaluation
  • Cost and scalability considerations

This repository represents where I started learning Cloud Computing in practice.


⚠️ Disclaimer

This is an academic learning project. It is not intended to be production-ready, but to demonstrate understanding of core cloud computing concepts and tools.


📄 License

This project is shared for educational and portfolio purposes.

About

This repository contains my first large academic project in Cloud Computing, where I learned the foundations of microservices, Docker, Kubernetes, and observability

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages