Image Filtering application, a simpler Instagram version. It allows users to register and log into a web client, post photos to the feed, and process photos using an image filtering microservice.
I was provided with the application in its monolithic form. I refactored the application into microservices and deployed it to AWS.
For this project, I carried out the following:
- Refactored the monolithic application into
microservices
. - Created
s3 bucket
andRDS database
to store images and user data. - Set up each microservice to run on separate
Docker
containers. - Set up a
reverse proxy
server to route requests to the appropriate microservice. - Set up
CircleCI
as a CI/CD to build and test the application and push images toDockerHub
. - Deployed the DockerHub images to the
Elastic Kubernetes Service
(EKS
) cluster. - Employed
AWS CLI
to interface programatically with AWS services andkubectl
to manage the Kubernetes cluster. - Set up logging and monitoring for the microservices using
kubectl logs
.
The project has 2 main components:
- Frontend Web App -
Angular
web application built withIonic Framework
- Backend RESTful API - A
Node-Express
application with aPostgres
database
- Initial API contained logic for both
users
andfeed
endpoints. I had to refactor the API into two separate microservices that can be run independently. - Configured the Dockerfile for the frontend service.
- Created a reverse proxy running the
Nginx
server to route requests between frontend and the appropriate microservices.
- Created respective DockerHub repositories for each microservice.
- Set up
CircleCI
to build and test the application and push images toDockerHub
.
- Created a
Kubernetes
cluster onAWS EKS
and respectiveNodeGroups
usingkubectl
. - Deployed the DockerHub images to the
EKS
cluster. - Connected k8s services to allow communication between the microservices.
More screenshots are in the screenshots folder