SlideShare a Scribd company logo
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
Ad

More Related Content

What's hot (19)

The Pillars Of Concurrency
The Pillars Of ConcurrencyThe Pillars Of Concurrency
The Pillars Of Concurrency
aviade
 
Let your stuff talk!
Let your stuff talk!Let your stuff talk!
Let your stuff talk!
Jeff Prestes
 
Intro to Node.js
Intro to Node.jsIntro to Node.js
Intro to Node.js
James Carr
 
Nginx: From Russia With Love
Nginx: From Russia With LoveNginx: From Russia With Love
Nginx: From Russia With Love
Eric Marden
 
Docker on Mesos With OpenVNet (eng)
Docker on Mesos With OpenVNet (eng)Docker on Mesos With OpenVNet (eng)
Docker on Mesos With OpenVNet (eng)
skipping classes
 
Mesos network isolation at Criteo
Mesos network isolation at CriteoMesos network isolation at Criteo
Mesos network isolation at Criteo
Frederic Boismenu
 
Hang fire
Hang fireHang fire
Hang fire
Reshmy P.P
 
Rabbit mq, amqp and php
Rabbit mq, amqp and phpRabbit mq, amqp and php
Rabbit mq, amqp and php
rodeob
 
Rabbit MQ
Rabbit MQRabbit MQ
Rabbit MQ
Tran Thanh Thi
 
Scaling out eclipse hono
Scaling out eclipse honoScaling out eclipse hono
Scaling out eclipse hono
dejanb
 
Using SCTP with Scamper and Netty
Using SCTP with Scamper and NettyUsing SCTP with Scamper and Netty
Using SCTP with Scamper and Netty
Tim Boudreau
 
Wordpress Meetup ISCTE
Wordpress Meetup ISCTEWordpress Meetup ISCTE
Wordpress Meetup ISCTE
Pedro Dias
 
An introduction to MQTT - Pub / Sub for the masses
An introduction to MQTT - Pub / Sub for the massesAn introduction to MQTT - Pub / Sub for the masses
An introduction to MQTT - Pub / Sub for the masses
Dominik Obermaier
 
VWBPE 2020 - Overcoming LSL Limitations in Second Life
VWBPE 2020 - Overcoming LSL Limitations in Second LifeVWBPE 2020 - Overcoming LSL Limitations in Second Life
VWBPE 2020 - Overcoming LSL Limitations in Second Life
jbhancroft
 
Rust programming-language
Rust programming-languageRust programming-language
Rust programming-language
Mujahid Malik Arain
 
An introduction to node3
An introduction to node3An introduction to node3
An introduction to node3
Vivian S. Zhang
 
Notes on Netty baics
Notes on Netty baicsNotes on Netty baics
Notes on Netty baics
Rick Hightower
 
PHP at Density and Scale
PHP at Density and ScalePHP at Density and Scale
PHP at Density and Scale
David Timothy Strauss
 
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
Ruby Meditation
 
The Pillars Of Concurrency
The Pillars Of ConcurrencyThe Pillars Of Concurrency
The Pillars Of Concurrency
aviade
 
Let your stuff talk!
Let your stuff talk!Let your stuff talk!
Let your stuff talk!
Jeff Prestes
 
Intro to Node.js
Intro to Node.jsIntro to Node.js
Intro to Node.js
James Carr
 
Nginx: From Russia With Love
Nginx: From Russia With LoveNginx: From Russia With Love
Nginx: From Russia With Love
Eric Marden
 
Docker on Mesos With OpenVNet (eng)
Docker on Mesos With OpenVNet (eng)Docker on Mesos With OpenVNet (eng)
Docker on Mesos With OpenVNet (eng)
skipping classes
 
Mesos network isolation at Criteo
Mesos network isolation at CriteoMesos network isolation at Criteo
Mesos network isolation at Criteo
Frederic Boismenu
 
Rabbit mq, amqp and php
Rabbit mq, amqp and phpRabbit mq, amqp and php
Rabbit mq, amqp and php
rodeob
 
Scaling out eclipse hono
Scaling out eclipse honoScaling out eclipse hono
Scaling out eclipse hono
dejanb
 
Using SCTP with Scamper and Netty
Using SCTP with Scamper and NettyUsing SCTP with Scamper and Netty
Using SCTP with Scamper and Netty
Tim Boudreau
 
Wordpress Meetup ISCTE
Wordpress Meetup ISCTEWordpress Meetup ISCTE
Wordpress Meetup ISCTE
Pedro Dias
 
