Fosdem 2009

download Fosdem 2009

If you can't read please download the document

Transcript of Fosdem 2009

Boring, complex, painful

Messaging in the 21st Century

by Pieter Hintjens, iMatix Corporation

FOSDEM, 2009-02-07

What is SOA?

Slashdot comment #26489673:

> State Of the Art

> Sarbanes-Oxley Act

> State Of Alaska (you betcha)

> Seksueel Overdraagbare Aandoening

> Sega of America

Complex, Boring, Painful

It's good for the closed-source business

Keeps away competition, locks in clients

Messaging is the last big frontier

90% or more is closed source, locked in

Our goals:

Make it open

Make it simple

Change the market

Why Messaging?

Every big project invents messaging

Badly!

It's an easy question: connect A to B

The answer... not so easy

Addressing, queuing, reliability, transport

Costs of software, skills, investment

No-one has the right answers

Until recently...

Introducing AMQP

A general purpose messaging architecture

Replaces custom messaging everywhere

Replaces many proprietary products

An open protocol

Interoperation, competition, choice

Low cost, FOSS products

Designed by users, and small IT firms

So it's reasonably good

http://www.amqp.org

iMatix OpenAMQ

iMatix's AMQP server & client product

FOSS - of course!

Started in 2004 in parallel with AMQP

Reasonably fast - 500,000 msg/sec

Stable, comfortable under pressure

Built with iMatix Base2 metacode toolset

LOC:937,201 - MLOC:159,748 - MMLOC:68,801

http://www.openamq.org

Making it Simpler

Simplicity is the destination, not the start

AMQP is OK but can be improved

Protocol is too complex

We were learning when we made it

Architecture has some flaws

Queuing and routing is not easy

No real community

Process is opaque and exclusive

REST

The web's answer to SOAP and WS

RESTful pattern for messaging

Create-read-update-delete stuff on a server

Server-generated URIs for resources

Scalable, cacheable, simple

"Moving to pure HTTP allowed us to throw away the code for the XML-RPC service. (I love throwing away old code ;-)"

RestMS

G.P. messaging protocol for the web

It's AMQP, but RESTful

Works over plain HTTP (or HTTPS)

Cleans up the AMQP model

=> Feeds, Pipes, Joins, Messages

Speaks to AMQP servers

Free and open protocol

http://www.restms.org

RestMS example - client

POST /restms/domain/default

Content-Type: application/restms+xml

Slug: fortune

RestMS example - server

HTTP/1.1 201 Created

Content-Type: application/restms+xml

Location: http://host.com/restms/feed/fortune

Zyre

iMatix's RestMS server

Open source - of course!

Started in 2008 together with RestMS

Built on Base2, so multicore scalable

Currently part of OpenAMQ project

Acts as AMQPHTTP multiplexer

3,353 MMLOC

http://www.zyre.com

X5

iMatix's web server

Provides HTTP web front-end for Zyre

Based on Xitami (popular web server from 1990's)

Ported to Base2, so fast, scalable, robust

Part of Base2 today, separate later

3,457 MMLOC

http://xitami.wikidot.com

Live Zyre

http://live.zyre.com

Open RestMS server - zero install

Runs latest builds of Zyre and OpenAMQ

use RestMS ();

my $domain = RestMS::Domain->new (hostname => "live.zyre.com");

my $feed = $domain->feed (name => "ublog", type => "fanout");

my $message = RestMS::Message->new;

$message->content (shift);

$message->headers (name => "Jeep Nine Thirst");

$feed->send ($message);

Conclusions

Messaging can be simple, and fun

New open protocols change the game

AMQP is still somewhat complex

RestMS is much simpler

Try RestMS in your web apps

Contribute classes in Python, Ruby, Lua,...

Start to learn to use messaging

Build more ambitious apps

Thank you

For more information please contact the author at [email protected]

Comment & discuss at:

zyre.com

openamq.org

restms.org

Click to edit the title text format

Click to edit the outline text format

Second Outline Level

Third Outline Level

Fourth Outline Level

Fifth Outline Level

Sixth Outline Level

Seventh Outline Level

Eighth Outline Level

Ninth Outline Level

Copyright 2006-2009 iMatix CorporationCreativeCommons Attribution-Share Alike 3.0