RETHINKING THINKING MODELS FOR EVENT-DRIVEN PROGRAMMING @cdavisafc - - PowerPoint PPT Presentation

rethinking thinking models for event driven programming
SMART_READER_LITE
LIVE PREVIEW

RETHINKING THINKING MODELS FOR EVENT-DRIVEN PROGRAMMING @cdavisafc - - PowerPoint PPT Presentation

CORNELIA DAVIS SR. DIRECTOR OF TECHNOLOGY PIVOTAL RETHINKING THINKING MODELS FOR EVENT-DRIVEN PROGRAMMING @cdavisafc function SumToN(n : INTEGER): INTEGER; var i : INTEGER; s : INTEGER; begin i := 0; s := 0; while (i <= n) do begin


slide-1
SLIDE 1

RETHINKING THINKING MODELS FOR EVENT-DRIVEN PROGRAMMING

CORNELIA DAVIS

  • SR. DIRECTOR OF TECHNOLOGY

PIVOTAL

@cdavisafc

slide-2
SLIDE 2

@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;

slide-3
SLIDE 3

@cdavisafc

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

slide-4
SLIDE 4

@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 FINISH START TO FINISH

slide-5
SLIDE 5

@cdavisafc

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

CONDITIONAL BASE CASE

GENERAL CASE

(INCLUDES A LEAP OF FAITH)

slide-6
SLIDE 6

@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

slide-7
SLIDE 7

WHAT ARE THE PRIMITIVES, PATTERNS AND PLATFORMS THAT WILL MAKE

EVENT-DRIVEN PROGRAMMING

EASY?

slide-8
SLIDE 8

FUNCTIONS

AND

EVENTS?

slide-9
SLIDE 9

MAYBE

I HONESTLY HAVEN’T GOT A CLUE

slide-10
SLIDE 10

@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

  • f 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

?

slide-11
SLIDE 11

11

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

slide-12
SLIDE 12

@cdavisafc

APP SERVICE APP SERVICE APP

APP

WE’VE BEEN THINKING CLIENT/SERVER FOR SO LONG

▸ HA & Scaling ▸ → Multiple Instances ▸ → Load Balancing ▸ → Externalize Config ▸ Resilience ▸ → Statelessness ▸ → Retries ▸ → Circuit Breaker

APP SERVICE APP DATA

ROUTER

CONFIG SERVICES

slide-13
SLIDE 13

@cdavisafc

SERVICE

APP + …

▸ Autonomy and Agility ▸ → Versioning ▸ Dynamic Environment ▸ → Service Discovery ▸ → Resource Bindings

APP SERVICE APP SERVICE APP CLIENT SERVICE DATA

ROUTER

SERVICE DISCOVERY

slide-14
SLIDE 14

@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

?

slide-15
SLIDE 15

@cdavisafc

THE COLLECTIVE

WE’VE BEEN THINKING CLIENT/SERVER FOR SO LONG

▸ Managability ▸ → Distributed Tracing ▸ Act locally - who’s thinking globally?

SERVICE APP SERVICE APP APP SERVICE APP SERVICE APP SERVICE APP

slide-16
SLIDE 16

@cdavisafc

DISTRIBUTED SYSTEMS CONCERNS

▸ HA & Scaling ▸ Dynamic Environment ▸ Resilience ▸ Autonomy and Agility ▸ Managability

slide-17
SLIDE 17

@cdavisafc

FROM RETRIES…

CLIENT SERVICE RETRY CLIENT EVENT PROMISE

… TO PROMISES

… ENSURING EVENTS ARE NOT LOST FROM CIRCUIT BREAKERS…

RESILIENCE

GENERAL CASE

(INCLUDES A LEAP OF FAITH)

slide-18
SLIDE 18

@cdavisafc

FROM CACHE EXPIRY…

SERVICE SERVICE

… TO MATERIALIZED VIEWS

… ENSURING EVENTS ARE NOT LOST

CACHE EXPIRY VIEW EVENT CONSUMER

AUTONOMY

GENERAL CASE

(INCLUDES A LEAP OF FAITH)

slide-19
SLIDE 19

@cdavisafc

FROM SERVICES…

SERVICE

… TO FUNCTIONS … TO FUNCTIONS FROM LOAD BALANCING…

FUNCTION FUNCTION FUNCTION

RESILIENCE & SCALE

LOAD BALANCING

A BIT LIKE THE STACK FRAME WITH EACH RECURSIVE CALL

slide-20
SLIDE 20

@cdavisafc

SERVICE

FROM DATA BOTTLENECK… … DATA PARTITIONING

DATA DATA SERVICE DATA SERVICE DATA SERVICE

… AND PARTITION RESOLVERS

SERVICE SERVICE

SCALE

slide-21
SLIDE 21

@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

slide-22
SLIDE 22

@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

slide-23
SLIDE 23

@cdavisafc

MANY QUESTIONS

▸ Programming the “Collective” ▸ Justifying the “leap of faith” ▸ …

slide-24
SLIDE 24

@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

slide-25
SLIDE 25

@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?)

slide-26
SLIDE 26

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?

slide-27
SLIDE 27

THANK YOU