Giter VIP home page Giter VIP logo

csye6225-ccwebapp's Introduction

AWS (CSYE 6225)


Summary

This is a web application Library Management system built with spring boot and deployed on AWS

  • EC2 instances are built on a custom AMI using packer
  • Setting up the network and creation of resources is automated with Cloud formation, aws cli and shell scripts
  • Instances are autoscaled with ELB to handle the web traffic
  • Created a serverless application to facilitate the password reset functionality using SES and SNS
  • The application is deployed with Circle CI and AWS Code Deploy

Architecture Diagram

aws_full

Tools and Technologies

   

Infrastructure VPC, ELB, EC2, Route53, Cloud formation, Shell, Packer
Webapp Java, Spring Boot, MySQL, Maven
CI/CD Circle CI, AWS Code Deploy
Alerting and logging statsd, Cloud Watch, SNS, SES, Lambda
Security WAF

Infrastructure-setup

  • Create the networking setup using cloud formation and aws cli
  • Create the required IAM policies and users
  • Setup Load Balancers, Route53, DynamoDB, SNS, SES, RDS, WAF

Webapp

  • The Library Management System Web application is developed using Java Spring Boot framework that uses the REST architecture
  • Secured the application with Spring Security Basic authentication to retrieve user information
  • Created Maven profiles to run the app locally and when deployed on AWS
  • Storing the images of Book covers in S3
  • Generating Pre-signed URL to with expiration of 2 minutes

Build Instructions

Pre-Requisites: Need to have postman installed

  • Clone this repository into the local system
  • Go to the folder csye6225/dev/ccwebapp/webapp
  • Download all maven dependencies by going to File > Settings > Maven > Importing.
  • Run WebappApplication by going to csye6225/dev/ccwebapp/webapp/src/main/java/com/neu/webapp/WebappApplication.java

Running Tests

  • Used mockito and junit for test case.
  • Run WebappApplication test cases: open the webapp aplication on your IDE -> right click on webapp -> Run 'All Tests'

CI/CD

  • Created a webhook from github to CircleCI
  • Bootstrapped the docker container in CircleCI to run the unit tests, integration tests and generate the artifact
  • The artifact generated is stored S3 bucket and deployed to an autoscaling group. ci-cd

Auto scaling groups

  • Created auto scaling groups to scale to the application to handle the webtraffic and keep the costs low when traffic is low
  • Created cloud watch alarms to scale up and scale down the EC2 instances

Serverless computing

  • Created a pub/sub system with SNS and lambda function
  • When the user request for a password reset a message is published to the SNS topic.
  • The lambda function checks for the entry of the email in DynamoDB if it has no entry then it inserts a record with a TTL of 15 minutes and sends the notification to the user with SES ![alt text]lambda
  • Implemented CI to build out an AMI and share it between organization on AWS
  • Created provisioners and bootstrapped the EC2 instance with required tools like Tomcat, JAVA, Python

Team Information

Name NEU ID Email Address
shubham sharma 001447366 [email protected]
Cyril Sebestian 001448384 [email protected]
Mansi Gandhi 001494387 [email protected]

csye6225-ccwebapp's People

Contributors

gandhi-mansi avatar shubh1646 avatar cyrilsebastian1811 avatar tparikh avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.