Camunda's recent (official) introduction of Camunda Cloud is a fascinating development in the workflow space. Why? Camunda Cloud is very developer-centric, and it appears to be the first such workflow solution to be offered in the cloud. Can it carve out a new niche? Is the market ready for it? Before we offer our thoughts on those questions, let's take a quick look at a demo we built using Camunda Cloud.
Camunda Cloud is based on Zeebe, a new workflow engine built from the ground up for massive scalability by the team at Camunda. This differentiates it from Camunda Platform (formerly Camunda BPM), which was built by a team at Alfresco and then forked & modified by Camunda. The latter can handle very high volumes of transactions itself and offers nearly complete support of the BPMN 2.0 specification, whereas Zeebe's support of the BPMN 2.0 specification is limited. To wit and as an example, here are the activity types supported by Zeebe and thus by Camunda Cloud:
Sub Process (Embedded Sub Process)
By comparison, Camunda Platform supports Script Tasks, Manual Tasks, Send Tasks and Business Rule Tasks in addition to those items. Of course, there are many other items in the BPMN 2.0 specification that aren't yet supported by Zeebe, including many Boundary Events as one example. So? If we take the cloud aspect of Zeebe out of the picture for just a moment, many clients & users may find that Camunda Platform will meet their needs more effectively than Zeebe/Camunda Cloud. Of course, Camunda Platform isn't offered in the cloud, and that will be a key consideration for some customers.
Another important difference is that Camunda Cloud model uses more of a pure state machine paradigm in that code is generally executed by clients instead of being executed in the engine. A huge advantage of this is the ability to generate code for use with Camunda Cloud remotely and using essentially any language. A disadvantage is increased architectural complexity. Which is better? That's a question for each client on a case-by-case basis.
Of course, there are more significant differences, but going through those in a detailed manner is out of scope for this blog post. If you need more information on the differences, please contact us at firstname.lastname@example.org.
Let's do a demo of a relatively simple process in Camunda Cloud and show some screen captures, so you can get a feel for the tool. First, here's the process model that we're going to use:
This model allows us to show the external clients that are used to complete Service Tasks, and it also allows us to show Camunda's new Tasklist application that is offered specifically for Zeebe/Camunda Cloud. There are - of course - features that we aren't showing that are out of scope for this blog entry; please let us know at email@example.com if you have questions about those additional features.
Let's look at two aspects of the diagram before we run an instance of the process. First, each Service Task has a type, which is used to tie a client to a specific task. We'll pick on the Check Stock task here:
As noted, you can build a client using essentially any language. Camunda provides official clients in Go and Java, and you can use any client that can interact via the gRPC protocol (https://grpc.io/). I'll illustrate a very simple ZeebeWorker definition in Java here:
The User Tasks can be used in conjunction with the previously-mentioned Camunda Cloud Tasklist application, which we'll show briefly in a moment. To use Tasklist, you create forms in the Camunda Modeler. Currently, those forms are very simple, but Camunda has already shown screen captures of significant additional features for these forms. Here's a screen capture of a part of the form for the Enter the Order Details step above:
These forms get created in JSON, which is a departure from the XML specified for the BPMN 2.0 and DMN 1.3 standards that Camunda otherwise supports in Camunda Modeler. In the current release, you have to copy/paste that JSON into the process model to define the forms links. In a recent webinar, Camunda showed a choice box for choosing the forms within Camunda Modeler, so expect that feature soon.
To start an instance of the process, we could use the client API - e.g. in Java as above - or we could use the zbctl application that is provided by Camunda. There is no out-of-the-box REST API, though you could easily create one using one of the official or community Zeebe/Camunda Cloud clients. To kick off an instance of an already-deployed process, I would simply need to run a version of this command: zbctl --insecure create instance order-to-invoice. It is also possible - among other things - to specify variables when starting an instance, but that isn't required here. (NOTE: I'm using a local instance of the Zeebe broker with its default configuration, so I need to use the --insecure switch. If using Camunda Cloud, you wouldn't use this switch.)
Once we have an instance started, we can go to Tasklist and find our Enter the Order Details task. Once we claim it and fill it out, it looks like this:
As a side note, we love the clean and easy-to-use interface that Camunda designed for Tasklist (and Operate, as shown below). There are no unnecessary components, and it becomes immediately familiar to the user.
Once we complete the task using the Complete Task button, it will go ahead and assign a new User Task for us, in this case Initial Order Review. If we look at Operate, Camunda's tool for monitoring Camunda Cloud process instances, we can see that the instance is sitting at that step:
We won't run through the rest of the tasks in the model in this blog entry, as they don't illustrate any additional concepts that haven't already been discussed.
A few quick words on licensing... And no, I'm not an attorney, though I do play one on TV. 🙂 Zeebe is licensed under the terms of a proprietary license, which is permissive aside from a restriction specifying that the user cannot "provide a commercial Process Automation Service". This is clearly a response to companies such as Amazon, who have provided cloud-based versions of many of the popular open-source tools that are in the market today. But for organizations who want to use it for workflow internally, there don't appear to be any restrictions. Of course, please consult your own counsel and ask them to review & interpret the licensing terms before using Zeebe/Camunda Cloud for any purpose.
The same is not true for Tasklist and Operate, which are offered under a trial license that prohibits all production use. Organizations using Zeebe who want to use it without paying for support could do so by building their own user interfaces that are similar to Tasklist and Operate; those custom applications/user interfaces could then use the same data that the proprietary Camunda apps use. (That information is available in Elasticsearch if using the Elasticsearch exporter that comes with Zeebe.) If you have additional questions on that topic, please don't hesitate to contact us at firstname.lastname@example.org.
So... where does Camunda Cloud fit in the market? We believe that there is an appetite in the market for cloud-based, developer-centric workflow, but we believe it's a niche. Other tools - such as Flokzu, which Summit58 also works with - offer more citizen developer-friendly features, which many companies want when they're looking for a cloud-based tool. How big is the niche in the market that is looking for cloud-based, developer-centric workflow? We don't know, but we can say with confidence that Camunda offers a very, very promising product for those customers.
Overall, Camunda Cloud/Zeebe is surprisingly easy to use, and it will likely support massive throughput volumes (albeit with some latency due to Internet-based communications). We think Camunda has built a winning product with Zeebe/Camunda Cloud, but does the old quote from Field of Dreams apply here? (For those who are a bit younger than me, that quote was: "If you build it, they will come.") In this case, Camunda has built it, but will they come?
If you need additional information on Camunda Cloud or want to know whether it might be right for your organization, please don't hesitate to contact us at email@example.com.