Tuesday, 27 April 2010

Principles of intra-application integration

There are important principles for integrating the components used to build an application. They are different from the principles used to connect one application to another.

For much of my career, I have specialised in systems integration. By this, I mean exclusively the integration between applications. I have a simple set of principles:
  • Achieve connection while at the same time maintaining the separation between applications.
  • Decouple applications, so that each application knows nothing of the internal data, processing, technology or schedules of any other.
  • Have well-defined system boundaries.
  • Send data in lumps that are meaningful in business terms.
  • Establish tool-independent standards for the technology and format of data sent between applications.
  • Consider each application as an equal peer, rather than arranging applications in layers.

I have generally ignored the integration of components within an application. My advice has always been to use any method that seems convenient to the developers.

There is some rationale for this. Overall architectural flexibility comes from standardised, loosely coupled applications that can be maintained independently of each other. You can achieve this without mandating anything about the integration inside individual applications.

As a result, my thoughts on intra-application integration have been limited to selecting an effective design, technology or framework. But perhaps it is possible to distil some principles that could be applied in any situation irrespective of the particular design, technology and framework that are being used.

This is not straightforward. Intra-application integration is very different from inter-application integration. The different components have to talk to each other in their own special ways, they are not peers and may be arranged in layers, they are closely coupled rather than decoupled, they need to be intimately aware of the data, processing, technology and timing of each other, and they interact in ways that are not meaningful in business terms.

I can think of a few principles for intra-application integration:
  • Split the application into distinct high-level parts, each with a defined responsibility, and with defined relationships to other parts. For example, in a web application you might have database, business logic, user interface, and batch processing.
  • Ensure each part has a single, defined, standard, tool-independent method of invocation.
  • Allow for independent modification and expansion of the parts. For example, it should be possible to add new database tables, new business logic, or new user interface components without requiring changes to the other layers.

These may seem banal, but there are two important points.

Firstly, principles are important. Often we build applications which break these rules, for example mixing business logic and user interface code, or choosing tools for one part that constrain other parts. Having some principles gives us a good way of evaluating designs, technologies and frameworks for their likely impact on the long-term health of the application.

Secondly, recognising that there is a difference between inter- and intra-application integration helps both activities. It clarifies which approaches are, and are not, appropriate for each situation. For example, messaging middleware is a great way to connect applications, but overkill inside a single application; SQL is great inside applications, but inappropriate between applications.

In the past, my advice and my designs have suffered from a lack of consideration of intra-application integration. It is time I adopted some principles.

© Copyright 2010 Minimal IT Ltd. See the Minimal IT website for the original newsletter and copyright information.

Tuesday, 20 April 2010

Ash cloud computing

The disruption caused by the Iceland volcano is a reminder of both the opportunities and responsibilities of IT.

As natural disasters go, the Iceland volcano may seem pretty benign. Here in the UK, we are having a succession of beautiful spring days. The trees are coming into blossom and the birds are singing.

However, the impact of stopping all air travel is vast and serious. Something like 150,000 people are abroad and unable to get back to the UK. Imports and exports are suffering, with a particular impact on fresh produce. Those who fly regularly as part of their job have had to stay at home, or take tortuous land journeys. Many businesses will be impacted because key staff will be unavailable, and planned trips can not take place.

Which brings us to IT. IT is a sort of magic that allows us to overcome barriers, including barriers of physical location. At times like this, IT may not be able to bring loved ones home or deliver fruit and vegetables, but it can alleviate many of the disruptions caused by travel chaos.

The most obvious application of IT is to help people collaborate when they can meet in person, in ways that are richer than just a phone call. This could be video conferencing using Skype, or more advanced tools such as WebEx, YuuGuu and others.

Technologies that help people work from anywhere are vital. Virtual private networks (VPNs) give remote access to corporate networks. Internet-delivered software, including Software-as-a-Service (SaaS), makes remote access to applications much easier, and is particularly valuable for corporate email. In times like this, any application that aids working remotely is a bonus.

Knowing all the good things IT could do is easy. What is much harder is to put the plans in place in advance so that when the next disruption occurs, we are ready.

The obvious answer is to develop effective business continuity plans. However, we need to be more proactive than that. Many of the technologies that would help in this case could not simply be switched on in a disaster because people would not be sufficiently familiar with them to work effectively. They are the sort of thing that the business has to be used to using every day, so that impacts are minimised and disasters averted.

To make this happen, we have to steer our businesses to adopting these sorts of technologies now. The Icelandic volcano is a useful illustration for a business case, but thankfully very rare. Other disruptions, such as weather, industrial action and terrorist alert are much more common.

We also have to put our own IT house in order. We need to think about different ways in which IT services could be disrupted, especially all-important internet connectivity. We need to have effective disaster recovery plans for IT. We need to make sure we can deliver IT services even if IT staff can not get to the office.

Hopefully the disruption from the volcano will end soon. But it is a useful reminder for us all to adopt ways of using IT today that will stop tomorrow's disruptions turning into disasters.

© Copyright 2010 Minimal IT Ltd. See the Minimal IT website for the original newsletter and copyright information.

