Open Source XMPP for  Cloud Services Matt Tucker, CTO Jive Software
Who am I? Member of the XMPP Standards Foundation and former chair of the board Behind Smack and Openfire at igniterealtime.org Keep giving talks about XMPP at OSCON…
 
In This Talk Brief XMPP and cloud computing overview Problems in cloud architectures; how XMPP can help Open Source tools Tips and tricks
XMPP (Jabber) Overview The open protocol for instant messaging (it’s fair to declare victory) IETF standard and a robust org developing the protocol: XMPP Standards Foundation Simple for developers and very deep Open Source toolset and heritage
XMPP Building Blocks <iq to=‘weather.jivesoftware.com’ type=‘get’ id=‘123’><query xmlns=‘jabber:weather’><city>pdx</city></query></iq> <iq from=‘weather.jivesoftware.com’> type=‘result’ id=‘123’><query xmlns=‘jabber:weather’><weather>Not Raining!</weather></query></iq>  Exchange information and perform queries using a request / response protocol. IQ <message to='matt@jivesoftware.com' from='gato@igniterealtime.org’> <body>How's that presentation going?</body> </message> Send data between users Message <presence from=‘matt@jivesoftware.com’> <status>Giving a talk...</status> </presence> Send presence data or manage presence subscriptions Presence Example Description
What is Cloud Computing? Predominately based on web services (SOAP, REST, etc) Exploding in popularity – a critical trend of software architectures Started with simple services; now growing complex
Cloud Service Example: Salesforce.com Uses SOAP (not XML-RPC or REST) Huge percentage of traffic is polling for updates Introduced “Outbound Messaging” to cope with polling – but there are firewall issues
Cloud Architecture Problems Polling doesn’t scale and isn’t real-time Need two-way data exchange with easy firewall traversal Web services are feature poor (presence, binary data, etc) SOAP is what’s needed for complex services, but it’s overly complicated Thesis:  web services are great for simple cloud services; XMPP is better for complex cloud services
XMPP vs. SOAP Ubiquity Innovative Features Ease Security Performance SOAP XMPP
XMPP Cloud Architecture
Open Source Tools: Server Openfire Most popular XMPP server, with over 1 million downloads In production with many cloud services Massively scalable Support for even strict firewall environments -- BOSH
Open Source Tools: Client APIs Dozens of libraries in every major programming language – start at jabber.org Java: Smack library from igniterealtime.org Flex: XIFF library from igniterealtime.org Javascript: JSJac, dojox.xmpp
Open Source Tools: Cloud Components Whack (Java) – simple and high level API Components use XEP-114 (easy)
ExternalWeatherComponent.java public class ExternalWeatherComponent { public static void main(String[] args) { ExternalComponentManager manager =  new ExternalComponentManager(&quot;example.com&quot;, 5275); // Set the secret key for this component, for authentication manager.setSecretKey(&quot;weather&quot;, &quot;test&quot;); // Register this component to a subdomain of the server manager.addComponent(&quot;weather&quot;, new WeatherComponent()); //... Component will now start processing requests } }
WeatherComponent.java public class WeatherComponent implements Component { public String getName() { return &quot;US Weather&quot;; } public void processPacket(Packet packet) { // Get the request packet here, parse it and return a reply  } public void initialize(JID jid, ComponentManager componentManager) { } public void shutdown() { } }
Example: Clearspace Doc Sharing
Example: Twitter Fire Hose Uses XMPP to provide access to all status updates, which would be impossible using web services polling Only provided to a small number of services (most recently Gnip)
Openfire Cloud Services: Tips and Tricks External components allow for hot-deploy of new or updated services Run on separate hardware for scalability Openfire allows components to connect multiple times for scalability and redundancy Epoll on Linux provides great performance Ad-hoc command available to listen for all traffic Use XMPP federation for federating cloud services
Questions? Blog Entry Link Email/IM:  [email_address] www.igniterealtime.org

Open Source XMPP for Cloud Services

  • 1.
    Open Source XMPPfor Cloud Services Matt Tucker, CTO Jive Software
  • 2.
    Who am I?Member of the XMPP Standards Foundation and former chair of the board Behind Smack and Openfire at igniterealtime.org Keep giving talks about XMPP at OSCON…
  • 3.
  • 4.
    In This TalkBrief XMPP and cloud computing overview Problems in cloud architectures; how XMPP can help Open Source tools Tips and tricks
  • 5.
    XMPP (Jabber) OverviewThe open protocol for instant messaging (it’s fair to declare victory) IETF standard and a robust org developing the protocol: XMPP Standards Foundation Simple for developers and very deep Open Source toolset and heritage
  • 6.
    XMPP Building Blocks<iq to=‘weather.jivesoftware.com’ type=‘get’ id=‘123’><query xmlns=‘jabber:weather’><city>pdx</city></query></iq> <iq from=‘weather.jivesoftware.com’> type=‘result’ id=‘123’><query xmlns=‘jabber:weather’><weather>Not Raining!</weather></query></iq> Exchange information and perform queries using a request / response protocol. IQ <message to='matt@jivesoftware.com' from='gato@igniterealtime.org’> <body>How's that presentation going?</body> </message> Send data between users Message <presence from=‘matt@jivesoftware.com’> <status>Giving a talk...</status> </presence> Send presence data or manage presence subscriptions Presence Example Description
  • 7.
    What is CloudComputing? Predominately based on web services (SOAP, REST, etc) Exploding in popularity – a critical trend of software architectures Started with simple services; now growing complex
  • 8.
    Cloud Service Example:Salesforce.com Uses SOAP (not XML-RPC or REST) Huge percentage of traffic is polling for updates Introduced “Outbound Messaging” to cope with polling – but there are firewall issues
  • 9.
    Cloud Architecture ProblemsPolling doesn’t scale and isn’t real-time Need two-way data exchange with easy firewall traversal Web services are feature poor (presence, binary data, etc) SOAP is what’s needed for complex services, but it’s overly complicated Thesis: web services are great for simple cloud services; XMPP is better for complex cloud services
  • 10.
    XMPP vs. SOAPUbiquity Innovative Features Ease Security Performance SOAP XMPP
  • 11.
  • 12.
    Open Source Tools:Server Openfire Most popular XMPP server, with over 1 million downloads In production with many cloud services Massively scalable Support for even strict firewall environments -- BOSH
  • 13.
    Open Source Tools:Client APIs Dozens of libraries in every major programming language – start at jabber.org Java: Smack library from igniterealtime.org Flex: XIFF library from igniterealtime.org Javascript: JSJac, dojox.xmpp
  • 14.
    Open Source Tools:Cloud Components Whack (Java) – simple and high level API Components use XEP-114 (easy)
  • 15.
    ExternalWeatherComponent.java public classExternalWeatherComponent { public static void main(String[] args) { ExternalComponentManager manager = new ExternalComponentManager(&quot;example.com&quot;, 5275); // Set the secret key for this component, for authentication manager.setSecretKey(&quot;weather&quot;, &quot;test&quot;); // Register this component to a subdomain of the server manager.addComponent(&quot;weather&quot;, new WeatherComponent()); //... Component will now start processing requests } }
  • 16.
    WeatherComponent.java public classWeatherComponent implements Component { public String getName() { return &quot;US Weather&quot;; } public void processPacket(Packet packet) { // Get the request packet here, parse it and return a reply } public void initialize(JID jid, ComponentManager componentManager) { } public void shutdown() { } }
  • 17.
  • 18.
    Example: Twitter FireHose Uses XMPP to provide access to all status updates, which would be impossible using web services polling Only provided to a small number of services (most recently Gnip)
  • 19.
    Openfire Cloud Services:Tips and Tricks External components allow for hot-deploy of new or updated services Run on separate hardware for scalability Openfire allows components to connect multiple times for scalability and redundancy Epoll on Linux provides great performance Ad-hoc command available to listen for all traffic Use XMPP federation for federating cloud services
  • 20.
    Questions? Blog EntryLink Email/IM: [email_address] www.igniterealtime.org