All Projects → ing-bank → Baker

ing-bank / Baker

Licence: mit
Orchestrate microservice-based process flows

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to Baker

Fission
Fast and Simple Serverless Functions for Kubernetes
Stars: ✭ 6,646 (+2752.36%)
Mutual labels:  serverless, hacktoberfest, functions-as-a-service
Hark Lang
Build stateful and portable serverless applications without thinking about infrastructure.
Stars: ✭ 103 (-55.79%)
Mutual labels:  microservices, serverless, orchestration
Flogo
Project Flogo is an open source ecosystem of opinionated event-driven capabilities to simplify building efficient & modern serverless functions, microservices & edge apps.
Stars: ✭ 1,891 (+711.59%)
Mutual labels:  microservices, serverless, functions-as-a-service
Openwhisk Deploy Kube
The Apache OpenWhisk Kubernetes Deployment repository supports deploying the Apache OpenWhisk system on Kubernetes and OpenShift clusters.
Stars: ✭ 231 (-0.86%)
Mutual labels:  serverless, functions-as-a-service
Dasync
Every developer deserves the right of creating microservices without using any framework 🤍
Stars: ✭ 154 (-33.91%)
Mutual labels:  microservices, serverless
Dapr
Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.
Stars: ✭ 16,274 (+6884.55%)
Mutual labels:  microservices, serverless
Openwhisk Devtools
Development tools for building and deploying Apache OpenWhisk
Stars: ✭ 141 (-39.48%)
Mutual labels:  serverless, functions-as-a-service
Mtgatracker
MTGATracker is a deck tracker for MTG Arena, offering an in-game overlay that shows real time info about your deck in MTGA. It can also record & analyze your past matches to show personal aggregated gameplay history information, like lifetime wins/losses by deck, by event, etc.
Stars: ✭ 232 (-0.43%)
Mutual labels:  serverless, hacktoberfest
Spec
Open Application Model (OAM).
Stars: ✭ 2,317 (+894.42%)
Mutual labels:  microservices, serverless
Netramesh
Ultra light service mesh for any orchestrator
Stars: ✭ 175 (-24.89%)
Mutual labels:  microservices, orchestration
Elasticpypi
Serverless pypi
Stars: ✭ 186 (-20.17%)
Mutual labels:  serverless, hacktoberfest
Zeebe
Distributed Workflow Engine for Microservices Orchestration
Stars: ✭ 2,165 (+829.18%)
Mutual labels:  microservices, hacktoberfest
Terrahub
Terraform Automation and Orchestration Tool (Open Source)
Stars: ✭ 148 (-36.48%)
Mutual labels:  serverless, orchestration
Awesome Programming Presentations
Presentations that programmers should watch
Stars: ✭ 162 (-30.47%)
Mutual labels:  microservices, hacktoberfest
Faas Netes
Serverless on Kubernetes with OpenFaaS
Stars: ✭ 1,875 (+704.72%)
Mutual labels:  serverless, hacktoberfest
Space Cloud
Open source Firebase + Heroku to develop, scale and secure serverless apps on Kubernetes
Stars: ✭ 3,323 (+1326.18%)
Mutual labels:  microservices, serverless
Eventstormingworkshop
EventStorming workshop, this is a hands-on workshop. Contains such topics: DDD, Event storming, Specification by example. Including the AWS product : Serverless Lambda , DynamoDB, Fargate, CloudWatch.
Stars: ✭ 184 (-21.03%)
Mutual labels:  microservices, serverless
Grpc Go
The Go language implementation of gRPC. HTTP/2 based RPC
Stars: ✭ 15,042 (+6355.79%)
Mutual labels:  microservices, hacktoberfest
Nstack
Type-safe, composable microservices for data analytics
Stars: ✭ 219 (-6.01%)
Mutual labels:  microservices, serverless
Jhipster Online
JHipster Online lets you generate your JHipster projects through a user friendly web interface.
Stars: ✭ 140 (-39.91%)
Mutual labels:  microservices, hacktoberfest

BAKER

Build Status Maven Central codecov.io

Overview

Baker is a library that reduces the effort to orchestrate (micro)service-based process flows. Developers declare the orchestration logic in a recipe. A recipe is made out of interactions (system calls), ingredients (data) and events. A visual representation (shown below) of the recipe allows product owners, architects and developers to talk the same language.

