MicroServices: Let's Build Some!
It is one thing to talk about MicroServices. It is another altogether to have to build them.
After a brief introduction of MicroService principles, we will watch an animation of a MicroService environment. We will start with a pre-built skeleton microservice environment (message bus plus a couple of RESTful services running against it). We will then design and implement additional services to broaden the overall functionality. These additional services can be written in any language that will run on the participants laptop. While pairing is strongly encouraged, it is not required.
In the final stage, different pairs will implement different services, yet they will all run together implementing the animation.
We wrap up with the participants making observations on what they learned (and how it may be different from MicroServices they are currently implementing, if any).
Outline/structure of the Session
- Introduction to MicroServices
- Sample asynchronous MicroService application
- Installation of sample MicroServices for the exercise
- Installing RabbitMQ drivers for your language
- Testing access to RabbitMQ server
- Implementing a new MicroService
- Discussion of effort
- Implementing a second MicroService
- Discussion and review of code
- Implementing the application (teams develop different services that will work together)
- Wrap up observations by participants
The focus of the workshop will be on:
- Understanding how to design asynchronous service architectures,
- Creating small, yet functional, services rather than larger services,
- Reducing coupling to the bare minimum (JSON packets with extra fields ignored), and
- Debugging asynchronous systems.
Developers (we will be writing code)
Participants should come with a development-capable laptop with development tools for their favorite language already installed. Preferred environments are Ruby and Java, but C#, Python, and Node.js are also feasible (with less support from the instructor).
Dedicated access point for allowing users to connect to an in-room server that I will supply.
White board and/or flip charts with markers