• Stars
    star
    325
  • Rank 124,590 (Top 3 %)
  • Language
    Scala
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Cloudflow enables users to quickly develop, orchestrate, and operate distributed streaming applications on Kubernetes.

Deprecated - The Cloudflow project is deprecated

If you are an existing customer of Lightbend and we have not contacted, please reach out to support.
All existing contracts will be honored and assistance with migration to new tools is available.

Join the chat at https://cloudflow.zulipchat.com/ Β  Build status

Cloudflow enables users to quickly develop, orchestrate, and operate distributed streaming applications on Kubernetes. Cloudflow allows you to easily break down your streaming application to smaller composable components and wire them together with schema-based contracts. It also comes with a powerful CLI tool to easily manage, scale and configure your streaming applications at runtime. With its powerful abstractions, Cloudflow allows to define, build and deploy the most complex streaming applications.
  • Develop: Focus only on business logic, leave the boilerplate to us.
  • Build: We provide all the tooling for going from business logic to a deployable Docker image.
  • Deploy: We provide Kubernetes tooling to deploy your distributed system with a single command, and manage durable connections between processing stages.

As data pipelines become first-class citizens in microservices architectures, Cloudflow gives developers data-optimized programming abstractions and run-time tooling for Kubernetes. In a nutshell, Cloudflow is an application development toolkit comprising:

  • An API definition for Streamlet, the core abstraction in Cloudflow.
  • An extensible set of runtime implementations for Streamlet(s).
  • A Streamlet composition model driven by a blueprint definition.
  • A sandbox execution mode that accelerates the development and testing of your applications.
  • A set of sbt plugins that are able to package your application into a deployable container.
  • The Cloudflow operator, a Kubernetes operator that manages the application lifecycle on Kubernetes.
  • A CLI, in the form of a kubectl plugin, that facilitates manual and scripted management of the application.

The different parts of Cloudflow work in unison to dramatically accelerate your application development efforts, reducing the time required to create, package, and deploy an application from weeks to hours.

Basic Concepts

Basic components of a Cloudflow Application

As we discussed above, Cloudflow allows developers to quickly build and deploy distributed stream processing applications by breaking such applications into smaller stream processing units called Streamlets. Each Streamlet represents an independent stream processing component that implements a self-contained stage of the application logic. Streamlets let you break down your application into logical pieces that communicate with each other in a streaming fashion to accomplish an end to end goal.

Streamlets can be composed into larger systems using blueprints, which specify how Streamlets can be connected together to form a topology.

Streamlets expose one or more inlets and outlets that represent the data consumed and produced by the Streamlet, respectively. Inlets and outlets are schema-driven, ensuring that data flows are always consistent and that connections between streamlets are compatible. In the diagram above Streamlet 1 has one outlet which feeds data to Streamlet 2 inlet. Streamlet 1 is a component that generates data or could get its data from an external system eg. via an http request. Then Streamlet 2 outlet feeds its data output to Streamlet 3 inlet. Streamlet 2 in this application does the actual data processing. Streamlet 3 then may store its data to some external system. The example described here is a minimal Cloudflow application. The data sent between Streamlets is safely persisted in the underlying pub-sub system, allowing for independent lifecycle management of the different components.

Streamlets can be scaled up and down to meet the load requirements of the application. The underlying data streams are partitioned to allow for parallelism in a distributed application execution.

The Streamlet logic can be written using an extensible choice of streaming runtimes, such as Akka Streams and Spark. The lightweight API exposes the raw power of the underlying runtime and its libraries while providing a higher-level abstraction for composing streamlets and expressing data schemas. Your code is written in your familiar API.

Applications are deployed as a whole. Cloudflow takes care of deploying the individual streamlets and making sure connections get translated into data flowing between them at runtime.

Learn more about the Cloudflow building blocks in our Cloudflow Core Concepts.

The Drivers Behind Cloudflow

Technologies like mobile, the Internet of Things (IoT), Big Data analytics, machine learning, and others are driving enterprises to modernize how they process large volumes of data. A rapidly growing percentage of that data is now arriving in the form of data streams. To extract value from that data as soon as it arrives, those streams require near-realtime processing. We use the term "Fast Data" to describe applications and systems that deal with such requirements.