An introduction to MQTT - Pub / Sub for the masses
An introduction to MQTT - Pub / Sub for the massesAn introduction to MQTT - Pub / Sub for the masses
An introduction to MQTT - Pub / Sub for the masses
Dominik Obermaier
 
VWBPE 2020 - Overcoming LSL Limitations in Second Life
VWBPE 2020 - Overcoming LSL Limitations in Second LifeVWBPE 2020 - Overcoming LSL Limitations in Second Life
VWBPE 2020 - Overcoming LSL Limitations in Second Life
jbhancroft
 
An introduction to node3
An introduction to node3An introduction to node3
An introduction to node3
Vivian S. Zhang
 
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
Ruby Meditation
 

Viewers also liked (16)

Etnografia de america
Etnografia de americaEtnografia de america
Etnografia de america
juliaruiz100
 
Deploying FuseMQ with Fuse Fabric
Deploying FuseMQ with Fuse FabricDeploying FuseMQ with Fuse Fabric
Deploying FuseMQ with Fuse Fabric
dejanb
 
Software Architecture using ZeroMQ - techmesh 2012
Software Architecture using ZeroMQ - techmesh 2012Software Architecture using ZeroMQ - techmesh 2012
Software Architecture using ZeroMQ - techmesh 2012
pieterh
 
Git Without Branches - Simple, Smooth, Scalable
Git Without Branches - Simple, Smooth, ScalableGit Without Branches - Simple, Smooth, Scalable
Git Without Branches - Simple, Smooth, Scalable
pieterh
 
Revolutionary Open Source
Revolutionary Open SourceRevolutionary Open Source
Revolutionary Open Source
pieterh
 
Social architecture-101
Social architecture-101Social architecture-101
Social architecture-101
pieterh
 
Introduction to ActiveMQ Apollo
Introduction to ActiveMQ ApolloIntroduction to ActiveMQ Apollo
Introduction to ActiveMQ Apollo
dejanb
 
Integration with Salesforce using Mule ESB
Integration with Salesforce using Mule ESBIntegration with Salesforce using Mule ESB
Integration with Salesforce using Mule ESB
Sanjeet Pandey
 
Software Architecture over ZeroMQ
Software Architecture over ZeroMQSoftware Architecture over ZeroMQ
Software Architecture over ZeroMQ
pieterh
 
ZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 Labs
James Dennis
 
Build reliable, traceable, distributed systems with ZeroMQ
Build reliable, traceable, distributed systems with ZeroMQBuild reliable, traceable, distributed systems with ZeroMQ
Build reliable, traceable, distributed systems with ZeroMQ
Robin Xiao
 
FOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQFOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQ
pieterh
 
Europycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQEuropycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQ
fcrippa
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The Answer
Ian Barber
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
Dmitriy Samovskiy
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQ
pieterh
 
Etnografia de america
Etnografia de americaEtnografia de america
Etnografia de america
juliaruiz100
 
Deploying FuseMQ with Fuse Fabric
Deploying FuseMQ with Fuse FabricDeploying FuseMQ with Fuse Fabric
Deploying FuseMQ with Fuse Fabric
dejanb
 
Software Architecture using ZeroMQ - techmesh 2012
Software Architecture using ZeroMQ - techmesh 2012Software Architecture using ZeroMQ - techmesh 2012
Software Architecture using ZeroMQ - techmesh 2012
pieterh
 
Git Without Branches - Simple, Smooth, Scalable
Git Without Branches - Simple, Smooth, ScalableGit Without Branches - Simple, Smooth, Scalable
Git Without Branches - Simple, Smooth, Scalable
pieterh
 
Revolutionary Open Source
Revolutionary Open SourceRevolutionary Open Source
Revolutionary Open Source
pieterh
 
Social architecture-101
Social architecture-101Social architecture-101
Social architecture-101
pieterh
 
Introduction to ActiveMQ Apollo
Introduction to ActiveMQ ApolloIntroduction to ActiveMQ Apollo
Introduction to ActiveMQ Apollo
dejanb
 
Integration with Salesforce using Mule ESB
Integration with Salesforce using Mule ESBIntegration with Salesforce using Mule ESB
Integration with Salesforce using Mule ESB
Sanjeet Pandey
 
Software Architecture over ZeroMQ
Software Architecture over ZeroMQSoftware Architecture over ZeroMQ
Software Architecture over ZeroMQ
pieterh
 
ZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 Labs
James Dennis
 
Build reliable, traceable, distributed systems with ZeroMQ
Build reliable, traceable, distributed systems with ZeroMQBuild reliable, traceable, distributed systems with ZeroMQ
Build reliable, traceable, distributed systems with ZeroMQ
Robin Xiao
 
FOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQFOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQ
pieterh
 
Europycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQEuropycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQ
fcrippa
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The Answer
Ian Barber
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
Dmitriy Samovskiy
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQ
pieterh
 
Ad

Similar to Fosdem 2009 (20)

The Real World - Plugging the Enterprise Into It (nodejs)
The Real World - Plugging  the Enterprise Into It (nodejs)The Real World - Plugging  the Enterprise Into It (nodejs)
The Real World - Plugging the Enterprise Into It (nodejs)
Aman Kohli
 
ENSURING FAST AND SECURE GAMING APPLICATION DOWNLOADS GLOBALLY
ENSURING FAST AND SECURE GAMING APPLICATION DOWNLOADS GLOBALLYENSURING FAST AND SECURE GAMING APPLICATION DOWNLOADS GLOBALLY
ENSURING FAST AND SECURE GAMING APPLICATION DOWNLOADS GLOBALLY
CDNetworks
 
f2f-overview1-presentation about rabbitmq and middleware
f2f-overview1-presentation about rabbitmq and middlewaref2f-overview1-presentation about rabbitmq and middleware
f2f-overview1-presentation about rabbitmq and middleware
ndonikristi98
 
f2f-overview12.ppt
f2f-overview12.pptf2f-overview12.ppt
f2f-overview12.ppt
wentaozhu3
 
RabbitMQ Protocol Essentials - Introduction for beginners
RabbitMQ Protocol Essentials - Introduction for beginnersRabbitMQ Protocol Essentials - Introduction for beginners
RabbitMQ Protocol Essentials - Introduction for beginners
-
 
Creating Polyglot Communication Between Kubernetes Clusters and Legacy System...
Creating Polyglot Communication Between Kubernetes Clusters and Legacy System...Creating Polyglot Communication Between Kubernetes Clusters and Legacy System...
Creating Polyglot Communication Between Kubernetes Clusters and Legacy System...
VMware Tanzu
 
Mashups
MashupsMashups
Mashups
Johan Eltes
 
Js remote conf
Js remote confJs remote conf
Js remote conf
Bart Wood
 
Build HA Asterisk on Microsoft Azure using DRBD/Heartbeat
Build HA Asterisk on Microsoft Azure using DRBD/HeartbeatBuild HA Asterisk on Microsoft Azure using DRBD/Heartbeat
Build HA Asterisk on Microsoft Azure using DRBD/Heartbeat
Sanjay Willie
 
Tuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on MobicentsTuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on Mobicents
Jean Deruelle
 
WebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the FutureWebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the Future
Frank Greco
 
Dangerous Demo, Metaswitch TADSummit 2015, Paul Drew
Dangerous Demo, Metaswitch TADSummit 2015, Paul DrewDangerous Demo, Metaswitch TADSummit 2015, Paul Drew
Dangerous Demo, Metaswitch TADSummit 2015, Paul Drew
Alan Quayle
 
Network-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQNetwork-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQ
ICS
 
Messaging - RabbitMQ, Azure (Service Bus), Docker and Azure Functions
Messaging - RabbitMQ, Azure (Service Bus), Docker and Azure FunctionsMessaging - RabbitMQ, Azure (Service Bus), Docker and Azure Functions
Messaging - RabbitMQ, Azure (Service Bus), Docker and Azure Functions
John Staveley
 
HTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the WebHTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the Web
Peter Lubbers
 
Sprayer: low latency, reliable multichannel messaging
Sprayer: low latency, reliable multichannel messagingSprayer: low latency, reliable multichannel messaging
Sprayer: low latency, reliable multichannel messaging
Pablo Enfedaque
 
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel MessagingNoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
Javier Arias Losada
 
WordPress + Amazon Web Services Hands-on WARSAW
WordPress + Amazon Web Services Hands-on WARSAWWordPress + Amazon Web Services Hands-on WARSAW
WordPress + Amazon Web Services Hands-on WARSAW
Matt Pilarski
 
Apidaze WebRTC Workshop barcelona 21st april 2013
Apidaze WebRTC Workshop barcelona 21st april 2013Apidaze WebRTC Workshop barcelona 21st april 2013
Apidaze WebRTC Workshop barcelona 21st april 2013
Alan Quayle
 
AMIMOTO: WordPress + Amazon Web Services Hands-on WARSAW
AMIMOTO: WordPress + Amazon Web Services Hands-on WARSAW AMIMOTO: WordPress + Amazon Web Services Hands-on WARSAW
AMIMOTO: WordPress + Amazon Web Services Hands-on WARSAW
Kel
 
