❯ Guillaume Laforge

Day 7 with Workflows — Pass an input argument to your workflow

All the workflow definitions we’ve seen so far, in this series, were self-contained. They were not parameterized. But we often need our business processes to take arguments (the ID of an order, the details of the order, etc.), so that we can treat those input values and do something about them. That’s where workflow input parameters become useful! Let’s start with a simple greeting message that we want to customize with a firstname and lastname. Read more...

Day 6 with Workflows — Arrays and dictionaries

So far, in this series of articles on Cloud Workflows, we have used simple data types, like strings, numbers and boolean values. However, it’s possible to use more complex data structures, like arrays and dictionaries. In this new episode, we’re going to use those new structures. Arrays can be defined inline (like anArray) or spanning over several lines (like anotherArray): - assignment: assign: - anArray: ["a", "b", "c"] - anotherArray: - one - two - output: return: ${anArray[0] + anotherArray[1]} The output step will return the string "atwo". Read more...

Day 5 with Workflows — Visualizing the structure of your workflow definition

So far, in our Cloud Workflows series, we have seen some of the YAML syntax for defining workflows. However, steps are defined after each other, as a series of step definitions, but in spite of the jump instructions, the conditionals, you don’t really see visually what is going to be the next potential step in a workflow execution. Fortunately, a new UI enhancement has landed in the Google Cloud Console: the ability to visualize a workflow definition with a graph, when you’re editing the definition. Read more...

Day 4 with Workflows — Jumping with switch conditions

In the previous articles about Google Cloud Workflows, we talked about how to assign variables, create expressions, and also how to jump from a step to another. It’s time to combine both aspects to understand how we can do conditional jumps, thanks to the switch instruction. Let’s start with a first step defining a variable, whose value we’ll use in our switch condition: - assignement: assign: - number: 42 Then we’re going to create our second step that will use a switch instruction, with an expression: Read more...

Day 3 with Workflows — Variable assignment and expressions

Now that we have multiple steps in our workflow definition, let’s see how we can pass data around, from a step to another. In a step, you can assign values to variables. Those values can be ints, doubles, strings, or booleans (and also null). Use the assign keyword as follows: - assignments: assign: - two: 2 - pi: 3.14 - message: "Hello" - bool: True Those variables are available in the whole scope of the workflow, and can be accessed in other steps. Read more...

Day 2 with Workflows — A workflow is made of steps and jumps

Let’s continue our discovery of Goole Cloud Workflows! Yesterday, we discovered the UI of Workflows. We created our first workflow. We started with a single step, returning a greeting message: - sayHello: return: Hello from Cloud Workflows! A workflow definition is made of steps. But not just one! You can create several steps. In YAML, the structure of your workflow will be something like: - stepOne: # do something - stepTwo: # do something else - sayHello: return: Hello from Cloud Workflows! Read more...

Day 1 with Workflows — Your first step to Hello World

With more and more interconnected services, making sense of their interactions becomes critical. With Google Cloud Workflows, developers can orchestrate and automate such complex systems by creating serverless workflows. In this series of articles, we will learn together how to use Goole Cloud Workflows, and get to know all its features, with short and easy to read tutorials. For our first day, we’ll discover and use the Workflows UI in the cloud console. Read more...

Orchestrating microservices with Google Cloud Workflows

The trend toward splitting a monolith into fine-grained loosely-coupled microservices has its merits. It allows us to scale parts of an application more easily. Teams become more effective on their focused perimeter. However, in a chain or graph of services interacting with each other via message buses or other eventing mechanisms, it becomes difficult to understand when things start to break. Your business processes spanning those services are in limbo. Here starts detective work to find out how to get back on track. Read more...

Running Micronaut serverlessly on Google Cloud Platform

Last week, I had the pleasure of presenting Micronaut in action on Google Cloud Platform, via a webinar organized by OCI. Particularly, I focused on the serverless compute options available: Cloud Functions, App Engine, and Cloud Run. Here are the slides I presented. However, the real meat is in the demos which are not displayed on this deck! So let’s have a closer look at them, until the video is published online. Read more...

Introducing Java 11 on Google Cloud Functions

The Java programming language recently turned 25 years old, and it’s still one of the top-used languages powering today’s enterprise application customers. On Google Cloud, you can already run serverless Java microservices in App Engine and Cloud Run. Today we’re bringing Java 11 to Google Cloud Functions, an event-driven serverless compute platform that lets you run locally or in the cloud without having to provision servers. That means you can now write Cloud Functions using your favorite JVM languages (Java, Kotlin, Groovy, Scala, etc) with our Functions Framework for Java, and also with Spring Cloud Functions and Micronaut! Read more...