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
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 |
- 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
- 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
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
- 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'
- 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.
- 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
- 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]
- 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
Name | NEU ID | Email Address |
---|---|---|
shubham sharma | 001447366 | sharma.shubh@husky.neu.edu |
Cyril Sebestian | 001448384 | sebastian.c@huky.neu.edu |
Mansi Gandhi | 001494387 | gandhi.man@husky.neu.edu |