Microservices are standing at the "Peak of Inflated Expectations". It's immeasurable the number of developers and companies that want to bring in this new development paradigm and don't know what challenges they will face. Of course, the challenges and the reality of an Enterprise company that has been producing software for the last 10 or 20 years is totally different from the start-up company that just released its first software some months ago.
Before adopting microservices as an architectural pattern, there are several questions that need to be addressed:
- Which languages and technologies should I adopt?
- Where and how do I deploy my microservices?
- How do I perform service-discovery in this environment?
- How do I manage my data?
- How do I design my application to handle failure? (Yes! It will fail!)
- How do I address authentication, monitoring and tracing?
Wouldn't it be interesting if the developer could have his or her own playground to explore and become familiarized with these approaches?
Red Hat Developers has worked intensively to integrate different opensource technologies and create a showcase of how cloud-native apps can interact in a microservices architecture: The Helloworld-MSA playground!
This distinct demo allows developers execute some "helloworld" microservices, built using different technologies, and explore the following features:
- Different implementations: WildFly Swarm, Spring Boot, Vert.X and NodeJS.
- 3 invocation patterns: Browser as a client, API-Gateway, Chained invocation;
- Service-registry, Self-healing, Load-balancing and Blue/Green deployments - Provided by Openshift;
- JVM Monitoring - Provided by Jolokia;
- Service Monitoring - Provided by Hystrix Dashboard via Kubeflix;
- Service Tracing - Provided by Zipkin via Fabric8's Kubernetes Zipkin;
- Circuit breaker and Fallback - Provided by Hystrix;
- REST invocation - Provided by Feign via HystrixFeign;
- REST API specification - Provided by Swagger;
- CI/CD pipelines - Provided by Jenkins with Pipeline plugin.
All these pieces are deployed via the CDK (Container Development Kit), which is essentially a Vagrant file that creates a virtualized environment with Docker, Kubernetes and Openshift Enterprise running on RHEL (Red Hat Enterprise Linux).
To have a fast introduction of Helloworld-MSA, you can also watch Burr Sutter's video:
Besides the instruction, developers can also find the source-code of the microservices, api-gateway and frontend in the following GitHub organization: https://github.com/redhat-helloworld-msa/
A rendered HTML version of the instruction can be found in the following link: https://cdn.jsdelivr.net/gh/redhat-helloworld-msa/helloworld-msa@master/readme.html - Try it yourself!
We hope that you enjoy! And remember: We love feedbacks!