The Real World - Plugging the Enterprise Into It (nodejs)
The Real World - Plugging  the Enterprise Into It (nodejs)The Real World - Plugging  the Enterprise Into It (nodejs)
The Real World - Plugging the Enterprise Into It (nodejs)
Aman Kohli
 
ENSURING FAST AND SECURE GAMING APPLICATION DOWNLOADS GLOBALLY
ENSURING FAST AND SECURE GAMING APPLICATION DOWNLOADS GLOBALLYENSURING FAST AND SECURE GAMING APPLICATION DOWNLOADS GLOBALLY
ENSURING FAST AND SECURE GAMING APPLICATION DOWNLOADS GLOBALLY
CDNetworks
 
f2f-overview1-presentation about rabbitmq and middleware
f2f-overview1-presentation about rabbitmq and middlewaref2f-overview1-presentation about rabbitmq and middleware
f2f-overview1-presentation about rabbitmq and middleware
ndonikristi98
 
f2f-overview12.ppt
f2f-overview12.pptf2f-overview12.ppt
f2f-overview12.ppt
wentaozhu3
 
RabbitMQ Protocol Essentials - Introduction for beginners
RabbitMQ Protocol Essentials - Introduction for beginnersRabbitMQ Protocol Essentials - Introduction for beginners
RabbitMQ Protocol Essentials - Introduction for beginners
-
 
Creating Polyglot Communication Between Kubernetes Clusters and Legacy System...
Creating Polyglot Communication Between Kubernetes Clusters and Legacy System...Creating Polyglot Communication Between Kubernetes Clusters and Legacy System...
Creating Polyglot Communication Between Kubernetes Clusters and Legacy System...
VMware Tanzu
 
Js remote conf
Js remote confJs remote conf
Js remote conf
Bart Wood
 
Build HA Asterisk on Microsoft Azure using DRBD/Heartbeat
Build HA Asterisk on Microsoft Azure using DRBD/HeartbeatBuild HA Asterisk on Microsoft Azure using DRBD/Heartbeat
Build HA Asterisk on Microsoft Azure using DRBD/Heartbeat
Sanjay Willie
 
Tuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on MobicentsTuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on Mobicents
Jean Deruelle
 
WebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the FutureWebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the Future
Frank Greco
 
Dangerous Demo, Metaswitch TADSummit 2015, Paul Drew
Dangerous Demo, Metaswitch TADSummit 2015, Paul DrewDangerous Demo, Metaswitch TADSummit 2015, Paul Drew
Dangerous Demo, Metaswitch TADSummit 2015, Paul Drew
Alan Quayle
 
Network-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQNetwork-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQ
ICS
 
Messaging - RabbitMQ, Azure (Service Bus), Docker and Azure Functions
Messaging - RabbitMQ, Azure (Service Bus), Docker and Azure FunctionsMessaging - RabbitMQ, Azure (Service Bus), Docker and Azure Functions
Messaging - RabbitMQ, Azure (Service Bus), Docker and Azure Functions
John Staveley
 
HTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the WebHTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the Web
Peter Lubbers
 
Sprayer: low latency, reliable multichannel messaging
Sprayer: low latency, reliable multichannel messagingSprayer: low latency, reliable multichannel messaging
Sprayer: low latency, reliable multichannel messaging
Pablo Enfedaque
 
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel MessagingNoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
Javier Arias Losada
 
WordPress + Amazon Web Services Hands-on WARSAW
WordPress + Amazon Web Services Hands-on WARSAWWordPress + Amazon Web Services Hands-on WARSAW
WordPress + Amazon Web Services Hands-on WARSAW
Matt Pilarski
 
Apidaze WebRTC Workshop barcelona 21st april 2013
Apidaze WebRTC Workshop barcelona 21st april 2013Apidaze WebRTC Workshop barcelona 21st april 2013
Apidaze WebRTC Workshop barcelona 21st april 2013
Alan Quayle
 
AMIMOTO: WordPress + Amazon Web Services Hands-on WARSAW
AMIMOTO: WordPress + Amazon Web Services Hands-on WARSAW AMIMOTO: WordPress + Amazon Web Services Hands-on WARSAW
AMIMOTO: WordPress + Amazon Web Services Hands-on WARSAW
Kel
 
Ad

Recently uploaded (20)

Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 

Fosdem 2009

  • 1. Boring, complex, painful Messaging 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, 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
  • 4. 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...
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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 &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. 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
  • 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 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
  • 13. 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
  • 14. 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);
  • 15. 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
  • 16. Thank you For more information please contact the author at [email protected] Comment & discuss at: zyre.com openamq.org restms.org