A simple RESTful API that allows client to interact with point of interest
- Functional requirement satisfied
- RESTful api with permanent data store
- Supports POST, PUT & GET
- Object contains various primitive attributes
- PUT respect should not create if POST wasn't executed in advance
- Non-Functional requirement satisfied
- Average load:
- 1000 POST/PUT
- 2000 GET
- Spike:
- 2000 POST/PUT
- 4000 GET
- Basic runtime metrics
- Rotatable logging
- Average load:
- JAVA 8 should be installed
- Maven should be installed
- Postgres should be up and running at : localhost:5432
- Spring Boot App:
$ mvn clean spring-boot:run- To package for AWS:
$ mvn clean package- Deploy to AWS:
$ sls deployhttp://localhost:8080/swagger-ui.html
http://localhost:8080/actuator/metrics
- Unit tests:
$ mvn clean test- Load test write locally:
$ mvn gatling:test -Dgatling.simulationClass=com.earthdaily.pos.loadtest.LocalhostWriteTest- Load test read locally:
$ mvn gatling:test -Dgatling.simulationClass=com.earthdaily.pos.loadtest.LocalhostReadTest- Load test update locally:
$ mvn gatling:test -Dgatling.simulationClass=com.earthdaily.pos.loadtest.LocalhostUpdateTest- Load test write on AWS:
$ mvn gatling:test -Dgatling.simulationClass=com.earthdaily.pos.loadtest.AwsWriteTest- Load test read on AWS:
$ mvn gatling:test -Dgatling.simulationClass=com.earthdaily.pos.loadtest.AwsReadTest- Load test update on AWS:
$ mvn gatling:test -Dgatling.simulationClass=com.earthdaily.pos.loadtest.AwsUpdateTest- Generate JaCoCo report for unit test result:
$ mvn clean jacoco:prepare-agent package jacoco:report- Open JaCoCo report in browser
$ open ./target/site/jacoco/com.earthdaily.pos.api.contract.v1/PosController.htmlKen Yu - 604.ken.dev@gmail.com
LinkedIn: https://www.linkedin.com/in/604kenyu/


