Skip to content

Refactor Udagram monolith architecture to microservice architecture and create CI/CD pipeline

Notifications You must be signed in to change notification settings

mahmoud-sharshar/Udagram-Microservices

Repository files navigation

Udagram Microservices

Udagram is a simple cloud application developed alongside the Udacity Cloud Engineering Nanodegree. It allows users to register and log into a web client, post photos to the feed, and process photos using an image filtering microservice.

The goals of this project:

  • Refactor monolith application to microservice.
  • Build CI pipeline for each microservice using Docker and Travic CI
  • Build CD pipeline for each microservice using AWS EKS.

Monolith vs Microservice architecture of the app:

  • The monolith app consists of two parts:

    1. Frontend - Angular web application built with Ionic Framework
    2. Backend RESTful API - Node-Express application
  • After refactoring to microservices, the app consists of four parts:

    1. Frontend service - Angular web application built with Ionic Framework
    2. Udagram feed api - node-express API for feed functionality of the app
    3. Udagram user api - node-express API for user functionality of the app
    4. Reverse proxy - to forward requests to appropriate service either feed service or user service structue of microservice app

Tech Stack

  • Nodejs
  • Docker
  • Travis CI
  • Kubernets
  • AWS EKS
  • AWS S3
  • AWS RDS

CI/CD Infrastructure

DockerHub Repositories

The DockerHub repositories of the microservices can be found in the following link:

Travis CI Build

we used travis CI to track changes on github repo then build new images and push them to docker hub repositories. The configuration of Travis CI can be found in .travis.yaml file Travis CI Build Travis CI Build

Conitnuous Integration

kubectl get nodes kubectl get nodes

kubectl get pods kubectl get pods

kubectl describe services screenshot 1 screenshot 2 screenshot 3

kubectl describe hpa kubectl describe hpa

kubectl logs <your pod name>

  • Feed service logs feed pod
  • User service logs user pod
  • Reverse proxy service logs reverseproxy
  • Frontend service logs Frontend logs

Resources

About

Refactor Udagram monolith architecture to microservice architecture and create CI/CD pipeline

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published