├── .gitignore ├── README.md └── pull.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *node_modules*/ 3 | tmp/ 4 | npm-debug.log 5 | .vscode/ 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Distributed Microservices Workshop 2 | ===================================== 3 | 4 | The idea behind this example is to demonstrate certain distributed systems concepts. It has been created as part of Katacoda training. 5 | 6 | The application is loosely based on users purchasing events for a event. The application demonstrates the following concepts: 7 | * Service Discovery using Hashicorp Consul 8 | * Version Aware Routing 9 | * Retry Pattern against fragile systems 10 | * Rate Limiting, UPS and Circuit Breaking to limit data loss and downtime 11 | * Async messaging using Queues for stability and scalability 12 | * Web Tokens for Service Security 13 | * TLS and Key Rotation for Service Security 14 | * OpenTracing, Zipkin, Correlation IDs for logging and Prometheus for monitoring and observability 15 | 16 | This is designed to demonstrate concepts, not a copy/paste production implementation. 17 | 18 | ## Katacoda 19 | 20 | https://katacoda.com/courses/distributed-microservices 21 | 22 | ## Local Setup 23 | 24 | Requires NodeJS, Docker, Java 25 | 26 | Current Repository: 27 | 28 | ``` 29 | git clone https://github.com/katacoda/distributed-microservices-workshop.git 30 | cd distributed-microservices-workshop 31 | git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done 32 | git fetch --all 33 | git pull --all 34 | ``` 35 | 36 | Complete Demo Application: 37 | 38 | ``` 39 | git clone https://github.com/katacoda/microservices-ticketing-demo.git 40 | cd microservices-ticketing-demo 41 | git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done 42 | git fetch --all 43 | git pull --all 44 | ``` 45 | 46 | ### Download Dependencies 47 | Download the dependencies for your OS: 48 | 49 | Windows 50 | `git clone https://github.com/katacoda/microservices-ticketing-dependencies-windows.git` 51 | 52 | OSX 53 | `git clone https://github.com/katacoda/microservices-ticketing-dependencies-osx.git` 54 | 55 | Linux 56 | `git clone https://github.com/katacoda/microservices-ticketing-dependencies-linux.git` 57 | -------------------------------------------------------------------------------- /pull.sh: -------------------------------------------------------------------------------- 1 | for remote in `git branch -r`; do git branch --track ${remote#origin/} $remote; done 2 | --------------------------------------------------------------------------------