Slide 1

Slide 1 text

Spring Cloud Stream Spring Cloud Task Spring Cloud Skipper Spring Flo Spring Cloud Data Flow Sabby Anandan | @sabbyanandan

Slide 2

Slide 2 text

Event-centric Thinking Spring and Events Events in Action! 2

Slide 3

Slide 3 text

Profound Customer Engagement Event-centric Thinking 3

Slide 4

Slide 4 text

Real-time Matching Efficient Pickups/Drops Lower Prices Convenient Costs Less to Ride Still Reach on Time Customer: Rider(s) Improved Ride Opportunities More Income More Tips Effective Use of Time Customer: Driver 4

Slide 5

Slide 5 text

Events A State Change: Something already happened —- it’s past Decouple senders and receivers in terms of identity System’s interaction with outside world Provide measurability and intent 5

Slide 6

Slide 6 text

Connectivity to external world Cross-platform/service event visibility Imperative vs. Functional programming models Operating on events (content negotiation; transformation; etc.) In Developer View 6

Slide 7

Slide 7 text

Spring Boot App Low level abstraction on top of Apache Kafka. Spring Kafka CLI Input KafkaListener Topic = s1p Apache Kafka payload=“hello world” 7

Slide 8

Slide 8 text

Spring Boot App Enterprise Integration Patterns with Spring. Spring Integration Kafka CLI Input KafkaListener Apache Kafka Integration Flow Topic = s1pIntInput Topic = s1pIntOutput payload=“hello” payload=“HELLO -— HELLO” 8

Slide 9

Slide 9 text

Spring Boot App Spring Boot App A event-driven microservices framework. Spring Cloud Stream Kafka Binder CLI Input Sink Apache Kafka / RabbitMQ / Amazon Kinesis / Google PubSub / Azure Event Hubs … Processor Topic = s1p.dest.in Topic = s1p.dest.out payload=“hello world” payload=“HELLO WORLD” 9

Slide 10

Slide 10 text

Spring Kafka Spring Integration Kafka Spring Cloud Stream Kafka Binder Pluggable Binder Abstraction Partitioning Consumer Groups Message Headers Programming Model: - Imperative (eg: SI Channels) - Functional (eg: Kafka Streams, Reactor Flux) Content-type Negotiation Unit/IT Testing Framework Spring Cloud Stream 10

Slide 11

Slide 11 text

Events in Action! Domain Driven Design; CQRS; Event Sourcing 11

Slide 12

Slide 12 text

Vaughn Vernon, Domain-Driven Design Distilled 12

Slide 13

Slide 13 text

Bounded Context 13

Slide 14

Slide 14 text

Event Sourcing John Doe: User :Address region: US-CA 14

Slide 15

Slide 15 text

John Doe: User :Address region: US-NY change my address 15

Slide 16

Slide 16 text

John Doe: User :Address region: US-NY change my address :Event address changed :Event address changed 16

Slide 17

Slide 17 text

Application State Append-only Log 17

Slide 18

Slide 18 text

A Social Graph 18 :UserCreated John Doe :UserCreated Jane Cool :UserNameChanged Michelle Bryan :UserActivated Yulia Zack

Slide 19

Slide 19 text

Customer Engagement 19 Friends Nearby Basketball Event Nearby New Movie!

Slide 20

Slide 20 text

Analytics on Real-time Events Top-5 States with “New Users” in a 30 seconds Tumbling Window CA HI IL PA NY 20

Slide 21

Slide 21 text

CA HI IL PA NY 21 Spring Cloud Data Flow

Slide 22

Slide 22 text

Resources SK, SIK, SCStK -> https://github.com/sabbyanandan/springonetour2018 EDA -> https://github.com/sabbyanandan/eda State or Events? Which shall I keep? (Kenny B.; Jakub P.) Deconstructing Monoliths with DDD (Rohit K.;David T.; Rohit S.) Experimentation Using Event-based Systems (Martin F.; Toby C.) 22