andy.edmonds.be

© some posts ©

App meme

Geee arrr, seems I got tagged by Costas to bolster up the mac-heads contributions on a random application meme

So just like Costas, I’ve been running Mac OS X full time. In fact now that I think about it, I’ve been using it for almost 5 years! Blummin heck, how time rolls by! One of the reasons for going with Mac back then was the opportunity to work with a well designed user interface, whilst allowing me access to pretty much all the goodness of a *NIX. So onward to the questions:

  1. Which desktop manager do you use more often? Straight out of the box, Gnome has always offered a friendlier and more welcoming UI to those trying to escape from a MS-style desktop. Hence, any time I need a desktop-type framework it’s Gnome for me. However, most the time when working with linux I’m living in the terminal.
  2. Which desktop application you would not like to see implemented again on linux? And why? Ummm, Office :-D Well I can’t really claim that seeing as OpenOffice has been doing a terrific job is providing great interoperability. Unfortunately it’s emulated and hence brought all of Office’s bloat with it.
  3. Which desktop application you definitely would like to see implemented on linux? Describe it briefly or point out to a similar application. Don’t think I really have a need for anything implemented on linux. Most applications I use now either run on linux or are web-based.
  4. Write the name of the last project (not the very best, the last!) that made you wish to thank their developers so you can thank them now! Ah… we use libvirt alot in work at the moment. We’re using it as an abstraction layer to virtualisation in SLA@SOI. So big up them!

Messaging and Infrastructure Management

I’m reposting this article I authored (edited by John) for the SLA@SOI website.

SLA@SOI is dedicated towards building an SLA-aware service oriented infrastructure. A key component of this will be the layer managing the infrastructure, and we are envisioning that this must be able to handle internet-scale deployments. Management of an environment with hundreds of thousands of nodes places significant demands on communication channels, and SLA@SOI is currently investigating how protocols like XMPP[1] might help address these needs.

There are many discussions debating the pros and cons of XMPP [2][3][4] as a messaging protocol in this type of environment, some arguing how AMQP [5] might be a better choice [6][7][8], and others comparing HTTP versus XMPP [9][10]. Indeed, Roy Fieldings makes the point in one of his blog posts [11] that HTTP can be equally suitable to XMPP so long as an application’s constraints and requirements are fully considered. This might hint that higher-level consideration be given when designing the architecture of a system and perhaps not to be caught up in the all important detail.

In SLA@SOI we are targeting the management of hundreds of thousands of systems in a heterogeneous and dynamic environment. The infrastructure may include both physical and virtual nodes. The size of such a system means that interaction via traditional RPC (REST, SOAP calls) or stateful or persistent connections would soon run into scalability problems. Heterogeneous aspects and requirements of such systems calls for open and simple protocols that support a high degree of interoperability. To support highly dynamic infrastructures, publish/subscribe mechanisms offer substantial advantages [12], assuming of course that all systems can talk the same messaging semantics and protocol.

For efficiency, SLA@SOI also perceives the need to communicate with multiple nodes at the same time, in a multicast fashion. Although multicast semantics can be mapped to HTTP, this is more of a workaround than a feature. For our needs, based on our constraints, we have concluded an event based architecture to be the most appropriate, and the semantics contained within the PubSub meta-pattern (referred to as so due to the large number of sub-patterns [13] within) to be very attractive and suitable.

Rather than lock ourselves into a particular implementation of PubSub (XMPP, AMQP, JMS etc), we have decided to abstract the PubSub layer through the use of interfaces and implement a pluggable PubSub framework which would support the integration of any PubSub implementation. By settling on a “standard” interface to PubSub the remaining concern to us is of the data schema that represents messages passing through the chosen PubSub implementation.

There is the danger of designing “a schema to rule all schemas” – one which once agreed upon would then become instantly brittle and inflexible. We are considering to take the learnings of REST (with its limited finite set of verbs operating on resources) and layer that on top of an extensible PubSub event based system. This event based system would allow the use of arbitrary PubSub protocols and corresponding implementations. Regarding the selection of protocol for SLA@SOI, we are investigating the XEP-060 PubSub [17] extension to XMPP, and so far our results are largely encouraging:

  • XMPP’s open protocol and XEP mechanism ensure flexibility.
  • PubSub is powerful and allows the transport of opaque payloads (there are pros and cons to this, however it is very flexible).
  • XMPP has widespread support from other messaging solutions – we can bridge from XMPP to JMS or indeed many ESBs.
  • Multi User Chatroom (MUC) and direct one-to-one messaging are ideal for a means of debugging, offering “command line” interaction with XMPP nodes.
  • The instant messaging (IM) model is very understandable – people can relate to it. They just need to think beyond the notion that XMPP is a chat protocol, and see it as general purpose messaging protocol that is easily and openly extensible.
  • XMPP seems to be nicely scalable (just choosing XMPP doesn’t imply instant scalability – an appropriate architecture is critical too).
  • S2S is very attractive from the point of view of enabling resource federation. This should be of particular interest to Reservoir [16], a fellow FP7 project.

We have also identified some challenges with XMPP…

  • We have not found any “all-in-one” distributed (as in P2P or super-peer type) implementation of XMPP, although the specification allows for such interactions (S2S) – possibly Vertebra[15]
  • XMPP PubSub XEP implementations have inconsistencies (core features and XEP coverage)[7][14] and client libraries appear to be thin on the ground (particularly in Java)
  • Routing, workflow management seems to be lacking in XMPP.

In SLA@SOI we will continue our investigations into messaging at the Infrastructure Management layer, focusing on extending PubSub with REST semantics via possibly the Adhoc-Command [17] and IO-Data XEPs [18], and will be happy to update you on our progress as the project progresses. If you have any thoughts or opinions on the matter please do let us know!

References:

The 3House

So go on, if any of you guys and gals are in Dublin come on along for a rollicking good night out! Sam, Tom and Pat have been deviously working hard on this one…

3House

3House

Characterising Infrastructure with Respect to Application Needs

From reading “Guerilla Capacity Planning” by Neil Gunther, it is proposed to segregate infrastructure requirements of an application based on certain criteria that the application needs. These applications needs can are covered by the term “workload” and are based around requirements of two parameters; coherency, α, and contention, β. These characteristics are mapped to his “universal scaling law” (a concave graph), which is effectively just Amdahl’s Law but with the consideration of α and β. The short message of all of it is that if you reduce and minimize coherency – hopefully making it zero – then you’re scaling bounds are those offered by Amdahl’s law and the concavity of the “universal scaling law” is removed, therefore increasing scaling improvements by a factor of number of processors added to the system.

Class A

Ideal Concurrency (α, β = 0)

Class B

Ideal Contention-only (α > 0, β = 0)

  • Shared-nothing platform
  • Google text search
  • Read-only queries
  • LexisNexis search
  • Message-based queuing
  • Message Passing Interface
  • Transaction Monitors
  • Polling Services
  • Peer-to-Peer

Class C

Ideal Coherency-only (α = 0, β > 0)

Class D*

Worse-case(α, β > 0)

  • Scientific HPC Computations
  • Online Analytic Processing (OLAP)
  • Data Mining
  • Decision Support Software (DSS)
  • Anything with shared writes
  • Hotel reservation systems
  • Online Transaction Processing (OLTP) e.g. banks
  • Java Database Connectivity

*There is an interesting article discussing issues in Class D applications

Flickr

This is a test post from flickr, a fancy photo sharing thing.