Skip to content

acodapella/pos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Geospatial API

A simple RESTful API that allows client to interact with point of interest

Summary

  • 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

Prerequisites

  • JAVA 8 should be installed
  • Maven should be installed
  • Postgres should be up and running at : localhost:5432

Run

  • Spring Boot App:
$ mvn clean spring-boot:run

Package and deploy to AWS

  • To package for AWS:
$ mvn clean package
  • Deploy to AWS:
$ sls deploy

Swagger UI

http://localhost:8080/swagger-ui.html

Basic metrics

http://localhost:8080/actuator/metrics

Tests

  • Unit tests:
$ mvn clean test
  • Load test write locally:
$ mvn gatling:test -Dgatling.simulationClass=com.earthdaily.pos.loadtest.LocalhostWriteTest

Sample load test write

  • Load test read locally:
$ mvn gatling:test -Dgatling.simulationClass=com.earthdaily.pos.loadtest.LocalhostReadTest

Sample load test read

  • Load test update locally:
$ mvn gatling:test -Dgatling.simulationClass=com.earthdaily.pos.loadtest.LocalhostUpdateTest

Sample load test update

AWS Lambda & RDS are deleted due to cost, can recreate if needed

  • 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

Coverage

  • 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.html

Contact

Ken Yu - 604.ken.dev@gmail.com

LinkedIn: https://www.linkedin.com/in/604kenyu/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages