Airbnb Clone with CI/CD(Continuous Integration/Continuous Delivery) Pipeline - A DevOps Project
Developed an Airbnb clone with frontend in React.js and 4 microservices viz. Login microservice, Property microservice, Booking microservice, Dashboard Microservice. All the microservices were deployed on 4 different AWS VPCs addressing the Y-axis scale of AKF Scale Cube.Database used was MongoDB with sharding implemented to address the Z-axis scale of AKF Scale Cube.
Frontend: The frontned was deployed on Heroku which has inbuilt load-balancing. We implemented CI/CD pipeline on the deployed frontend with a trigger on Github Repository. As soon as any change is pushed on to the github master branch, the pipeline will start with building process and deploying it automatically on a successful build.
Login Microservice and Booking Microservice: These microservices' architechture was based on Kubernetes Cluster. We created an AWS EKS(Elastic Kubernetes Service) cluster with an auto-scaled node groups having capacity from 2-5. The nodes will have 2 pods in each of them running the docker image of the Login Service and another cluster running Booking Service.
Property Microservice and Dashboard Micrservice: These microservices' architechture uses AWS CodeBuild and AWS ECS(Elastic Container Service) cluster. The CodeBuild will trigger a new build as soon as any change is pushed to the github repository and in turn starting the CI Pipeline. On successful build, the codebuild will push the new docker image to the AWS Elastic Container Registry(ECR) on which the ECS cluster will be running. As soon as the new image is pushed with the "latest" tag to that image, the ECS Fargate cluster will acknowledge that change and will start provisioning the instances to run the latest image and hence completing the CI/CD Pipeline.
Nov 2019.
[code] [detailed-architechture]

Developed an AP and CP Database System using Vector Clock Concept
This is a very unique project. I created a database system with two modes i.e Available-Partition Tolerant(AP) mode and Consistent-Partiton Tolerant(CP) mode. The database was developed using Java and exploiting its multithreading concept. The database system was dockerized and runs simultaneously on 5 docker containers called nodes. The containers behave differently based on different modes.
AP Mode: The system has no master and no slaves. Each and every nodes accept the write and read operations. When there is no partition, the operation done by one node is propogated to all the other nodes by broadcasting the new vector clock. In case of network partition, all the nodes accept write and read and update their own vector clock. After the network resets, the vector clocks are used to resolve the conflict. over here, the conflict resolution is done by accepting the latest change done by the highest node.
CP Mode: This system strives for consistency. Hence initially, there will be one master and 4 slaves. Only master can write into the database. Thus, all the write requests sent to slave nodes are proxied to the master node. Slave nodes can accept the read requests as the whole system is consistent. Now, if the master node goes down then the new master is elected using bully algorithm(preference to lower nodes) and a new master is elected.
Oct 2019.
[code]

Hackathon Management System using Spring Framework
Hackathon Management System is a platform which brings organisers and hackers together. This system allows hackathon admins to create hackathons and the hackers to participate in the hackathons. It also provides invitation to a non-member and generates a revenue report at the end of each hackathon.
The system's frontend is developed using AntDesign and React.js. The backend is developed using Spring framework and its various modules. The system uses JPA as an Object-Relational-Mapping tool to interact with the MySQL database. Along with that, the system provides RESTful APIs developed using Spring MVC to help frontend interact with the backend system. It also takes advantage of Spring IOC and Spring Aspect Oriented Programming concepts to enhance the performance of the backend. The system is deployed on AWS using Elastic BeanStalk which provides Java Runtime Enviornment and frontend was deploed on a load-balanced EC2 instances.
May 2019.
[code] [demo]

Stock Portfolio Suggestion Engine using Python Flask
Stock Portfolio Suggestion Engine provides suggestions to users on which stocks to buy based on various investment strategies like Ethical Investing, Growth Investing, Value Investing and many more. The frontend is developed using React.js and the backend is developed using Python. The backend provides RESTful APIs developed using Flask microframework which helps frontend's communication with backend. The system provides the stock report using graphs provided with the help of Rechart.js to show the current behavior of that stock. The stock data is acquired using IEX and Aplha Vantage.
Apr 2019.
[code]

LinkedIn Prototype using MERN Stack
Deployed a LinkedIn Prototype using MERN Stack on Amazon Web Services(AWS) carried as an Enterprise Distributed Systems project. It uses Kafka as message queues and for publish/subscribe architechture. Along with MongoDB, it also uses MySQL database for data which requires high security. It keeps in mind the enterprise wide use and thus the architechture with thich the application has been developed and hosted supports Availability and Partitioning. For faster responses, it also uses Redis caching of both the databases' data. Also carried out testing using Mocha Test Cases and JMeter tool.
Nov 2018.
[code]

Statistical Analysis of Hospital Data using MPC
With the increasing competition and the need to apply machine learning to data to get useful insights is also increasing. This project gives a proof of concept to use Multi Party Computation(MPC) in the real world to apply data mining algorithms on data which requires high security. Click here to know more about Multi Party Computation. This project forecasts the expected number of patients of each hospital taking part in the computation using ARIMA Model. It has python flask's backend and React frontend to communicate with the backend. It uses mongoDB as database.
Nov 2018.
[code]

HomeAway Prototype using GraphQL
Deployed a HomeAway Prototype using GraphQL to eliminate some of the problems like over-fetching, under-fetching etc that the RESTful API suffers from.
Sept 2018.
[code]

HomeAway Prototype using MERN Stack
Deployed a HomeAway Prototype using MERN Stack on Amazon Web Services(AWS). It also uses Kafka as message queues and for publish/subscribe architechture and Redux for state management. It keeps in mind the enterprise wide use and thus the architechture with thich the application has been developed and hosted supports Availability and Partitioning. Used PassportJS and JWT Tokens for authentication.
Aug 2018.
[code]

E-Commerce Prototype using Django
Developed a simple e-commerce featured website using Django. Uses mongoDB as a database.
Mar 2018.