Microservices - Let's Build Some (V2)
Hands-on development of asynchronous micro-services using a bus architecture.
While “micro-services” is becoming a heavily over-worked term, it has been interpreted many ways. In this hands-on workshop, we will explore a particular style, tiny asynchronous services, that was the core of one of the most successful implementations. Given an animated specification of flow, we will embark on delivering the proposed services, wrestling with the issues common to this new paradigm. Participants have a choice of languages, with new starting code in Java, C#, and Ruby. At the end of the workshop, we will discuss MicroServices challenges and organizations that are optimized for such architectures.
Outline/Structure of the Workshop
- 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
- 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.
Software engineers, architects and anyone with an interest in learning how to build microservices.
Prerequisites for Attendees
The MicroServices Workshop is a coding workshop. You need to bring your favorite development notebook with tools installed. The sample code we start with is in GitHub. Please download it ( https://github.com/fredgeorge/microservice_workshop ) before the class, and import it into your favorite development tool.
There is sample code for Java, C#, and Ruby. At a minimum using your favorite tool, install the sample code and ensures it compiles. If there are missing libraries, DLL's, or gems, please install those.
Optionally, particularly if you have Docker installed, you may want your own RabbitMQ for the class. If using Docker, pull the rabbitmq:management image. Please open up the RabbitMQ ports (Google your OS for details) 5672 and 15672 so that your pairing partner can access your RabbitMQ.
All these details and more exist in the README for the GitHub repository and in the Java, C#, and Ruby directories.
If you don't get a chance to do this before class, we will spend the initial time in the class getting it done. You'll write more new services quicker if you can get this done before the workshop.
Good luck, and I look forward to seeing you in the class.