Tuesday, 13 April 2010

Grasping the future

Future technology makes it more important to manage well the IT that you already have.

In these newsletters, I often preach the value of structure and discipline in IT, and the importance of managing well the IT that you already have. I am critical of what I see as a blinkered dash for growth, which overvalues project delivery and undervalues ongoing management.

It would be easy to misinterpret this as an IT Luddite position, not really understanding the opportunities of new technology.

But actually, the opposite is true. I am enthralled by the relentless pace of technological change.

A lot of technological change is subtle, gradually spreading deeper into our lives. I have been on holiday over the last week, and I have noticed three gradual technological improvements:

  • WiFi. I have been going on holiday to the same apartments for about 20 years. A few years ago, they installed a WiFi hotspot at the club house. Recently it has been extended to cover the entire estate. It is only a small extension of the technology, but a huge extension to the value. This constant extension of virtually free and unlimited connectivity is seeping deeper into our lives.

  • Memory. On long car journeys with the family, we often listen to recorded books. These used to come on tape, then CD. But now they are beginning to come pre-loaded on solid state audio devices. Digital technology is becoming cheap enough for single use hardware.

  • Display technology. Going to the cinema made me realise how many films are now in 3D. The adverts before these films are for 3D televisions and channels that will soon be launched.

These are examples of consumer-oriented technology. But consumer adoption often drives business adoption.

As one example scenario, I have been musing whether the 3D spaces from environments such as Second Life, possibly with 3D display technology, might be exploited much more widely. We may think of these technologies as limited to gaming and social interaction, but technologies such as Open Cobalt and Open Wonderland are being developed to allow this technology to be used for much broader applications. For any intensive IT use, whether it is online meetings or stock trading, there are huge benefits in getting away from the "rectangles on a screen" paradigm to something more immersive and intuitive.

When we see new technologies, or adoption of technologies deepening, there is a temptation to rush off and build new applications. But the biggest opportunity is to combine new technology with existing applications. There is no shortage of new technology; what stops us grasping the biggest opportunities is the difficulty of taking forward the data and functionality we already have.

To grasp these opportunities, we need to pay more attention to structure and discipline in IT. We need IT capabilities that are tightly contained and loosely coupled, with standard interfaces, that we can use as building blocks for tomorrow's applications. We need to keep systems well maintained so that we can more easily combine them with new technologies. We need to be better at looking after what we already have so that we can take full advantage of what is to come.

© Copyright 2010 Minimal IT Ltd. See the Minimal IT website for the original newsletter and copyright information.

Tuesday, 6 April 2010

IT mismanagement principles

There are general principles for the mismanagement of IT that apply at the level of the individual PC up to the entire enterprise.

I have had my laptop for a few years now, and it is grinding to a halt. It takes almost 10 minutes to finish booting. The modem, webcam, bluetooth and other peripherals no longer work properly. Many applications fail.

My laptop is typical. All PCs– except really well locked down ones – get clogged up after a while. I need to reformat the hard disk, reinstall the software and start again.

Are there any general principles that we can learn from the tendency of unmanaged PCs to get so clogged up? I can think of a few:

  • Uncontrolled sharing. My PC has layers of drivers and application software, interfering with each other and competing for the same components.
  • Presumption of specialness. A lot of software presumes that just because I want to use the software for one thing (such as connecting my phone), I want to use it for everything that it is capable of (such as synchronising music). Lots of software presumes it is so special that I should run it at startup.
  • Out of date. There is lots of software that I have installed and have not bothered to upgrade or remove.
  • Impulsive installation. I have compilers for languages I never use, and half a dozen webcam applications. I carelessly installed both VirtualBox and VMWare virtualization systems, both of which have to interact with the machine at a fairly low level. It is surprising anything works.
  • Uncontrolled customisation. I have evolved a "clever" way of setting environment variables and running software from a portable drive. It works, but it adds complexity because I have not done it in a standard way.

My management of my own PC is ill-disciplined and short term. I deserve the problems I get.

These principles are broader than uncontrolled PCs. They apply throughout IT, and make a big contribution to the mess of legacy systems that many of us have to fight.

  • Uncontrolled sharing. Legacy systems are like spaghetti, with ill-defined data flows and data accesses all over the place. We can not understand it, and certainly not sort it out.
  • Presumption of specialness. Most IT environments are full of half-implemented strategic initiatives that did not follow the rules, but were never completed so now they are just exceptions.
  • Out of date. Many systems are not kept up-to-date with technical and business changes because there is no business case. Yet, eventually, these systems become a drag on the business, and we forced into expensive replacements.
  • Impulsive installation. IT is clogged up with lots of short term solutions for "quick win" projects, the long term impact of which was never thought through.
  • Uncontrolled customisation. We customise software carelessly and are then unable to manage it through new versions.

The parallels are very strong. There are general principles of IT mismanagement which we can see in the tendency of our own PCs to turn to unmanageable mush and in the difficulties of the long-term management of enterprise systems. We need to unlearn these principles.

© Copyright 2010 Minimal IT Ltd. See the Minimal IT website for the original newsletter and copyright information.