Swarms: introduction

Post on 01-Nov-2014

1.462 views 1 download

Tags:

description

A new approach/paradigam for programming with asynchronous messages. Swarmins is like OOP for asynchronous messages. SwarmESB is an open source ESB (Enterprise Service Bus) that can be used for cloud (as an iPaaS) or for on premise software. SwarmESB be easily integrated in any SOA (Service Oriented Architecture) environment that use REST, SOAP, RPC, etc. SwarmESB can be seen as a MoM system (Message oriented Middleware)

Transcript of Swarms: introduction

SwarmESB: A new approach for programming with

asynchronous messages

Sînică Alboaie, 2012https://github.com/salboaie

Usage: Cloud ready architecture

Code cd

SwarmESB

Usage: Enterprise Integration

Code cdSwarmESB:

Programming == Fight against complexity

Presenting a new paradigm: SWARMS!

Swarms are basic concepts like functions, classes, etc.A swarm is like a class for programming with messages.

Simple, but different and new (2012)!

You have to think about it a half hour to really get it!

Sending a swarm is like sending a message?

Nodes

Flowers == OS processes / nodesSwarms/messages are visiting flowers

Distributed system == Field with flowers

Swarming concepts

Nodes

Swarm's destinationsDecisions: intelligent swarms

NOT taken by intelligent FLOWERS!Flowers are just providing services/API

Swarming concepts

Points of view

(Naive) messaging /Actors/ Erlang:Nodes are reacting to messagesNodes are sending typed messages to each otherImplicit: How things are composed and message flows

Swarms:Messages are flowing between nodesMessages are causing changes in nodesSimple and testable code in nodes (just APIs)Explicit: Flows/composition get described in files

Point of view is worth 80 IQ points?

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

How are things represented can be quite important!

Swarm description

● service composition

● variables (members)● phases (code)● use: swarm, broadcast, home primitives

Swarming concepts

Asynchronous messages!

Swarming at runtime?

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

Swarm description example

SwarmESB: Cloud for normal budgets

● Open Source● Node.js ● JavaScript, WebSockets and Flex clients● Redis: pub/sub channels● Redis: multi-tenant storage ● WebDAV proxy● SOLR adapter

Is SwarmESB ready for you?

Familiarity! JavaScript + 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

...

● multitenant global (redis) contexts● multitenant local (node) contexts● local sub-processes● swarm code redeployment without restart● groups, broadcast, load balancing● high availability

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

More features

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

ScalabilityLoose couplingReduce costs by reducing complexitySeparation of Concerns/Open Closed principle

Cloud Programming, Distributed and Parallel Systems

... and why should YOU care?

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

Keywords