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:
- Frontend - Angular web application built with Ionic Framework
- Backend RESTful API - Node-Express application
-
After refactoring to microservices, the app consists of four parts:
- Frontend service - Angular web application built with Ionic Framework
- Udagram feed api - node-express API for feed functionality of the app
- Udagram user api - node-express API for user functionality of the app
- Reverse proxy - to forward requests to appropriate service either feed service or user service
- Nodejs
- Docker
- Travis CI
- Kubernets
- AWS EKS
- AWS S3
- AWS RDS
The DockerHub repositories of the microservices can be found in the following link:
- https://hub.docker.com/repository/docker/mahmoudsharshar/udagram-reverseproxy
- https://hub.docker.com/repository/docker/mahmoudsharshar/udagram-frontend
- https://hub.docker.com/repository/docker/mahmoudsharshar/udagram-api-user
- https://hub.docker.com/repository/docker/mahmoudsharshar/udagram-api-feed
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
kubectl logs <your pod name>