Saturday, June 25, 2011

What is RabbitMQ?

To understand what RabbitMQ is, first let's try to look into some basic concepts on which RabbitMQ is built on and for .

Assume you have an online store that integrates several systems, such as the Web-based front-end system, the credit card verification system, the retail system, and the shipping system i.e. an end to end business transaction system. The origin of the control flow is usually in the front end. For example, a customer placing an order has to send a request message to the credit card verification system. If the credit card information is validated, the online store sends request messages to the various retail systems, depending on the ordered items. An order for food translates into a purchase order message for the food retailer; an order for shoes translates into a purchase order message for the shoes retailer and so on.

The control flow could also originate from the retailers to the customer. For example, when a retailer updates a catalog, the retail system sends catalog update messages to the store so that the store can display the new items. Similarly, when a shipper changes pickup times, the shipping system sends update messages to all the retailers the system serves so that they can have the shipments ready in time.

OK fine, everything works fine right?, what exactly is the problem?

Have you wondered how the applications are integrated in the example above without enforcing a common interface and also allow each application to initiate interactions with several other applications? An interesting problem isn't it?, interesting and challenging because of some of the problems noted below.
  • How to route messages to one or more of many destinations?
  • How to transform messages to an alternative representation(format) ?
  • How to perform message aggregation, decomposing messages into multiple messages and sending them to their destination, then recomposing the responses into one message to return to the user
  • How to interact with an external repository to augment a message or store it?
  • How to invoke Web services to retrieve data?
  • How to Respond to events or errors?
  • How to provide content and topic-based message routing using the publish/subscribe model?
  • How to take care of applications in an integration solution that could have conflicting quality of service (QoS) requirements?

Message broker provides a medium for resolution of these issues.

What is AMQP?

AMQP is a standard wire-level protocol and semantic framework for high performance enterprise messaging. From the AMQP website: AMQP is an Open Standard for Messaging Middleware. By complying to the AMQP standard, middleware products written for different platforms and in different languages can send messages to one another. AMQP addresses the problem of transporting value-bearing messages across and between organizations in a timely manner.If you are interested in why AMQP check this.

What is the Open Telecom Platform (OTP)?

The Open Telecom Platform (OTP) is a battle-tested library of management, monitoring, and support code for constructing extremely high-performance, reliable, scalable, available distributed network applications. It is written in Erlang.

OK, lets connect the strings and see what and why RabbitMQ
RabbitMQ is an open source message broker software, using the standard AMQP protocol. The RabbitMQ server is written in Erlang and is built on the OTP framework for clustering and failover. The source code is released under the Mozilla Public License.

RabbitMQ offers a reliable, highly available, scalable and portable messaging system with predictable and consistent throughput and latency.

RabbitMQ is 100% open source and 100% based on open standard protocols freeing users from dependency on proprietary vendor-supplied libraries.

RabbitMQ is designed with interoperability capability with other messaging systems: it uses the leading AMQP protocol, the open standard for business messaging, and, through adapters, supports SMTP, STOMP and HTTP for lightweight web messaging.

RabbitMQ is supported by a thriving community of active contributors. A full range of commercial support services are available through the SpringSource division of VMware. Do check here for more details. Also here is the FAQ for RabbitMQ.

Saturday, June 18, 2011

What is Vmware vFabric5?

VMware recently announced vFabric 5, an integrated application platform for virtual and cloud environments. Let's try to understand this in simple terms and also look into the innovation and value add by this product.

What will
VFabric 5 provide?

Combining the Spring development framework for Java and the latest generation of vFabric application services, vFabric 5 will provide the core application platform for building, deploying and running modern applications.

But what is so special, can't I just use Spring framework directly?

vFabric 5 introduces a flexible packaging and licensing model that will allow enterprises to purchase application infrastructure software based on virtual machines, rather than physical hardware CPUs, and to pay only for the licenses in use. In a move to eliminate excess software purchases in anticipation of peak loads, the new model only charges enterprises for the licenses in use.

The model in vFabric 5 more closely aligns to cloud computing models that directly link the cost of software with use, consumption and value delivered to the organization.

Over 3 million developers use the Spring framework to build enterprise Java applications. With vFabric 5, users can gain insight into the performance of their Spring applications with the new Spring Insight Operations.

From business perspective what is the problem that VFabric 5 will solve?

What we can see is Cloud computing is reshaping not just how IT resources are consumed by the business, but how those resources are purchased, licensed and delivered. While application infrastructure technologies have advanced to meet the needs of today's enterprise, to date the business models have remained rigid and out of date.So VFabric 5 seems to be an effort in resolving this issue.

Tell me more how Vmware is implementing the product?

VMware's new model is a new approach in licensing middleware, and it highlights the first time that middleware software is marketed, sold and to some degree engineered on a VM-first basis.

As virtualization technology has matured, one can see most software vendors have shied away from recommending a virtual machine as the preferred way to run software for fear of degraded performance or support complications.

With VMware pushing its own new application platform stack through the SpringSource division and the set of associated acquisitions over the last couple of years, it was perhaps only a matter of time before we started seeing optimizations for virtualized deployment and then a strategy built around a VM-first approach.

Engineered specifically to leverage the server architecture of VMware vSphere, vFabric 5 features the new Elastic Memory for Java capability. Elastic memory allows applications to safely grow and shrink the memory heap as needed to survive load peaks and memory leaks. The feature works to optimize memory management across Java applications via memory ballooning. The envisioned result is greater application server density for Java workloads on vFabric.