2. Please Note:
• IBM’s statements regarding its plans, directions, and intent are subject to change or
withdrawal without notice at IBM’s sole discretion.
• Information regarding potential future products is intended to outline our general
product direction and it should not be relied on in making a purchasing decision.
• The information mentioned regarding potential future products is not a commitment,
promise, or legal obligation to deliver any material, code or functionality. Information
about potential future products may not be incorporated into any contract.
• The development, release, and timing of any future features or functionality described
for our products remains at our sole discretion.
Performance is based on measurements and projections using standard IBM
benchmarks in a controlled environment. The actual throughput or performance that
any user will experience will vary depending upon many factors, including
considerations such as the amount of multiprogramming in the user’s job stream, the
I/O configuration, the storage configuration, and the workload processed. Therefore,
no assurance can be given that an individual user will achieve results similar to those
stated here.
1
3. Agenda
• High level overview & Positioning.
• MQ Light software
• First Five Minute Experience
• Developer Centric Tooling
• Programming Language Support
• Demo
2
4. IBM Messaging
Deliver Messaging
Backbone for Enterprise
Focus on traditional MQ
values, rock-solid
enterprise-class service,
ease-of-operation, breadth
of platform coverage,
availability, z/OS
exploitation
Enable developers to
build more scalable,
responsive applications
Focus on app use cases,
breadth of languages,
ease-of-deployment, micro
services, integration with
developer frameworks
5. MQ Light : Software and Cloud
• Messaging that application developers
will love to use, helping them make
responsive applications that scale easily
• 3 ways to get it:
• MQ Light software download
• Bluemix service
• Statement of Direction for support in MQ
Version 8.
• Open APIs crafted to feel natural in a
growing range of popular languages
• Tooling that makes modular app
development easy
4
6. The journey that got us here
5
Andy
Developer
Iain
Infrastructure
Guy
I want to execute code
without taxing my
Web app processes
My job is run a
communications service
for my customers’ apps
Some
Thing
My Apps Workers
Messaging
Backbone
My Customers’ Apps
7. The journey that got us here…
6
Ruby
Node.js
Python
C
C++
Java
C#
Perl
Go
Clojure
Lua
Erlang Scala
PHP
8. Use cases
7
Connecting external
systems
Event driven
Worker offload
• Posting video to multiple social
sites after transcoding
• Respond to external events
• Updating external booking app
• Posting updates to twitter
• Image processing
• Text analytics
9. Trend in Cloud Application Architecture
Moving towards…
Delivering global scale applications with
unprecedented agility by de-composing
apps into a microservices architecture
Challenges developing microservices :
Agility come from “2 pizza” teams operating completely
independently, owning the whole technology stack,
deploying on their own schedules, writing services
that will scale when demand dictates
8
Large monolithic
Applications
Moving away from…
Large applications with single develop,
test, deploy cycles using single
technology stacks
11. Agenda
• High level overview & Positioning.
• MQ Light software
• First Five Minute Experience
• Developer Centric Tooling
• Programming Language Support
• Demo
10
12. First Five minute experience
• Download and get coding within 5 minutes
• Linux-x86-64, Windows7 64 bit, Mac OSX
• Unzip install
• Unlimited time developer license (unsupported).
• No administration; just code and go
• API client libraries installed using language package manager
• Tutorials and examples in their languages, relevant to actual use
11
14. 13
Docker
• A Docker image for MQ Light is now available on Docker
Hub.
• https://registry.hub.docker.com/u/ibmimages/mqlight/
• MQ Light runs inside a container, isolated from the rest of
your system:
• Process isolation – all the processes associated
with MQ Light are run in their own process space,
and can’t see any other processes running on your
server
• Resource isolation – you can limit the amount of
memory and CPU you allocate to a container
• Dependency isolation - all software which MQ
Light depends on is included in the MQ Light image,
except the Linux kernel itself.
Source: If applicable, describe source origin
IBM Presentation Template Full Version
Docker also helps with fast, reliable deployments in cloud environments
One command to download and run MQ Light:
– docker run –e LICENSE=accept –P ibmimages/mqlight
15. Tooling to assist development
• Used to answer questions like :
• Where did this message come from?
• Where did that message go?
• What messages has my app consumed?
14
16. Programming Language Support.
A. Simple Messaging Model
B. Idiomatic clients in fully supported languages
• IBM Design Thinking applied here.
C.Compatibility with open source AMQP 1.0 clients for other
languages.
• Apache Qpid Proton
15
17. Programming Language Support.
A. Simple Messaging Model
B. Idiomatic clients in fully supported languages
• IBM Design Thinking applied here.
C.Compatibility with open source AMQP 1.0 clients for other
languages.
• Apache Qpid Proton
16
18. 17
MQ Light Messaging Model – Send Messages
Applications send messages to a topic.
A topic is an address in the topic space
either flat or arranged hierarchically.
1. Send (‘/test/a’, “Hello”);
2. Send (‘/test/a’, “World!”);
Topic Address Space
Sender application
19. 18
MQ Light Messaging Model – Simple Receive
•Applications receive messages by creating a destination with a pattern
which matches the topics they are interested in.
•Pattern matching scheme based on WMQ.
1. Send (‘/test/a’, “Hello”);
2. Send (‘/test/a’, “World!”);
1. Hello
2. World!
Topic Address Space
Sender application
DESTINATION
Pattern=/test/a
20. 19
MQ Light Messaging Model – Pub/Sub
•Multiple destinations can be created which match the same topic
•Pub/Sub style.
DESTINATION
1. Send (‘/test/a’, “Hello”);
2. Send (‘/test/a’, “World!”);
1. Hello
2. World!
1. Hello
2. World!
Topic Address Space
Sender application
DESTINATION
Pattern=/test/a
Pattern=/test/#
Client 1
Client 2
21. 20
MQ Light Messaging Model – Persistent destinations
•Destinations persist for a defined “time to live” after receiver detaches.
1. Send (‘/test/a’, “Hello”);
2. Send (‘/test/a’, “World!”);
Topic Address Space
Sender application
Hello
World!
DESTINATION
Pattern=/test/a
Disconnected client
22. 21
MQ Light Messaging Model – Sharing
•Clients attaching to the same topic pattern and share name attach to the
same shared destination.
DESTINATION1. Send (‘/test/a’, “Hello”);
2. Send (‘/test/a’, “World!”);
1. Hello
2. World!
1. Hello
2. World!
SHARING
Topic Address Space
Sender application
DESTINATION
Pattern=/test/#
Pattern=/test/#
Share=myshare
Client 1
Client 2
Client 3
23. 22
MQ Light Messaging Model – Client takeover
1. Send (‘/test/a’, “Hello”);
Hello
Topic Address Space
Sender application
DESTINATION
Pattern=/test/#
Client 1
World!
Client 1
2. Send (‘/test/a’, “World!”);
•Applications connect to MQ Light service specify (optional) client ID.
•Re-using the same client ID pre-empts the original connection.
•Ideal for worker takeover in the cloud.
24. MQ Light Messaging Model
• Messages
• Payload is either Text or Binary.
• Content-type is used by clients to transfer JSON
• Per message time to live.
• Message delivery model
• At most once delivery (QoS 0)
• At least once delivery (QoS 1)
• Acknowledge & Reject messages
• Control over the number of unacknowledged messages
delivered. (link credit)
23
25. Programming Language Support.
A. Simple Messaging Model
B. Idiomatic clients in fully supported languages
• IBM Design Thinking applied here.
C.Compatibility with open source AMQP 1.0 clients for other
languages.
• Apache Qpid Proton
24
26. Programming languages
Language Availability Notes
Node.js Supported IBM Client.
Ruby IBM Client in Beta
Java (Non Blocking) IBM Client in Beta
Python IBM Client in Beta
PHP Qpid Proton
Scala Can use Java non
Blocking client.
Forum users report this
working.
C/C++ Qpid Proton
Perl Qpid Proton
25
27. MQ Light Node.JS API
• Installable from NPM
• Fully non blocking – Node.JS style
• Fluent programming style - wrappable into promises.
• Focussed on code simplicity.
• Client seamlessly retries across cloud endpoints
26
# Receive:
var mqlight = require('mqlight');
var recvClient = mqlight.createClient({service: 'amqp://localhost'});
recvClient.on('started', function() {
recvClient.subscribe('news/technology');
recvClient.on('message', function(data, delivery) {
console.log(data);
});
});
# Send:
var mqlight = require('mqlight');
var sendClient = mqlight.createClient({service: 'amqp://localhost'});
sendClient.on('started', function() {
sendClient.send('news/technology', 'Hello World!');
});
30. MQ Light Non Blocking Java API (beta)
• Installable using Maven
• Code is opensource on github.
• Non blocking
• Client seemlessly retries across cloud endpoints
• Backlog
• TLS
29
void send() {
NonBlockingClient.create("amqp://localhost", new NonBlockingClientAdapter<Void>() {
public void onStarted(NonBlockingClient client, Void context) {
client.send("news/technology", "Hello World!", null);
}
}, null);
}
void receive() {
NonBlockingClient.create("amqp://localhost", new NonBlockingClientAdapter<Void>() {
public void onStarted(NonBlockingClient client, Void context) {
client.subscribe("news/technology", new DestinationAdapter<Void>() {
public void onMessage(NonBlockingClient client, Void context, Delivery delivery) {
if (delivery.getType() == Delivery.Type.STRING)
System.out.println(((StringDelivery)delivery).getData());
}
}, null, null);
}
}, null);
}
31. Programming Language Support.
A. Simple Messaging Model
B. Idiomatic clients in fully supported languages
• IBM Design Thinking applied here.
C.Compatibility with open source AMQP 1.0 clients for other
languages.
• Apache Qpid Proton
30
32. Agenda
• High level overview & Positioning.
• MQ Light software
• First Five Minute Experience
• Developer Centric Tooling
• Programming Language Support
• Demo
31
33. Summary
• MQ Light : https://developer.ibm.com/messaging/mq-light/
• MQ Light for Bluemix : www.bluemix.net
• Messaging designed for developers to create responsive and
scalable applications
• Simplified messaging API
• Easy to acquire and incorporate into applications
• Development focused tooling
• Range of application deployment options
• MQ Light
• IBM MQ [Statement of Direction]
• MQ Light cloud service in BlueMix
32
35. For Additional Information
• IBM Training
• http://www.ibm.com/training
• IBM WebSphere
• http://www.ibm.com/software/websphere/
• http://www.ibm.com/software/products/ibm-mq
• IBM developerWorks
• http://www.ibm.com/developerworks/websphere
• https://www.ibm.com/developerworks/community/blogs/messaging
• WebSphere forums and community
• http://www.ibm.com/developerworks/websphere/community/
36. Thank You
Your Feedback is
Important!
Access the InterConnect 2015
Conference CONNECT Attendee
Portal to complete your session
surveys from your smartphone,
laptop or conference kiosk.
38. Notices and Disclaimers (con’t)
Information concerning non-IBM products was obtained from the suppliers of those products, their published
announcements or other publicly available sources. IBM has not tested those products in connection with this
publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM
products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.
IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to
interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED,
INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any
IBM patents, copyrights, trademarks or other intellectual property right.
• IBM, the IBM logo, ibm.com, Bluemix, Blueworks Live, CICS, Clearcase, DOORS®, Enterprise Document
Management System™, Global Business Services ®, Global Technology Services ®, Information on Demand,
ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™,
PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®,
pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, SoDA, SPSS, StoredIQ, Tivoli®, Trusteer®,
urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of
International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and
service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on
the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.
Editor's Notes
Want to compare the motivations and priorities of Andy & Iain
Andy : apps that can scale, apps that will remain responsive, ensuring heavy lifting doesn’t get in the way of the user experience
Iain : ensuring systems remain running no matter what, ensure changes are planned to minimise unexpected impact on critical business systems, Ensuring things are connected in a managed way
How things have evolved technologically
Used to be a handful of languages,
Explosion of languages that people want to use (each has their specific benefits)
Even larger explosion of frameworks within these languages.
There is a danger here of massive oversimplification here.
However, if we look at the architecture of typical data centre based application today we see that there is a frunt-end UI often these days HTML and client side Javascript which scales because it runs within the client. Then there is the backend process that supplies it with data and integrated with the enterprise followed by a data tier.
These applications are typically well componentized using the capabilities provided by the language and its runtime. Often they are developed by large teams and deployed into production by separate operations teams.
If we look now at the architecture of the major web properties, facebook, netflix, linkedin etc. we’ll see that these are often times composed of smaller services. Each owned by a small team of developers who are responsible for development AND ops. These services are developed, tested, deployed and tested independently by these empowered teams. They tend to use different technology both language and persistence.
Why am I telling you this? Well because the links between these micro-services are typically REST or lightweight messaging.
Foundational technologies should be easy to get going
- first use
- every day use
Tackled a number of to make this happen
-
- Clients should be where a developer expects them (npm)
- A developer should be able to understand MQ Light just by reading our examples.