crosstalk overview (austin javascript/node.js meetup) - 2012-12-07

104
Crosstalk

Upload: crosstalk

Post on 05-Dec-2014

661 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Crosstalk

Page 2: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

The Internet is broken

Page 3: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

The Internet is brokenfor non-programmers

Page 4: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07
Page 5: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07
Page 6: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07
Page 7: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Composability

Page 8: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

ComposabilityWhat skills do you need?

Page 9: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Internet Scale

Page 10: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Internet ScaleDistributed Systems

Page 11: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Fallacies of Distributed Computing

● the network is reliable● latency isn't a problem● bandwidth isn't a problem● the network is secure● topology won't change● the administrator will know what to do● transport cost isn't a problem● the network is homogeneous● the system is atomic/monolithic● the system is finished● business logic can and should be centralized

Page 12: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Internet ScaleDistributed Systems

Page 13: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Internet ScaleDistributed Systems

Never Done

Page 14: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

How should we design our composable distributed software system?

Page 15: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07
Page 16: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

non-programmers

Page 17: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Crosstalk

Page 18: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

The way you should be doing things should be easy and the way you shouldn't do things should

be difficult.

-- Ryan Dahl, original Node.js presentation, JSConf 2009

Page 19: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Modular - Composable - Resilient

Crosstalk

Page 20: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Modular - Composable - Resilientin JavaScript

Crosstalk

Page 21: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Terminology

Page 22: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Worker Prime SwarmTerminology

Page 23: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Worker Prime SwarmTerminology

Page 24: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Worker Prime SwarmTerminology

Page 25: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Worker Prime SwarmTerminology

Page 26: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Architecture

Page 27: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Crosstalk Swarm

Page 28: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Crosstalk Swarm

Prime

Prime

Prime

Prime Prime

Prime Prime

Prime

Prime

Prime

Prime

Prime

Prime

Prime

Page 29: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Every Prime lies on the "surface area"

Page 30: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Every Prime lies on the "surface area"

Page 31: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Gossip

Page 32: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Gossip

Page 33: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Gossip

Page 34: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Gossip

Page 35: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Gossip

Page 36: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Prime Lifecycle

Page 37: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Prime LifecycleLet it crash

Page 38: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Φ accrual failure detection

Page 39: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Prime LifecycleLet it Make it crash

Page 40: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Worker Lifecycle

Page 41: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Worker LifecycleLet it crash

Page 42: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Worker LifecycleLet it Make it crash

Page 43: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Getting things done

Page 44: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Getting things donei.e: building workers

Page 45: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

index.jspackage.json

Page 46: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Hello distributed world!

Page 47: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Hello distributed world!

"magic" global variable

Page 48: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Hello distributed world!

"magic" global variable message name

Page 49: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Hello distributed world!

"magic" global variable message namefunction to execute when

a message arrives

Page 50: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Hello distributed world!

"magic" global variable message namefunction to execute when

a message arrives

name of message to emit

Page 51: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07
Page 52: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice worker #1

Alice worker #2

Alice and a sandwich

Page 53: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice worker #1

Alice worker #2

Alice and a sandwich

it's just JavaScript

Page 54: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice worker #1

Alice worker #2

Alice and a sandwich

it's just JavaScript

emit "sandwich" messages

Page 55: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice worker #1

Alice worker #2

Alice and a sandwich

it's just JavaScript

listen for "sandwich" messages

emit "sandwich" messages

Page 56: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's worker

Bob's worker

Alice and Bob

Page 57: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's worker

Bob's worker

Alice and Bob

public scope

Page 58: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's worker

Bob's worker

Alice and Bob

public scope

addressed message

Page 59: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's worker

Bob's worker

Alice and Bob

public scope

addressed message

address is omittedwhen declaring a message listener

Page 60: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's worker

Alice and Bob using request-reply (1 of 2)

Page 61: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's worker

Alice and Bob using request-reply (1 of 2)

addressed message

Page 62: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Bob's worker

Alice and Bob using request-reply ( 2 of 2 )

Page 63: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Bob's worker

Alice and Bob using request-reply ( 2 of 2 )

address is omittedwhen declaring a message listener

