Fosdem 2009

Boring, Complex and Painful - Messaging in the 21st Century. Notes on a presentation for FOSDEM 2009.

Complex and Boring

Complexity is good for the closed-source software business. It keeps competitors away, and captures clients and profits. Messaging is the last frontier, the last big domain where closed-source rules. Our objective: make it simple, make it open, change that market. It's the users and small software firms vs. the large software firms.

The Point of Messaging

Every significant software project will make its own messaging system. Badly. Messaging is an easy question: "Connect these pieces together". But the answer is difficult: addressing, queuing, formatting, transports, cost, reliability. Existing answers all seem wrong in vital areas.

AMQP and What it Means

AMQP is a general-purpose messaging architecture. This means it can be used in any place where you'd make your own messaging system. It's a protocol. This means you can choose from several products, which interoperate and compete. It's open. So all AMQP implementations are FOSS. Designed by users and small software firms. So, a reasonable answer.

The OpenAMQ project

OpenAMQ is iMatix's AMQP server and client. FOSS, of course. Project started in 2005 in parallel with AMQP. Reasonably fast (500k msg/sec), stable, handles very large volumes happily. Built with iMatix Base2 metaprogramming architecture for portable multicore servers. LOC: 937,201. LOMC (lines of metacode): 159,748 LOMMC: 68,801. http://www.openamq.org.

Making it Simpler

AMQP is OK but can be improved. Protocol is too complex. Architecture has some flaws. Community excludes small contributors. Not an open process. Large software firms dominating again. Here we go again… :-)

REST

The web's answer to SOAP. Create-Read-Update-Delete. Server-generated URIs for new 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

RestMS is a general-purpose messaging protocol for the web. It's AMQP, but RESTful. Works over plain HTTP. Cleans-up the AMQP model giving "feeds", "pipes" and "joins". Connects to AMQP servers. Free & open protocol. http://www.restms.org, http://wiki.amqp.org/spec:7.

Client:
-------------------------------------------------
POST /restms/domain/default
Content-Type: application/restms+xml
Slug: fortune

<?xml version="1.0"?>
<restms xmlns="http://www.imatix.com/schema/restms">
  <feed type="service" />
</restms>
Server:
-------------------------------------------------
HTTP/1.1 201 Created
Content-Type: application/restms+xml
Location: http://host.com/restms/feed/fortune

<?xml version="1.0"?>
<restms xmlns="http://www.imatix.com/schema/restms">
  <feed type="service" name="fortune" />
</restms>

Zyre

Zyre is iMatix's RestMS server. FOSS, of course. Project started in 2008 in parallel with RestMS. Built with Base2, so scalable to multicore servers, fast, stable. Currently, part of OpenAMQ project, will be split off later. Talks to OpenAMQ at one side, and HTTP at the other. http://www.zyre.com. 3,353 LOMMC.

X5

X5 is iMatix's HTTP server and does HTTP work for Zyre. Is Xitami (1996-2002), rebuilt on Base2. Fast, scalable, secure, smart. Like, auto-blacklists offensive IP addresses. Currently, part of Base2, will be split off later. 3,457 LOMMC.

Live.zyre.com

Live.zyre.com is an open RestMS server. Runs latest build of Zyre and OpenAMQ. To use, you just need an Internet connection. This lets you test RestMS without installation.

Add a New Comment
Page tags: front