cornelia davis sr. director of technology pivotal ... · rethinking thinking models for...

27
RETHINKING THINKING MODELS FOR EVENT-DRIVEN PROGRAMMING CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL @cdavisafc

Upload: others

Post on 12-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

RETHINKING THINKING MODELS FOR EVENT-DRIVEN PROGRAMMING

CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL

@cdavisafc

Page 2: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

function SumToN(n : INTEGER): INTEGER; var i : INTEGER; s : INTEGER; begin i := 0; s := 0; while (i <= n) do begin s := s + i; i := i + 1; end; SumToN := s; end;

Page 3: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

(define sumToN (lambda (n) (if (= n 1) 1 (+ n (sumToN (- n 1))) )))

Page 4: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

function SumToN(n : INTEGER): INTEGER; var i : INTEGER; s : INTEGER; begin i := 0; s := 0; while (i <= n) do begin s := s + i; i := i + 1; end; SumToN := s; end;

VARIABLE

ITERATION

ASSIGNMENT (SIDE EFFECT)

START TO FINISHSTART TO FINISH

Page 5: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

(define sumToN (lambda (n) (if (= n 1) 1 (+ n (sumToN (- n 1))) )))

CONDITIONAL BASE CASE

GENERAL CASE (INCLUDES A LEAP OF FAITH)

Page 6: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

function SumToN(n : INTEGER): INTEGER; var i : INTEGER; s : INTEGER; begin i := 0; s := 0; while (i <= n) do begin s := s + i; i := i + 1; end; SumToN := s; end;

(define sumToN (lambda (n) (if (= n 1) 1 (+ n (sumToN (- n 1))) )))

RECURSION IS HARD!!

RECURSION IS NATURAL

Page 7: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

WHAT ARE THE PRIMITIVES, PATTERNS AND PLATFORMS THAT WILL MAKE EVENT-DRIVEN PROGRAMMING

EASY?

Page 8: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

FUNCTIONS AND

EVENTS?

Page 9: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

MAYBE

I HONESTLY HAVEN’T GOT A CLUE

Page 10: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

THE “IMPERATIVE” MODEL?

CLOUD-NATIVE SOFTWARE

▸ Cloud-Native App (yup, the microservices)

▸ Cloud-Native Services (yup, some are apps … and other are other types of services)

▸ Cloud-Native Data (a distributed data fabric)

▸ The Cloud-Native Collective (implicit and explicit connections)

APP

SERVICE APP

SERVICE APP

SERVICE APP

SERVICE APP

DATA DATA

DATA

?

Page 11: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

11 http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

Page 12: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

APPSERVICE

APPSERVICE

APP

APP

WE’VE BEEN THINKING CLIENT/SERVER FOR SO LONG

▸ HA & Scaling

▸ → Multiple Instances

▸ → Load Balancing

▸ → Externalize Config

▸ Resilience

▸ → Statelessness

▸ → Retries

▸ → Circuit Breaker

APPSERVICE

APP

DATA

ROUT

ER

CONFIG SERVICES

Page 13: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

SERVICE

APP + …

▸ Autonomy and Agility

▸ → Versioning

▸ Dynamic Environment

▸ → Service Discovery

▸ → Resource Bindings

APP SERVICE APP

SERVICE APP

CLIENT SERVICE

DATA

ROUT

ER

SERVICE DISCOVERY

Page 14: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

DATA

IN SERVICE TO “SERVICES”

▸ Agility and Autonomy

▸ → Services get their own DB

▸ → MDM? (eeh)

▸ Resilience

▸ → Caches

▸ → Cache miss

▸ → Expiry

SERVICE APP

SERVICE APP

SERVICE APP

DATA

DATA

DATA

?

Page 15: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

THE COLLECTIVE

WE’VE BEEN THINKING CLIENT/SERVER FOR SO LONG

▸ Managability

▸ → Distributed Tracing

▸ Act locally - who’s thinking globally?

SERVICE APP

SERVICE APPAPP

SERVICE APP

SERVICE APP

SERVICE APP

Page 16: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

DISTRIBUTED SYSTEMS CONCERNS

▸ HA & Scaling

▸ Dynamic Environment

▸ Resilience

▸ Autonomy and Agility

▸ Managability

Page 17: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

FROM RETRIES…

CLIENT

SERVICE

RETRYCLIENT

EVENT

PROMISE

… TO PROMISES

… ENSURING EVENTS ARE NOT LOSTFROM CIRCUIT BREAKERS…

RESILIENCE

GENERAL CASE (INCLUDES A LEAP OF FAITH)

Page 18: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

FROM CACHE EXPIRY…

SERVICE SERVICE

… TO MATERIALIZED VIEWS

… ENSURING EVENTS ARE NOT LOST

CACHEEXPIRY

VIEW

EVENT CONSUMER

AUTONOMY

GENERAL CASE (INCLUDES A LEAP OF FAITH)

Page 19: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

FROM SERVICES…

SERVICE

… TO FUNCTIONS

… TO FUNCTIONSFROM LOAD BALANCING…

FUNCTION

FUNCTION

FUNCTION

RESILIENCE & SCALE

LOAD

BAL

ANCI

NG

A BIT LIKE THE STACK FRAME WITH EACH RECURSIVE CALL

Page 20: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

SERVICE

FROM DATA BOTTLENECK… … DATA PARTITIONING

DATA DATA

SERVICE

DATA

SERVICE

DATA

SERVICE

… AND PARTITION RESOLVERS

SERVICESERVICE

SCALE

Page 21: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

FROM SHARED DATABASES…

SERVICE A

… EVENT SOURCING

DATA

SERVICE B SERVICE C

VIEW

SERVICE A

VIEW

SERVICE B

VIEW

SERVICE C

EVENT CONSUMER

EVENT STORE

EVENT CONSUMER

EVENT CONSUMER

AUTONOMY

Page 22: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

ALSO, EVENT PRODUCERS

VIEW

SERVICE A

VIEW

SERVICE B

VIEW

SERVICE C

EVENT CONSUMER

EVENT STORE

EVENT CONSUMER

EVENT CONSUMER

EVENT PRODUCER

EVENT PRODUCER

Page 23: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

MANY QUESTIONS

▸ Programming the “Collective”

▸ Justifying the “leap of faith”

▸ …

Page 24: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

CLOUD-NATIVE - IMPERATIVE MODEL

▸ Cloud-native Apps

▸ Scale out

▸ Statelessness

▸ Externalize configuration

▸ Implications from changes in the application lifecycle

▸ Retries

▸ Services

▸ Versioned services (autonomy)

▸ Service Discovery

▸ Distributed tracing

▸ Data

▸ Breaking the Data monolith

▸ Data APIs

▸ Caching

▸ Polyglot Persistence

▸ Event sourcing

Page 25: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

@cdavisafc

CLOUD-NATIVE - EVENT-DRIVEN MODEL

▸ Promises

▸ Event Consumers

▸ Event Producers

▸ Distributed Data Fabric: Data Partitioning and Partition Resolvers

▸ Event Sourcing and Materialized Views

▸ Health check (are producers & consumers functioning?)

Page 26: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

Hard to explain in layman terms in just a sentence. I'll try to make it as layman as possible.

Suppose you have a function f which takes one argument which is supposed to be a continuation. Then call/cc is a special function that takes f as an argument and calls f passing it, as its argument, the current continuation, which is the continuation in which call/cc itself was called

FROM QUORA: WHAT IS CALL/CC IN LAYMAN TERMS?

Page 27: CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL ... · rethinking thinking models for event-driven programming cornelia davis sr. director of technology pivotal @cdavisafc

THANK YOU