The official documentation website of Baker: Official Documentation.

An introductory presentation of Baker: Baker talk @ Amsterdam.Scala meetup.

A talk about Baker at the Scale By the Bay 2017 conference: Declare, verify and execute microservices-based process flows.

For an example web-shop recipe in Scala, see the examples sub-project. Java developers new to Baker can use this workshop to get familiar with the library by reading the workshop assignment PDF document and making the unit tests green.

WebShop Recipe:

  val webShopRecipe: Recipe =
    Recipe("WebShop")
      .withInteractions(
        validateOrder,
        manufactureGoods
          .withRequiredEvents(valid, paymentMade),
        shipGoods,
        sendInvoice
          .withRequiredEvent(goodsShipped)
      )
      .withSensoryEvents(
        customerInfoReceived,
        orderPlaced,
        paymentMade)

A visual representation of the WebShop recipe looks like the following, where the events are colored in gray, ingredients in orange and interactions in lilac:

Baker consists of a DSL that allows developers to choose interactions from a catalogue and re-use them in their own recipes. Developers can use Java or Scala as a programming language.

A Catalogue of Reusable Interactions

Let's look at three different products that a bank would sell to customers:

Checking Account Savings Account Customer Onboarding
Verify Person's Identity Verify Person's Identity Verify Person's Identity
Register Person Register Person Register Person
Open Checking Account Open Savings Account n/a
Issue Debit Card n/a n/a
Send Message Send Message Send Message
Register Product Possession Register Product Possession n/a

As you can see, there are similarities in the products.

It becomes interesting when you're able to combine the same interactions in different recipes. New functionality can then be built quickly by re-using what's already available.

How to apply Baker?

Applying Baker will only be successful if you make sure that:

  1. You've compared the products your company is selling and there are similarities;
  2. You've defined a catalogue of those capabilities necessary to deliver the products from;
  3. Each capability (interaction in Baker terms) is accessible via an API of any sort (could be a micro-service, web-service, so on);

Getting Started

To get started with SBT, simply add the following to your build.sbt file:

libraryDependencies += "com.ing.baker" %% "baker-recipe-dsl" % "3.0.3"
libraryDependencies += "com.ing.baker" %% "baker-runtime" % "3.0.3"
libraryDependencies += "com.ing.baker" %% "baker-compiler" % "3.0.3"

From 1.3.x to 2.0.x we cross compile to both Scala 2.11 and 2.12.

Earlier releases are only available for Scala 2.11.

From 3.0.x we support only Scala 2.12.

How to contribute?

Execute the following commands in your terminal to get started with the development of Baker:

$ git clone https://github.com/ing-bank/baker.git
$ cd baker
$ sbt
> compile
> test

How to visualize your recipe?

Baker can turn a recipe into a DOT representation. It can then be visualized using the following web-site (http://www.webgraphviz.com).

Another way to visualize the recipe is to install Graphviz on your development machine. On your Mac, install using brew:

brew install graphviz

To test that all works fine, save the following text in a graph.dot file:

digraph d {
A [label="Hello"]
B [label="World"]
C [label="Everyone"]
A -> { B C }
}

Assuming you have the graphviz dot command you can create an SVG by running:

dot -v -Tsvg -O graph.dot

Alternatively you can use graphviz-java to generate the SVG in your code:

import guru.nidi.graphviz.engine.{Format, Graphviz}
import guru.nidi.graphviz.parse.Parser

val g = Parser.read(getRecipeVisualization)
Graphviz.fromGraph(g).render(Format.SVG).toString

Preview the results:

open graph.dot.svg

You are all set to visualize your recipes now!

To use custom fonts, see http://www.graphviz.org/doc/fontfaq.txt.

References

  1. DOT Graph Description Language (https://en.wikipedia.org/wiki/DOT_(graph_description_language)) - explains more about the format Baker uses to produce a graphical representation of the recipe;
  2. Order fulfillment (https://en.wikipedia.org/wiki/Order_fulfillment) - gives an idea about the theory behind order fulfillment strategies. As you are in the business of producing and selling products to people, you are in the business of fulfillment;
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].