sînică alboaie - programming for cloud computing flows of asynchronous messages

26

Upload: codecampiasi

Post on 05-Dec-2014

426 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages
Page 2: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Programming for cloud computing: Flows of asynchronous messages (swarms)

Sînică Alboaie (The Red Point S.A.) 2012,CodeCamp

Page 3: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Programming == Fight against complexity

Essential Complexity?

Page 4: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

"The Tao that can be spoken is not the eternal Tao" Lao Zi

Loose couplingSingle Responsibility Principle Separation of ConcernsOpen Closed principle

Cloud Programming, Distributed and Parallel Systems

... and why should YOU care?

Page 5: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Point of view is worth 80 IQ points?

In Roman time you had to be very smart to multiply two numbers together.

Page 6: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Cloud applications

● not a 'revolution'

● an evolution of the enterprise applications

Page 7: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Isn't any different than traditional development.

● less tolerant of poor development practices

● attention to scalability and security● don't relay on improving hardware ● no security through obscurity

!

Cloud computing exposes bad practices

Page 8: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Money !?

● Programming (new APIs, complexity)● Automation in deployment, configuration● New Type of Programmer: Dev-Op● Scalability (efficient use of hardware)● High availability (install/updates, failures)● Data consistency

Insights: Programming for the cloud

Page 9: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Multitenancy

● PaaS● iPaaS ● ...aaS● Sharing and SLAs● Security

Insights: Programming in cloud

Page 10: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

● use quality open sources:○ Redis, ZooKeeper, Message Queues○ Hadoop, NoSQL Databases, etc○ openstack, cloudfoundry

● node.js!

● Java,.net, php ?● Amazon, Azure, Google ?

Cloud for normal budgets

Page 11: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

What... SWARMING?

So...

Page 12: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Nodes

● Cloud application == Forest● Trees are processes● Swarms are visiting trees (nodes)

Swarm concepts

Page 13: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Nodes

● Swarm's temporary destinations● API providers (services)● Adapters and Clients (web)

Swarm concepts

Page 14: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Swarm description

● variables (members)● phases (code)● "swarm" primitive

Swarm concepts

Page 15: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

At runtime

Nothing special: Message passing!

Swarm concepts

Page 16: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Hello world example, execution of 2 phases in 2 nodes:

Swarm description example

Page 17: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Points of view

(Naive) messaging /Actors/ Erlang:Nodes are sending typed messages to each otherImplicit: Flows are in programmer's minds Application logic mixed in all nodesNodes are reacting to messagesSwarming:Simpler code in nodes(APIs)Explicit: Flows are described in filesMessages are flowing between nodesMessages are causing changes in nodes

Page 18: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Usage: Enterprise Integration

Code cd

Files, DatabasesPoint Point to point (Services/Messages)Busses (Services/Messages)

SwarmESB

Page 19: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Usage: Cloud ready architecture

Code cd

SwarmESB

Page 20: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

● node.js ● Java Script and Flex clients● WebDAV proxy● SOLR adapter● Redis: pub/sub channels

○ messages ● Redis

○ multi-tenant storage

Current implementation

Page 21: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

SwarmESB for you?

Familiarity! Java Script + node.jsVertical and horizontal scalability Architect your new distributed systemConsume heterogeneous services (APIs)Easy integration for future componentsParallel usage of your shiny, new CPU coresElegant programming with asynchronous messages

...

Page 22: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

● multitenant global (redis) contexts● multitenant local (node) contexts● local sub-processes● swarm code redeployment without restart

Swarming can be for SOA's orchestration what REST is for SOAP!

More coolness

Page 23: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

Hackers and Hustlers Thank you!

Page 24: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

WorkerSwarm1 ctor (doWork) 3 phases● doChooseWorker● executeWork● taskDone

Load balancer example

Page 25: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

WorkerManagment swarm ● Ctors:

○ register [worker at start]○ unregister [worker at shutdown]○ checkWorkerStatus [Balancer from time to time]

● Phases:○ doRegister [Balancer]○ doUnegister [Balancer]○ statusCheck [worker]○ statusReport [Balancer]

Load balancer example

Page 26: Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages

SOA (Orchestration and choreography)EAI (Enterprise Integration Patterns)ESB (Enterprise Service Bus)Events and Asynchronous MessagesPaaS ( Platform as a Service)iPaaS (Cloud Integration)

Keywords