75
Pivoting Spring XD to Spring Cloud Data Flow Sabby Anandan | Product Manager | @sabbyanandan

Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Embed Size (px)

Citation preview

Page 1: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Pivoting Spring XD to Spring Cloud Data Flow

Sabby Anandan | Product Manager | @sabbyanandan

Page 2: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

business premise

microservices

what it means for data

tools / frameworks

what we learned

how it all comes together

Page 3: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Sense of Urgency

business results

business strategy

Page 4: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Sense of UrgencyOR

Need for Momentum?

Page 5: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

business strategy

business results

Page 6: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

business strategy

business results

Continuous Delivery

Page 7: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Continuous Delivery

Page 8: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Deliver Continuously1 2

Page 9: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

frequent roll out updates, even multiple times a day

gives you more ways to maintain availabilityreduce risks

allows you to make sound technology choices

gives your team more velocity

Page 10: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

microservices architecture

business strategy

business results

devops culture

continuous delivery

Casey West Principal Technologist, Cloud Foundry

Page 11: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

“how do we get there?”

Page 12: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Continuously Delivered Microservices

Page 13: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Microservicesarchitecture composed of loosely coupled

elements that have bounded contexts

Adrian Cockcroft Battery Ventures

previously: Cloud Architect at Netflix

Page 14: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

“what tools can I use?”

Page 15: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring

Page 16: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring BootAutoConfigure

StartersCLI

Actuator

Dev-Tools

Health Checks

Security

Logging

Page 17: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

BUILDING ADAPTIVE APPLICATIONS IS HARD

built on Cloud Foundry

code will be open sourced.

Demo: Spring Boot

Page 18: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Emerging Challenges• separate deployable units (registry, discovery,

versioning) • reliable operationalization (fault tolerance) • too many moving parts (coordination, routing,

load balancing)

Page 19: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring

Page 20: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud

Page 21: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud

Hystrix Eureka Ribbon

Zuul Feign

Service Discovery Config Server Control Bus

Zookeeper Distributed TracingConfig Server

Page 22: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud@EnableConfigServer

@EnableEurekaServer

@EnableDiscoveryClient@EnableCircuitBreaker

@EnableHystrix

@EnableAtlas

@EnableTurbine

@EnableZuulProxy

Page 23: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

OK, I get it....what’s specical about

microservices?

Page 24: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Microservicesa 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

Page 25: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Microservicesa 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

Page 26: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

OK, I get it....what if I have a lot

of data?

Page 27: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

every software company cares about data

Page 28: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Data-driven Microservicescomposition of small standalone executable applications communicating over messaging

middleware

Mark Fisher and Mark Pollack Spring/Pivotal

Page 29: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Data-driven Microservicescomposition of small standalone executable

applications communicating over messaging middleware

operates by consuming from and producing to message queues and data stores

Page 30: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

“i need real-time insights from data”

Page 31: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring

Page 32: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Developer ToolkitsSpring 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

Page 33: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud Stream

@EnableBinding(Source.class)

@EnableRXJavaProcessor

@EnableBinding(Sink.class)

@EnableBinding(Processor.class)

Page 34: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

http | transform | log

Page 35: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

| = ?

http | transform | log

Page 36: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

| = Binder

Page 37: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Binders

Page 38: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

BUILDING ADAPTIVE APPLICATIONS IS HARD

built on Cloud Foundry

code will be open sourced.

Demo: Spring Cloud Stream

Page 39: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

@EnableBinding(Source.class)

Discover OutputChannel

Discover Binder

Discover Type

Converter

Bind Producer

Auto Configure

$ java -jar http-source.jar

Page 40: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

$ java -jar transform-processor.jar

@EnableBinding(Processor.class)

Discover Input and Output Channels

Discover Binder

Discover Type

Converter

Bind Producer and

ConsumerAuto

Configure

Page 41: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

@EnableBinding(Sink.class)

Discover Input

Channel

Discover Binder

Discover Type

Converter

Bind Consumer

Auto Configure

$ java -jar log-sink.jar

Page 42: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

“i have large volumes of asynchronous data

systems”

Page 43: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring

Page 44: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Reactive Streams@EnableRXJavaProcessor

Page 45: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

10 11 12 13 14 15 16 17 18 19.. ..

10 11 12 13 14 15 16 17 18 19.. ..

i0

i112

17

Page 46: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

“i need offline data analysis”

Page 47: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring

Page 48: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Batch-processing MicroservicesSpring 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

Page 49: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

@EnableTaskDiscover

DataSourceBind

DataSourceAuto

Configure

$ java -jar timestamp-task.jar

Page 50: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

BUILDING ADAPTIVE APPLICATIONS IS HARD

built on Cloud Foundry

code will be open sourced.

Recap

Page 51: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

I need real-time insights from data

I need offline data analysis

Spring Cloud Stream

Spring Cloud Task

Stream

Batch

Page 52: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Stream Batch

Data Architecture

Page 53: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring

Page 54: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring XD

Page 55: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

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

Page 56: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

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

Page 57: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Not Quiet There• couldn’t scale without undeploying

running stream or batch pipelines • couldn’t do rolling upgrades • couldn’t do continuous deployments

Page 58: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

longer running services

short lived processes

Data Microservices Architecture

Stream Batch

Page 59: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring XD

Page 60: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud Data Flow

Page 61: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud Data Flow isa cloud native programming and operating model

for composable data microservices on a structured platform

Page 62: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud Data Flow isa cloud native programming and operating model for composable data microservices on a

structured platform

Page 63: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud Data Flow isa 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)

Page 64: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud Data Flow isa cloud native programming and operating model for composable data microservices on a

structured platform

http

transform

log

job foo < bar || baz & jaz > bye

Streams

Jobsfoo

bar jaz

baz

bye

Page 65: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud Data Flow isa cloud native programming and operating model for composable data microservices on a

structured platformPrivate and Public PaaS

Polyglot

Multiple Platforms

Service Marketplace

Direct Access to Containers

Metrics, Logging, Monitoring

Dynamic Scaling and Resource Allocation

Integrated Security and Auditing

Page 66: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud Data Flow isa cloud native programming and operating model for composable data microservices on a

structured platformPrivate and Public PaaS

Polyglot

Multiple Platforms

Service Marketplace

Direct Access to Containers

Metrics, Logging, Monitoring

Dynamic Scaling and Resource Allocation

Integrated Security and Auditing

Page 67: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Spring Cloud Data Flow isa 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

Page 68: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

XD Modules

XD Admin

XD Containers

Zoo

Keep

erZo

o Ke

eperAdmin / Flo UI

Shell

CURL

Database

Page 69: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

AdminAdmin / Flo UI

Shell

CURL ??X

YARN

Stream/Task Boot Apps

Page 70: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

Orchestrate Composable Data Microservices

HOST

Cloud Foundry YARN Local

Spring Cloud Data Flow

µPCF

Spring Cloud Stream/Task AppsSpring Cloud Stream Binders [Rabbit, Kafka, Redis]

Page 71: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

BUILDING ADAPTIVE APPLICATIONS IS HARD

built on Cloud Foundry

code will be open sourced.

Demo: Spring Cloud Data Flow

Page 72: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

cf push• here is my source code • run it on the cloud for me • i do not care how

Page 73: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

yarn push• here is my source code • run it on the hadoop for me • i do not care how

Page 74: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

“simple things should be simple, complex things should be possible”

- alan kay

Page 75: Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan

ResourcesSpring 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/