Orchestrating Microservices with Zeebe

[#item_title]

Last Tuesday, I gave a presentation about “Orchestrating Microservices with Zeebe” for a London Meetup. In this blog post you can find the slides and video for the presentation – but first, a few words about the content of the presentation.

I’ve focused more on the orchestration side of the example that you can find here: http://github.com/salaboy/from-monolith-to-k8s[1]. Instead of spending time discussing the frameworks used for the example, I’ve highlighted the importance of exposing the business logic and flow of our applications to other relevant stakeholders. You can always follow the links to download and run the example in your own Kubernertes Clusters.

The first half of the presentation was focused on the example scenario and some tools that I’ve used to build the Cloud Native version of the application. This intro covered the use of Spring Cloud Gateway[2] with Resillient4J[3] to provide a single entry point for all our services from outside the cluster.

After showing some of these projects in action and describing why you might want to look at them for your own projects, I spent some time describing the common pain points and challenges of building these kinds of applications and how we can use Zeebe, a workflow engine, to tackle some of these challenges.

Slides[4]

https://www.youtube.com/watch?v=ZM9dfvXAncQ[5]

During the demo, I focus 3 versions of the workflow model that built on top of each other.

First, we replace the code inside the Call for Proposals (C4P) service with a workflow model and we delegate the execution of this model to the workflow engine. You can find the code that was used before adding the workflow engine interaction here[6]. The new version where the following model is used can be found here[7]. The main difference in code is that now the Call for Proposal service doesn’t know or care which service is called next, that decision is now delegated to the following model (Version 1).

Version 1

Version 1

The second version of the model adds on top of the first one, by changing the model, hence changing the sequence of interactions, demonstrating how useful is to have the core business logic expressed as a model that can be shared with non-technical teams.

The new model covers the scenario where we need to send a confirmation link to our potential speakers to confirm their participation, before publishing the proposal to the Agenda.

Version 2

Version 2

Now that we have two versions of our workflow model, you can clearly explain how your Cloud Native applications are working today and how they were working yesterday, as these models can serve as live documentation about how your compony/organization is currently operating.

The third version of the model included an example of time-related actions, such as notifications or “Cron Jobs” that needs to be triggered at a certain point in time-related to the context of our execution. In other words, time-sensitive actions that are associated with each individual instance of our models.

Version 3

Version 3

This last version exemplifies notifications that needs to be sent to the committee only when they haven’t reviewed a new proposal after a certain period of time. This kind of mechanism, allows us to implement reminders and notifications which can help us to delivery a better service to our “customers” in these case our potential speakers.

It is important to remember that, the workflow engine keeps track of all the data about these executions and send this data to ElasticSearch where it is indexed and ready for reporting and analytics. For this specific example, it might be interesting to know the average time that takes to make a decision in a proposal and configure the notifications according to a deviation from that time.

There are loads of other interesting details inside the project, and as I mention in the presentation I want to thank mcruzdev1[8] for helping me to make the application better, more real and more complete. If you are interested in running this example in your own cluster visit: http://github.com/salaboy/from-monolith-to-k8s[9] and get in touch (via twitter @Salaboy[10] or github) if you want to get your hands dirty and help me and mcruzdev1[11] to keep improving the app to make a better example for everyone to use.

References

  1. ^ http://github.com/salaboy/from-monolith-to-k8s (github.com)
  2. ^ Spring Cloud Gateway (spring.io)
  3. ^ Resillient4J (github.com)
  4. ^ Slides (www.slideshare.net)
  5. ^ https://www.youtube.com/watch?v=ZM9dfvXAncQ (www.youtube.com)
  6. ^ here (github.com)
  7. ^ here (github.com)
  8. ^ mcruzdev1 (twitter.com)
  9. ^ http://github.com/salaboy/from-monolith-to-k8s (github.com)
  10. ^ twitter @Salaboy (twitter.com)
  11. ^ mcruzdev1 (twitter.com)

Source URL: Read More
The public content above was dynamically discovered – by graded relevancy to this site’s keyword domain name. Such discovery was by systematic attempts to filter for “Creative Commons“ re-use licensing and/or by Press Release distributions. “Source URL” states the content’s owner and/or publisher. When possible, this site references the content above to generate its value-add, the dynamic sentimental analysis below, which allows us to research global sentiments across a multitude of topics related to this site’s specific keyword domain name. Additionally, when possible, this site references the content above to provide on-demand (multilingual) translations and/or to power its “Read Article to Me” feature, which reads the content aloud to visitors. Where applicable, this site also auto-generates a “References” section, which appends the content above by listing all mentioned links. Views expressed in the content above are solely those of the author(s). We do not endorse, offer to sell, promote, recommend, or, otherwise, make any statement about the content above. We reference the content above for your “reading” entertainment purposes only. Review “DMCA & Terms”, at the bottom of this site, for terms of your access and use as well as for applicable DMCA take-down request.

Acquire this Domain
You can acquire this site’s domain name! We have nurtured its online marketing value by systematically curating this site by the domain’s relevant keywords. Explore our content network – you can advertise on each or rent vs. buy the domain. [email protected] | Skype: TLDtraders | +1 (475) BUY-NAME (289 – 6263). Thousands search by this site’s exact keyword domain name! Most are sent here because search engines often love the keyword. This domain can be your 24/7 lead generator! If you own it, you could capture a large amount of online traffic for your niche. Stop wasting money on ads. Instead, buy this domain to gain a long-term marketing asset. If you can’t afford to buy then you can rent the domain.

About Us
We are Internet Investors, Developers, and Incubators- operating a content network of several thousand sites while federating 20+ eCommerce and SaaS startups. With our proprietary “inverted incubation” model, we leverage a portfolio of $15M+ in valued domains to impact online trends, traffic, and transactions. We use robotic process automation, machine learning, and other proprietary approaches to power our content network. Discover our work!

Share