Running on...
- a MySQL
AWS RDSDB - a
AWS ESElasticSearch query engine &AWS SQSbroker- great Command/Query Responsibility Separation!
- lightweight
k8s/Dockerorchestration forAWS EKS/EC2
- bookService
- customerService
- each running NodeJS / Express API
- handle biz & logic concerns
- Integrated w/
AWS SQS,RDS, &ES
- bookBFF
- customerBFF
- each running a Python server
- handle header parsing, auth, and response transformations
- (on a user-client basis — ie. different responses for Desktop / Mobile)
- reccCircuitBreaker
- Sets a 3 second timeout for calls to the service and returns error codes appropriately
504- Timeout |503- Open Circuit |204- Not Found |200- Success
Config files for k8s deployment are provided at the top-level project directory.
- Apply the k8s config with:
kubectl apply -f circuitBreakerConfig.yaml -f bookConfig.yaml -f customerConfig.yaml- Each container has a 5 second liveness check
- The books services have 2 replicas, while customers have 1
- See all services / pods:
kubectl get all -n book-app
Other Helpful Commands**
- See Container Logs:
kubectl logs -n book-app <POD ID> <CONTAINER NAME> - SSH into Pod:
kubectl exec -it <POD ID> -n book-app -- bash - Describe Pod:
kubectl describe pods -n book-app <POD ID> - Restart Deployment (ie. after updating some container):
kubectl rollout restart deployment <DEPLOYMENT NAME> -n book-app
- All the services can be deployed via Docker (Dockerfiles provided in each respective directory):
- See the setup script for help with docker deployment
- Setting up a Dev & Test environment (in a VM):
- A
Vagrantfile&/vagrant_scripts/are provided for provisioning both- update the Vagrantfile to use whichever script you'd like
- Install
Vagrant&VirtualBox - run
vagrant upto start the VM - run
vagrant sshto enter the VM
- A
- Test scripts are provided in
/tests/:- see the setup script for help running it