The Fast Data landscape has been rapidly evolving, with tools like Spark, Flink, and Kafka Streams emerging from the world of large-scale data processing while projects like Reactive Streams and Akka Streams have emerged from the world of application development and high-performance networking.

The demand for availability, scalability, and resilience is forcing fast data architectures to become more like microservice architectures. Conversely, successful organizations building microservices find their data needs grow with their organization while their data sources are becoming more stream-like and more real-time. Hence, there is a unification happening between streaming data and microservice architectures.

It can be quite hard to develop, deploy, and operate large-scale microservices-based systems that can take advantage of streaming data and seamlessly integrate with systems for analytics processing and machine learning. The individual technologies are well-documented, but combining them into fully integrated, unified systems is no easy task.

Cloudflow aims to make this easier by integrating the most popular streaming frameworks into a single platform for creating and running distributed Fast Data applications on Kubernetes.


Where to Go Next?

More Repositories

1

config

configuration library for JVM languages using HOCON files
Java
6,068
star
2

mima

A tool for catching binary incompatibility in Scala
Scala
443
star
3

paradox

Markdown documentation
Scala
242
star
4

kafka-with-akka-streams-kafka-streams-tutorial

Code samples for the Lightbend tutorial on writing microservices with Akka Streams, Kafka Streams, and Kafka
Scala
211
star
5

kafka-streams-scala

Thin Scala wrapper around Kafka Streams Java API
Scala
191
star
6

model-serving-tutorial

Code and presentation for Strata Model Serving tutorial
Scala
70
star
7

kafka-streams-query

Library offering http based query on top of Kafka Streams Interactive Queries
Scala
69
star
8

akka-cluster-operator

Run Akka Cluster applications in Kubernetes.
Go
69
star
9

ssl-config

SSL configuration logic, extracted from Play's WS (for use in Akka et al).
Scala
66
star
10

reactive-streams-utils

Java
62
star
11

service-locator-dns

This project is deprecated
Scala
61
star
12

benchdb

A database and query tool for JMH benchmark results
Scala
59
star
13

genjavadoc

A compiler plugin for generating doc’able Java source from Scala source
Scala
55
star
14

kalix-jvm-sdk

Java and Scala SDKs for Kalix
Scala
55
star
15

kubeflow-recommender

Kubeflow example of machine learning/model serving
Jupyter Notebook
34
star
16

reactive-integration-examples

Examples for demonstrating the concept of Reactive Integration
Java
31
star
17

flink-k8s-operator

An example of building kubernetes operator (Flink) using Abstract operator's framework
Scala
26
star
18

reactive-cli

Scala
23
star
19

sbt-google-cloud-storage

A SBT resolver and publisher for Google Cloud Storage
Scala
22
star
20

kalix-javascript-sdk

JavaScript and TypeScript SDKs for Kalix
TypeScript
22
star
21

reactive-lib

Scala
18
star
22

sbt-reactive-app

Scala
18
star
23

mesos-spark-integration-tests

Mesos Integration Tests on Docker/Ec2
Shell
16
star
24

fdp-sample-applications

All sample applications for Fast Data Platform
Scala
15
star
25

pipelines-examples

Pipelines Example Applications
Scala
15
star
26

cinnamon-ui

Lightbend Cinnamon UI
15
star
27

spark-history-server-docker

Docker image for Spark history server on Kubernetes
Shell
14
star
28

microprofile-reactive-streams

Java
13
star
29

microprofile-reactive-messaging

Lightbend's implementation of the MicroProfile Reactive Messaging spec
Java
13
star
30

console-charts

Lightbend Console Helm Charts
Go
11
star
31

flink-operator

Helm Chart for lyft/flinkk8soperator
Smarty
11
star
32

sbt-whitesource

An sbt plugin to keep your WhiteSource project up to date
Scala
10
star
33

akka-grpc-ddata-shopping-cart

Scala
10
star
34

pipelines-model-serving

Implementation of Model serving in pipelines
Scala
8
star
35

akka-grpc-hands-on

Akka gRPC Hands-On
Scala
7
star
36

lb-demos

Demo applications showcasing the Lightbend Platform
Java
7
star
37

fdp-speculative-model-serving

Experimental implementation of speculative model serving
Scala
6
star
38

lightbend-markdown

Support for writing Lagom documentation in Markdown
Scala
5
star
39

vscode-kalix-tools

