Pivoting Spring XD to Spring Cloud Data Flow: A microservice based architecture for stream processing
Microservice based architectures are not just for distributed web applications! They are also a powerful approach for creating distributed stream processing applications. Spring Cloud Data Flow enables you to create and orchestrate standalone executable applications that communicate over messaging middleware such as Kafka and RabbitMQ that when run together, form a distributed stream processing application. This allows you to scale, version and operationalize stream processing applications following microservice based patterns and practices on a variety of runtime platforms such as Cloud Foundry, Apache YARN and others.
About Sabby Anandan
Sabby Anandan is a Product Manager at Pivotal. Sabby is focused on building products that eliminate the barriers between application development, cloud, and big data.
9. frequent roll out updates, even multiple times a day
gives you more ways to maintain availability
reduce risks
allows you to make sound technology choices
gives your team more velocity
13. Microservices
architecture composed of loosely coupled
elements that have bounded contexts
Adrian Cockcroft
Battery Ventures
previously: Cloud Architect at Netflix
18. Emerging Challenges
• separate deployable units (registry, discovery,
versioning)
• reliable operationalization (fault tolerance)
• too many moving parts (coordination, routing,
load balancing)
23. OK, I get it..
..what’s specical about
microservices?
24. Microservices
a single application as a suite of small services,
each running in its own process and
communicating with lightweight mechanisms, often
an HTTP resource API
James Lewis and Martin Fowler
ThoughtWorks
25. Microservices
a single application as a suite of small services,
each running in its own process and
communicating with lightweight
mechanisms, often an an
HTTP resource API
26. OK, I get it..
..what if I have a lot
of data?
28. Data-driven Microservices
composition of small standalone executable
applications communicating over messaging
middleware
Mark Fisher and Mark Pollack
Spring/Pivotal
29. Data-driven Microservices
composition of small standalone executable
applications communicating over
messaging middleware
operates by consuming from and producing to
message queues and data stores
32. Developer Toolkits
Spring Integration
enables lightweight
messaging within Spring-
based applications and
supports integration with
external systems Spring Cloud Stream
enables you to create
powerful distributed
streaming data applications
with a minimal amount of
coding
48. Batch-processing Microservices
Spring Batch
enables the development
of robust batch applications
vital for the daily operations of
enterprise systems
Spring Cloud Task
enables you to develop and
run short-lived executable
data applications locally or in
the cloud
55. Kodiak: Turnkey Data Integration Platform Sep 2012
Apr 2013
Aug 2013
Jan 2014
Apr 2014
Nov 2014
Dec 2014
Jan 2015
Feb 2015
Batch Jobs (Gaps: Oozie; Flume; Sqoop)
PMML (closed-loop-analytics; IoT), YARN
Kafka and Sqoop Support
Spring XD on CloudFoundry (beta)
Spring XD Launch
Builds on Spring Boot
Spark and Python Support
Spark Streaming, RxJava, Reactor Support
Apr 2015 BDS [HAWQ, GPDB, GemFire, PHD 3.0/HDP]
Flo UI, HDP/Ambari, Lattice Integration Jun 2015
Nov 2015 Flo Composed Jobs/Workflows, Perf. Improvements
56. Kodiak: Turnkey Data Integration Platform Sep 2012
Apr 2013
Aug 2013
Jan 2014
Apr 2014
Nov 2014
Dec 2014
Jan 2015
Feb 2015
Batch Jobs (Gaps: Oozie; Flume; Sqoop)
PMML (closed-loop-analytics; IoT), YARN
Kafka and Sqoop Support
Spring XD on CloudFoundry (beta)
Spring XD Launch
Builds on Spring Boot
Spark and Python Support
Spark Streaming, RxJava, Reactor Support
Apr 2015 BDS [HAWQ, GPDB, GemFire, PHD 3.0/HDP]
Flo UI, HDP/Ambari, Lattice Integration Jun 2015
Nov 2015 Flo Composed Jobs/Workflows, Perf. Improvements
57. Not Quiet There
• couldn’t scale without undeploying
running stream or batch pipelines
• couldn’t do rolling upgrades
• couldn’t do continuous deployments
61. Spring Cloud Data Flow is
a cloud native programming and operating model
for composable data microservices on a
structured platform
62. Spring Cloud Data Flow is
a cloud native programming and operating
model for composable data microservices on a
structured platform
63. Spring Cloud Data Flow is
a cloud native programming and operating
model for composable data microservices on a
structured platform
@EnableBinding(Source)
class Greeter {
@InboundChannelAdapter(Source.OUTPUT)
String greet() {
"hello world"
}
}
canary
deployments
continuous
delivery
monitoring
@EnableBinding(Source.class)
@EnableBinding(Processor.class)
@EnableBinding(Sink.class)
64. Spring Cloud Data Flow is
a cloud native programming and operating model
for composable data microservices on a
structured platform
http
transform
log
job foo
< bar || baz & jaz
> bye
Streams
Jobs
foo
bar jaz
baz
bye
65. Spring Cloud Data Flow is
a cloud native programming and operating model
for composable data microservices on a
structured platform
Private and Public PaaS
Polyglot
Multiple Platforms
Service Marketplace
Direct Access to Containers
Metrics, Logging, Monitoring
Dynamic Scaling and Resource
Allocation
Integrated Security and
Auditing
66. Spring Cloud Data Flow is
a cloud native programming and operating model
for composable data microservices on a
structured platform
Private and Public PaaS
Polyglot
Multiple Platforms
Service Marketplace
Direct Access to Containers
Metrics, Logging, Monitoring
Dynamic Scaling and Resource
Allocation
Integrated Security and
Auditing
67. Spring Cloud Data Flow is
a cloud native programming and operating model
for composable data microservices on a
structured platform
……
Polyglot
Multiple Platforms
……
Direct Access to Containers
Metrics, Logging, Monitoring
Dynamic Scaling and Resource
Allocation
Integrated Security and
Auditing
YARN
75. Resources
Spring Cloud Data Flow: http://cloud.spring.io/spring-
cloud-dataflow/
Spring Cloud Data Flow Samples: https://github.com/
spring-cloud/spring-cloud-dataflow-samples
Spring Cloud Stream: http://cloud.spring.io/spring-cloud-
stream/
Spring Cloud Task: http://cloud.spring.io/spring-cloud-task/