Page 64: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Eve's worker

Eve enters... ( 1 of 2 )

Page 65: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Eve's worker

Eve enters... ( 1 of 2 )

anyone can send Alice a message

Page 66: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's improved worker

Eve enters... ( 2 of 2 )

Page 67: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's improved worker

Eve enters... ( 2 of 2 )

only messages from @bob (Bob) are

processed

Page 68: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's configuration file

Eve-n better

Alice's refactored worker

Page 69: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's configuration file

Eve-n better

Alice's refactored worker

import Crosstalk functionality using CommonJS module

pattern

Page 70: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Alice's configuration file

Eve-n better

Alice's refactored worker

factor out dependencies

import Crosstalk functionality using CommonJS module

pattern

Page 71: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Carl's worker

Generic Bob ( 1 of 2 )

Page 72: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Carl's worker

Generic Bob ( 1 of 2 )

send data with your messages

Page 73: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Previous Bob worker

Generic Bob ( 2 of 2 )

Generalized Bob worker

Page 74: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Previous Bob worker

Generic Bob ( 2 of 2 )

Generalized Bob worker

access data in messages

Page 75: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Previous Bob worker

Generic Bob ( 2 of 2 )

Generalized Bob worker

access data in messages

Page 76: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Previous Bob worker

Generic Bob ( 2 of 2 )

Generalized Bob worker

access data in messages

Page 77: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

C-C-C-C-C-Callback!

New Carl worker

Bob worker using callback

Page 78: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

C-C-C-C-C-Callback!

New Carl worker

Bob worker using callback

callback will reply to sender

Page 79: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

C-C-C-C-C-Callback!

New Carl worker

Bob worker using callback

callback will reply to senderif sender provides it

Page 80: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

C-C-C-C-C-Callback!

New Carl worker

Bob worker using callback

callback will reply to senderif sender provides it

by convention, the first parameter is always an error

Page 81: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

C-C-C-C-C-Callback!

New Carl worker

Bob worker using callback

callback will reply to senderif sender provides it

by convention, the first parameter is always an error

second param is the response

Page 82: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

C-C-C-C-C-Callback!

New Carl worker

Bob worker using callback

callback will reply to senderif sender provides it

by convention, the first parameter is always an error

second param is the response

no error

Page 83: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

C-C-C-C-C-Callback!

New Carl worker

Bob worker using callback

callback will reply to senderif sender provides it

by convention, the first parameter is always an error

second param is the response

no errorsandwich response

Page 84: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Secure Callback

More secure Carl worker

Page 85: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Secure Callback

More secure Carl worker

scope for the callback response

Page 86: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Secure Callback

More secure Carl worker

scope for the callback response

only @bob can respond to this request

Page 87: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

How many sandwiches?

Alice's generic web sandwich worker

Page 88: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07
Page 89: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Node.js style HTTP request handler

function

Page 90: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Node.js style HTTP request handler

function

built-in Crosstalk API for web services

Page 91: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Node.js style HTTP request handler

function

built-in Crosstalk API for web services

subdomain (required)

Page 92: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Node.js style HTTP request handler

function

built-in Crosstalk API for web services

subdomain (required)

request listener (required)

Page 93: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Node.js style HTTP request handler

function

built-in Crosstalk API for web services

subdomain (required)

request listener (required)

Page 94: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

How many secure sandwiches?

Alice's https web sandwich worker

Page 95: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

How many secure sandwiches?

Alice's https web sandwich worker

httpsOnly flag (optional)

Page 96: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Persistent sandwich

Page 97: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Persistent sandwich

another Crosstalk API

Page 98: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Persistent sandwich

another Crosstalk API

refactored dependencies

Page 99: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Recoverable sandwich

Page 100: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

There's more...

Page 101: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Crosstalk runs on Crosstalk

Page 102: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

Modular - Composable - Resilientin JavaScript

Crosstalk

Page 103: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

https://github.com/crosstalk

Crosstalk

Page 104: Crosstalk Overview (Austin JavaScript/Node.js Meetup) - 2012-12-07

https://github.com/crosstalk

npm install -g crosstalk-idenpm install -g crosstalk-cli

Crosstalk