A VS Code extension for developers building stateful serverless applications on Kalix
TypeScript
5
star
40

sbt-bill-of-materials

Create 'Bill of Materials' (BOM) POM files from sbt for consumption in Maven and Gradle.
Scala
5
star
41

RSocketCloudflow

RSocket Ingress for cloudflow
Scala
5
star
42

sbt-paradox-project-info

A Paradox directive to include standardised project information into the generated documentation
Scala
5
star
43

sbt-paradox-apidoc

Apidoc (javadoc and scaladoc) support for the project documentation tool paradox
Scala
4
star
44

KnativeSamples

Collection of Knative examples using Scala
Scala
4
star
45

telemetry-samples

Lightbend Telemetry Samples
Java
4
star
46

spark-streaming-testbed

Set of applications to test the performances of Spark Streaming
Scala
4
star
47

fdp-dynamically-controlled-streams

Implementation of dynamically controlled streams patterns
Scala
4
star
48

cloudflow-contrib

Community Supported Cloudflow integrations
Scala
3
star
49

seldoncloudflow

Seldon Cloudflow Integration
Jupyter Notebook
3
star
50

cloudflow-docs

This repository hosts the cloudflow.io website as well as the Cloudflow documentation.
Shell
3
star
51

akka-operator-helm

Helm charts for Akka platform operator
Smarty
3
star
52

lightbend-orchestration-docs

Documentation for Lightbend Orchestration
Scala
3
star
53

sbt-paradox-dependencies

A Paradox directive to show module's transitive dependencies in the Paradox generated documentation
Scala
3
star
54

ML-metadata-tutorial

Presentation and exercise code for ML metadata tutorial
Scala
3
star
55

antora-ui-lightbend-cloud-theme

CSS
2
star
56

akka-projection-grpc-benchmark

2
star
57

deckhand

sbt companion for Kubernetes and OpenShift
Scala
2
star
58

kalix-value-entity.g8

This is an sbt template for setting up a Scala Kalix project with a Value Entity.
Scala
2
star
59

console-akka-cluster-example

Example for setting up an Akka Cluster app to run in Kubernetes with Lightbend Console monitoring
Scala
2
star
60

cloudflow-installer

Installation Scripts for Cloudflow
Shell
2
star
61

kalix-trial-scala-shoppingcart

Scala
2
star
62

kalix-action

Run Kalix CLI commands in GitHub workflows
Dockerfile
2
star
63

akka-cluster-orchestration-example

Scala
2
star
64

reactive-app-maven-plugin

Java
2
star
65

akka-cloud-platform-deploy

Provisioning solution for Akka Cloud Platform to supported cloud providers
TypeScript
2
star
66

homebrew-brew

Homebrew is a package manager for macOS which provides easy installation and update management of additional software. This Tap (repository) contains the Formulae for tools that Lightbend offers.
Ruby
2
star
67

play-openshift-example

Scala
1
star
68

reactive-sandbox

Shell
1
star
69

reactive-cli-build

Shell
1
star
70

sbt-paradox-lightbend-project-info

A flavour of sbt-paradox-project-info for Lightbend's use.
Scala
1
star
71

kalix-trial-java-shoppingcart

An e-commerce example for Kalix
Java
1
star
72

telemetry

Lightbend Telemetry - public
Scala
1
star
73

nfs

NFS server and PVC
Smarty
1
star
74

cloudflow-helm-charts

Cloudflow Helm repository
1
star
75

IBMIntegrationGluster

Gluster support for IBM integration
Shell
1
star
76

kalix-cicd-github-actions

Sample JS project using Github Actions CI/CD support for Kalix
JavaScript
1
star
77

monitoringsamples

Sample applications that can be used to test monitoring tools (Insight team)
Scala
1
star
78

flink-k8s-build

This is a simple project to build Flink image with Prometheus jar out of the "standard" Flink images
Shell
1
star
79

sbt-publish-rsync

An sbt plugin that adds rsync capabilities to your project
Scala
1
star
80

akkaserverless-cicd-github-actions

JavaScript
1
star
81

kalix-ws-loan-application-scala

Scala
1
star
82

akkaserverless-value-entity.g8

Template for an Akkaserverless project with a service backed by a value entity
Scala
1
star
83

homebrew-cloudstate

Homebrew tap for csctl - The Lightbend Cloudstate CLI
Ruby
1
star