• Stars
    star
    322
  • Rank 130,398 (Top 3 %)
  • Language
    Scala
  • License
    Apache License 2.0
  • Created about 5 years ago
  • Updated 12 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,125
star
2

paradox

Markdown documentation
Scala
245
star
3

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

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

kafka-streams-scala

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

kafka-streams-query

Library offering http based query on top of Kafka Streams Interactive Queries
Scala
70
star
6

akka-cluster-operator

Run Akka Cluster applications in Kubernetes.
Go
69
star
7

model-serving-tutorial

Code and presentation for Strata Model Serving tutorial
Scala
69
star
8

ssl-config

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

reactive-streams-utils

Java
64
star
10

service-locator-dns

This project is deprecated
Scala
61
star
11

genjavadoc

A compiler plugin for generating doc’able Java source from Scala source
Scala
58
star
12

kalix-jvm-sdk

Java and Scala SDKs for Kalix
Scala
58
star
13

kubeflow-recommender

Kubeflow example of machine learning/model serving
Jupyter Notebook
35
star
14

reactive-integration-examples

Examples for demonstrating the concept of Reactive Integration
Java
32
star
15

flink-k8s-operator

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

sbt-google-cloud-storage

A SBT resolver and publisher for Google Cloud Storage
Scala
23
star
17

reactive-cli

Scala
23
star
18

kalix-javascript-sdk

JavaScript and TypeScript SDKs for Kalix
TypeScript
22
star
19

reactive-lib

Scala
18
star
20

sbt-reactive-app

Scala
18
star
21

mesos-spark-integration-tests

Mesos Integration Tests on Docker/Ec2
Shell
16
star
22

spark-history-server-docker

Docker image for Spark history server on Kubernetes
Shell
15
star
23

fdp-sample-applications

All sample applications for Fast Data Platform
Scala
15
star
24

pipelines-examples

Pipelines Example Applications
Scala
15
star
25

cinnamon-ui

Lightbend Cinnamon UI
14
star
26

microprofile-reactive-streams

Java
13
star
27

microprofile-reactive-messaging

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

console-charts

Lightbend Console Helm Charts
Go
11
star
29

flink-operator

Helm Chart for lyft/flinkk8soperator
Smarty
11
star
30

sbt-whitesource

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

akka-grpc-ddata-shopping-cart

Scala
10
star
32

pipelines-model-serving

Implementation of Model serving in pipelines
Scala
8
star
33

akka-grpc-hands-on

Akka gRPC Hands-On
Scala
7
star
34

lb-demos

Demo applications showcasing the Lightbend Platform
Java
7
star
35

fdp-speculative-model-serving

Experimental implementation of speculative model serving
Scala
6
star
36

lightbend-markdown

Support for writing Lagom documentation in Markdown
Scala
5
star
37

telemetry-samples

Lightbend Telemetry Samples
Java
5
star
38

vscode-kalix-tools

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

sbt-bill-of-materials

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

RSocketCloudflow

RSocket Ingress for cloudflow
Scala
5
star
41

sbt-paradox-project-info

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

sbt-paradox-apidoc

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

spark-streaming-testbed

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

KnativeSamples

Collection of Knative examples using Scala
Scala
4
star
45

cloudflow-contrib

Community Supported Cloudflow integrations
Scala
3
star
46

seldoncloudflow

Seldon Cloudflow Integration
Jupyter Notebook
3
star
47

akka-operator-helm

Helm charts for Akka platform operator
Smarty
3
star
48

lightbend-orchestration-docs

Documentation for Lightbend Orchestration
Scala
3
star
49

sbt-paradox-dependencies

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

fdp-dynamically-controlled-streams

Implementation of dynamically controlled streams patterns
Scala
3
star
51

ML-metadata-tutorial

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

antora-ui-lightbend-cloud-theme

CSS
2
star
53

akka-projection-grpc-benchmark

2
star
54

console-akka-cluster-example

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

cloudflow-installer

Installation Scripts for Cloudflow
Shell
2
star
56

kalix-trial-scala-shoppingcart

Scala
2
star
57

kalix-action

Run Kalix CLI commands in GitHub workflows
Dockerfile
2
star
58

akka-cluster-orchestration-example

Scala
2
star
59

deckhand

sbt companion for Kubernetes and OpenShift
Scala
2
star
60

reactive-app-maven-plugin

Java
2
star
61

akka-cloud-platform-deploy

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

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
63

kalix-value-entity.g8

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

play-openshift-example

Scala
1
star
65

reactive-sandbox

Shell
1
star
66

reactive-cli-build

Shell
1
star
67

sbt-paradox-lightbend-project-info

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

kalix-trial-java-shoppingcart

An e-commerce example for Kalix
Java
1
star
69

telemetry

Lightbend Telemetry - public
Scala
1
star
70

nfs

NFS server and PVC
Smarty
1
star
71

cloudflow-helm-charts

Cloudflow Helm repository
1
star
72

IBMIntegrationGluster

Gluster support for IBM integration
Shell
1
star
73

kalix-cicd-github-actions

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

monitoringsamples

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

flink-k8s-build

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

akkaserverless-cicd-github-actions

JavaScript
1
star
77

sbt-publish-rsync

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

kalix-ws-loan-application-scala

Scala
1
star
79

akkaserverless-value-entity.g8

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

homebrew-cloudstate

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