7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
1/20
Open Source XMPP for
Cloud ServicesMatt Tucker, CTO Jive Software
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
2/20
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
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
3/20
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
4/20
In This Talk
Brief XMPP and cloud computing overview
Problems in cloud architectures; how XMPP can
help
Open Source tools
Tips and tricks
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
5/20
XMPP (Jabber) Overview
The open protocol for instant messaging (its 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
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
6/20
XMPP Building Blocks
Description Example
Presence Send presence dataor manage presence
subscriptions
Giving a talk...
Message Send data betweenusers
Not
Raining!
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
7/20
What is Cloud Computing?
Predominately based on web services (SOAP,
REST, etc)
Exploding in popularitya critical trend of software
architectures
Started with simple services; now growing complex
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
8/20
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
pollingbut there are firewall issues
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
9/20
Cloud Architecture Problems
Polling doesnt scale and isnt real-time
Need two-way data exchange with easy firewall traversal
Web services are feature poor (presence, binary data,
etc)
SOAP is whats needed for complex services, but its
overly complicated
Thesis: web services are great for simple cloud services; XMPP
is better for complex cloud services
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
10/20
XMPP vs. SOAP
XMPP SOAP
Performance
Security
Ease
Innovative Features
Ubiquity
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
11/20
XMPP Cloud Architecture
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
12/20
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
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
13/20
Open Source Tools: Client APIs
Dozens of libraries in every major programming
languagestart at jabber.org
Java: Smack library from igniterealtime.org
Flex: XIFF library from igniterealtime.org
Javascript: JSJac, dojox.xmpp
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
14/20
Open Source Tools: Cloud Components
Whack (Java)simple and high level API
Components use XEP-114 (easy)
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
15/20
ExternalWeatherComponent.java
public class ExternalWeatherComponent {
public static void main(String[] args) {
ExternalComponentManager manager =
new ExternalComponentManager("example.com", 5275);
// Set the secret key for this component, for authenticationmanager.setSecretKey("weather", "test");
// Register this component to a subdomain of the server
manager.addComponent("weather", new WeatherComponent());
//... Component will now start processing requests}
}
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
16/20
WeatherComponent.java
public class WeatherComponent implements Component {
public String getName() {
return "US Weather";
}
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() {
}
}
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
17/20
Example: Clearspace Doc Sharing
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
18/20
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 smallnumber of services (most
recently Gnip)
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
19/20
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 multipletimes 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
7/27/2019 XMPP_Open Source Components for Cloud Services Presentation.ppt
20/20
Questions?
Blog Entry Link
Email/IM: [email protected]
www.igniterealtime.org
http://www.jivesoftware.com/community/blogs/jivetalks/2008/01/24/xmpp-aka-jabber-is-the-future-for-cloud-servicesmailto:[email protected]://www.igniterealtime.org/http://www.igniterealtime.org/mailto:[email protected]://www.jivesoftware.com/community/blogs/jivetalks/2008/01/24/xmpp-aka-jabber-is-the-future-for-cloud-services