Automatiko 0.9.0 released

Fault tolerance support, external file storage, data encryption

Posted by Automatiko team on October 26, 2021 · 6 mins read

We are pleased to announce a new release of Automatiko - 0.9.0

Highlights

  • Fault tolerance for service invocation
  • Data encryption
  • External storage for files
  • Process management UI improvements
  • GraphQL user task subscription and error handling improvements
  • Workflow as Function and Function flow DevUI improvements

Fault tolerance for service invocation

When working with workflows majority of work is performed by some services. These services can be local (part of the workflow) or remote (various services exposed via different means). Regardless of the type of service they might fail and by that have impact on running workflows.

Automatiko will handle errors in various ways to make sure no information is lost and avoid unneeded re-execution of tasks. But this might be not be enough, especially in situations where

  • service is not responding in timely manner
  • service is overloaded
For these kind of issues there might be different solutions and that's exactly what Automatiko introduced in this release - a fault tolerance addon.

Fault tolerance addon comes with two main features

  • circuit breaker
  • timeout
Circuit breaker allows to stop hitting failing service all over again and monitor its availability. As soon as it is up and running again it will not only open the new instance to call that service but will also resume workflow instances that failed because of that problem. In other words it will selfheal the service instances.
Timeout on the other hand will keep track of service invocation duration. If configured on a service task it will automatically cancel the exeecution and throw an exception that can be easily managed via error handling machanism.

Have a look at Automatiko documentation for more information about fault tolerance for service invocation.

Data encryption

In environments where workflows deal with sensitive data, protection of data is important not just during execution but also when stored. Encryption at transit and encryption at rest are the common contepts in this aspect. Automatiko introduces support for encryption at rest that can be enabled easily regardless of the type of data store used. This mainly applies to workflow instance persistence but is also applicable to other compoents such as external file storage described below.

Have a look at Automatiko documentation for more information about data encryption.

External storage for files

Handling files within workflow is quite common. Depending of type of files they might be considered as regular data objects, meaning their content will be stored as part of the workflow instance. In many cases storing files externally has several benefits

  • files are stored in secure and efficient environment that is dedicated to file storage
  • offloading workflow instance storage from persisting file content that might be of significant size
  • allow to access it directly via sharable links
With this release, users are given three types of external storage for thier files
  • local file system
  • Amazon S3
  • Google Cloud Storage
Regardless of what type of storage is selected there is nothing specific to them on the workflow level. They integrate seamlessly with complete execution environment.

Have a look at Automatiko documentation for more information about external storage of files managed by workflows.

Process management UI improvements

Process management addon is one of the most popular and their simple yet useful UI as well. This release comes with few small enhancements to make it even more useful.

  • UI is now mobile friendly to allow to have quick insights into the running service
  • export operation of the instance is avilable from instance details view

GraphQL user task subscription and error handling improvements

GraphQL service interface has been very well received from its introduction in 0.7.0 and has been further improved in 0.8.0 and 0.9.0. With this release main part is about dedicated User Tasks subscription that allows to easily build up task inbox that will listen to new user tasks being created and deliver them as notifications. All in secure way meaning only tasks assigned to the user who subscribed are going to be delivered.

In addition to user task subscription few additional improvements have been included

  • update of data model of workflow instance
  • error information including workflow related error messages instead of raw DataFetching error
  • signal handling both in top level workflows and sub workflows

Workflow as Function and Function flow DevUI improvements

A Dev UI (that is accessible via /q/dev endpoint when running in development mode) has now been improved for workflow as function and workflow as function flow. Each has now handy button to copy a cURL command to execute particular function.

Copu cURL command from Dev UI Copu cURL command from Dev UI.

Once you click on Copy cURL button you will get complete curl command in the clipboard

With binary mode for cloud events


  curl -X POST http://localhost:8080/ -H "Content-Type:application/json; charset=UTF-8" -H "ce-id:9960c474-2483-4ef8-aec2-7a758f434dcc" -H "ce-specversion:1.0" -H "ce-type:io.automatiko.examples.userRegistration" -H "ce-source:string" -d "{\"user\":\"{
\"id\":\"\",
\"username\":\"string\",
\"firstName\":\"string\",
\"lastName\":\"string\",
\"email\":\"string\",
\"password\":\"string\",
\"phone\":\"string\",
\"userStatus\":\"\"
}\"}"

With structured mode for cloud events


  curl -X POST http://localhost:8080/ -H "Content-Type:application/cloudevents+json; charset=UTF-8" -d "{\"id\":\"9960c474-2483-4ef8-aec2-7a758f434dcc\",\"specversion\":\"1.0\",\"type\":\"io.automatiko.examples.userRegistration\",\"source\":\"string\",\"datacontenttype\":\"application/json;charset=UTF-8\",\"data\":{\"user\":\"{
  \"id\":\"\",
  \"username\":\"string\",
  \"firstName\":\"string\",
  \"lastName\":\"string\",
  \"email\":\"string\",
  \"password\":\"string\",
  \"phone\":\"string\",
  \"userStatus\":\"\"
  }\"}}"

Photographs by Unsplash.