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) > S eksueel 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 <?xml version=&quot;1.0&quot;?> <restms> <feed type=&quot;service&quot; /> </restms>
RestMS example - server HTTP/1.1 201 Created Content-Type: application/restms+xml Location: http://host.com/restms/feed/fortune <?xml version=&quot;1.0&quot;?> <restms> <feed type=&quot;service&quot;  name=&quot;fortune&quot; /> </restms>
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 AMQP<=>HTTP 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 => &quot;live.zyre.com&quot;); my $feed = $domain->feed (name => &quot;ublog&quot;, type => &quot;fanout&quot;); my $message = RestMS::Message->new; $message->content (shift); $message->headers (name => &quot;Jeep Nine Thirst&quot;); $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 ph@imatix.com Comment & discuss at: zyre.com openamq.org restms.org

Fosdem 2009

  • 1.
    Boring, complex, painfulMessaging in the 21st Century by Pieter Hintjens, iMatix Corporation FOSDEM, 2009-02-07
  • 2.
    What is “SOA”?Slashdot comment #26489673: > State Of the Art > Sarbanes-Oxley Act > State Of Alaska (you betcha) > S eksueel Overdraagbare Aandoening > Sega of America
  • 3.
    Complex, Boring, PainfulIt'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
  • 4.
    Why Messaging? Everybig 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...
  • 5.
    Introducing AMQP Ageneral 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
  • 6.
    iMatix OpenAMQ iMatix'sAMQP 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
  • 7.
    Making it SimplerSimplicity 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
  • 8.
    REST The web'sanswer to SOAP and WS RESTful pattern for messaging Create-read-update-delete stuff on a server Server-generated URIs for resources Scalable, cacheable, simple &quot; Moving to pure HTTP allowed us to throw away the code for the XML-RPC service. (I love throwing away old code ;-) &quot;
  • 9.
    RestMS G.P. messagingprotocol 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
  • 10.
    RestMS example -client POST /restms/domain/default Content-Type: application/restms+xml Slug: fortune <?xml version=&quot;1.0&quot;?> <restms> <feed type=&quot;service&quot; /> </restms>
  • 11.
    RestMS example -server HTTP/1.1 201 Created Content-Type: application/restms+xml Location: http://host.com/restms/feed/fortune <?xml version=&quot;1.0&quot;?> <restms> <feed type=&quot;service&quot; name=&quot;fortune&quot; /> </restms>
  • 12.
    Zyre iMatix's RestMSserver Open source - of course! Started in 2008 together with RestMS Built on Base2, so multicore scalable Currently part of OpenAMQ project Acts as AMQP<=>HTTP multiplexer 3,353 MMLOC http://www.zyre.com
  • 13.
    X5 iMatix's webserver 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
  • 14.
    Live Zyre http://live.zyre.comOpen RestMS server - zero install Runs latest builds of Zyre and OpenAMQ use RestMS (); my $domain = RestMS::Domain->new (hostname => &quot;live.zyre.com&quot;); my $feed = $domain->feed (name => &quot;ublog&quot;, type => &quot;fanout&quot;); my $message = RestMS::Message->new; $message->content (shift); $message->headers (name => &quot;Jeep Nine Thirst&quot;); $feed->send ($message);
  • 15.
    Conclusions Messaging canbe 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
  • 16.
    Thank you Formore information please contact the author at ph@imatix.com Comment & discuss at: zyre.com openamq.org restms.org