Running on...
- a MySQL
AWS RDS
DB - a
AWS ES
ElasticSearch query engine &AWS SQS
broker- great Command/Query Responsibility Separation!
- lightweight
k8s
/Docker
orchestration 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 up
to start the VM - run
vagrant ssh
to enter the VM
- A
- Test scripts are provided in
/tests/
:- see the setup script for help running it