Tuesday, July 22, 2008

Business vs IT - Enterprise Architecture

I had the pleasure of attending a breakfast seminar this morning, organised by glue:. The subject of the seminar was "Managing IT Enabled Change". The theme was the idea of a common language to allow enterprise architects to talk to the business. The session was kicked off by glue:'s CEO Gareth Lloyd, who gave a very clear presentation of the context and in particular explained the need for a common language. After that Ceri Williams, also of glue:, provided some explanation of the meaning of a common language and how it fits in with EA, business strategy, business transformation and programme management. This was underpinned by Jes McPhee from Troux Technologies, who demonstrated how their tool can be used to support change analysis in support of business objectives. Finally Daren Ward, business architecture principal at Marks and Spencer, provided some real-world feedback on the use and applicability of business architecture.

While it was all very interesting and I enjoyed the presentations and the interchange of ideas, I had, and still have, a fundamental problem with the thesis presented. For me, enterprise architecture is precisely about ensuring that IT supports the overall business in achieving its goals. The glue: presentations, deliberately or unwittingly, talked about IT and 'the business' as though they were separate functions; in today's competitive environment it is not possible to get competitive advantage on any significant scale without having IT at the core of the business - 'the business' and IT should be indivisible.

That said, EA has largely been driven by the IT side of the world so there is still work to do in evangelizing the EA cause in organisations. And better tool support that talks about business problems and business issues, rather than servers and networks, is only to be welcomed.

Sunday, June 15, 2008

The Resurrection of the Power Mac

For the last four years I have used a Power Mac G5 with dual 2.5GHz processors as my main machine at home. During this time the machine has been pretty much bullet-proof; it stays turned on most of the time (though in sleep mode when I am at work); the only time it has been switched off is when I have moved house! The one alteration I have made to it was to add an additional hard disk last year.

Last Tuesday without warning the machine stopped - it was not even a graceful shutdown. When I tried to restart it, though I could hear the fans spinning no video signal was generated. I tried the various boot options e.g. single user mode, boot from optical drive, none of which worked. Stumped I went to bed to think about it overnight. In the morning when I tried again, it booted first time. I put it into sleep mode and went to work. When I returned in the evening I started using and after 20 minutes or so it put itself into sleep mode. It repeated this several times until it just stopped again.

I decided to go back to basics so I disconnected all devices except the screen, keyboard and mouse, in case there was a hardware conflict causing the problem. That didn't help. At this point I was starting to get desperate, and concluded that there was probably a hardware fault on the machine. I therefore contacted a local company who are authorised for Apple service, and they suggested I bring the machine in and they could run some diagnostics for me. I couldn't do it until the weekend so I had a couple of days to try to resolve the issue myself.

As a vain attempt to do something useful I opened up the case and was greeted by several thick dust bunnies. There was nothing visibly wrong internally, but embarrassed at the thought of the service engineer seeing the amount of dust in the case, I put a brush nozzle on the end of our vacuum cleaner and sucked out all of the dust. When I looked more carefully I could see that the air ducts onto the CPU cooler (it is liquid cooled) were totally clogged up, so I used the vacuum cleaner to remove most of this dust. Feeling satisfied that I would not deliver a dust-filled machine to be repaired I put the case back together, and tried one last time to start it up.

Hey presto, it worked! That was 4 days ago, and I have not had a problem with it since then. The conclusion I have reached is that the CPUs were getting too hot which was causing the machine to shut down and then to refuse to start up until they had cooled down. I am guessing this is a feature built in to the chipset to prevent permanent damage. I have therefore installed Temperature Monitor so that I can avoid the problem in the future.

It gives a whole new meaning to the phrase "clean down the machine"!

Saturday, May 24, 2008

Architects According to The Architecture Journal

I have been subscribing to Microsoft's Architecture Journal for over a year now. It drops into my letter box every two months and gives me something interesting to read on my train journey in to work. Normally (as one would expect) it is quite Microsoft-centric so it needs to be understood in that context, but nevertheless it can be interesting to understand how Microsoft technologies can be applied to problems, to understand best practices and to understand the emerging solution patterns around these technologies.

The latest issue (Journal 15) has the theme of "The Role of an Architect". Under this umbrella there are several articles that explore the nature of the architect role, and highlight some of the challenges involved in being an architect.

The first article is "We Don't Need No Architects" by Joseph Hofstader. It is an interesting article identifying the role to be played by architects in projects, and distinguishing the architect role from the role of developers. It makes a number of critical points about the skills that an architect needs such as the ability to think abstractly and conceptually, and the ability to understand and leverage patterns. However in my opinion it only answers a small part of the question; everything that the article states is quite true, but it only represents a small part of the architect's role.

The article does not distinguish between solution architect and enterprise architect, but implicitly it refers to solution architects. Within the solution architect role critical to success are the soft skills. For example:
  • People - in anything other than the smallest organisation, a solution architect needs to work in a cooperative, consensual manner, ensuring buy-in for the solution architecture from all key stakeholders. Without this buy-in there can be no confidence that the solution as implemented will match the solution architecture.
  • Politics - related to the previous point, there is an element of organisational politics that solution architects need to be aware of; I'm not suggesting that solution architects need to be Machiavellian and manipulative, but all organisations have politics and if a solution architecture is to be accepted by key stakeholders these political pressures and drivers need to be understood.
  • Commercial - in principle commercial drivers should be captured as solution requirements that drive the solution architecture. The reality in my experience is that commercial drivers are never documented in that sense (and an organisation may not want to document such drivers) so a solution architect needs to be aware of these drivers when making architectural decisions. For example a difficult commercial relationship with a particular supplier might mean that an abstraction layer should be placed around that supplier's API to insulate the solution from a future change of supplier
So how much of the role is the IT architect role that Joe describes, and how much is soft skills? The answer depends very much on the size of the organisation and the size of the project; my own experience is that 80-90% is soft skills, but a very experienced enterprise architect I spoke to recently estimated 95%.

Tuesday, May 13, 2008

The Software Value Chain

I have read some interesting articles recently: "How Google Works" gives a fascinating overview of Google's pioneering approach to providing a high-performance service using commodity hardware. Similarly Amazon's Dynamo storage system provides an innovative approach to the problem of storing resilient persistent data without using an ACID database. What is striking in both cases is how industry norms are not just being ignored, but are being turned on their head. For many organisations the cost and risk of developing and maintaining a proprietary persistence layer would outweigh the performance benefits gained.

At first I thought that this was an issue of businesses whose core competence is not software choosing to effectively outsource these elements of their value chain e.g. by using a J2EE app server and an Oracle database. However thinking more about this there are lots of business who have a highly sophisticated approach to software who do not dare go against these industry norms. Why then do Google and Amazon innovate where others fear to tread? I see two reasons for this:
  • By developing a custom infrastructure they maximise their competitive advantage since the infrastructure is tuned to precisely what the business needs, no more and no less. Amazon's Dynamo has been designed to exactly fit in with their business processes (e.g. a shopping cart) giving a performant and lean solution.
  • The custom infrastructure is an enabler for business services through which they gain competitive advantage - how long would it take to serve up a standard Google query if the data was stored in an Oracle database?
Is this the way forward then? The reality is that most IT engineers are not as smart as those that designed Dynamo or worked out how to provide Google with a resilient infrastructure using commodity hardware. Standard platforms such as .Net and J2EE enable average engineers to deliver reliable solutions. Don't rush out to design a custom persistence layer just yet.

Thursday, May 08, 2008

Airport Security and Scalability

Travelling through Heathrow terminal 4 in January I was interested to see that the shoe checking had been decoupled from the rest of the xray security i.e. there was an initial xray check followed in a separate area by a security examination of shoes.

This was an excellent example of a tiered architecture since presumably someone had done the analysis to show that bottlenecks in throughput were created by the shoe check. By separating out the shoe check it could be independently scaled (i.e. additional resources could be applied to the check) allowing overall greater throughput.

I was therefore bemused travelling through Heathrow's shiny new terminal 5 last week to see that the design had reverted to the monolithic single layer with integrated xray and shoe check. Yet another move forward for T5?

Wednesday, May 07, 2008

Build vs Buy Part 2

Following on from my previous post about build vs buy, I have thought about this a bit more. I have developed my own application to manage my bank account and credit cards over many years. It sucks data from my online banking service and online credit card statements, allowing me to reconcile transactions and plan our finances based on the bills we are expecting in the future. Recently I thought I would try a commercial package for this purpose, in order to save myself the effort of having to maintain my own code. However the package I bought required fundamental changes to my workflow which I wasn't prepared to make, so in the best traditions of IT projects I have abandoned the package and reverted to my home brewed solution!

Monday, May 05, 2008

Eee PC

I was lucky enough to be given an Eec PC last Christmas. It has taken me a while to get used to it, since its form factor is such that it isn't practical as a daily work tool. However it is so compact and lightweight that it is perfect for when I travel and I don't want to take a full size laptop with me. For example I take it to the tutorials for the MBA programme I am attending and use it to make notes which I can then quickly upload to my Powermac when I get home. Similarly I am typing this entry on said Eee PC from a hotel room in California where I am currently on holiday.

The Eee PC runs Xandros Linux, which is easy to use (that said I still prefer Ubuntu on my home server), though the shipped distro needs a bit of tweaking to get it to make the most of the hardware (I had to recompile the kernel with some additional settings). One drawback is that there are quite a few apps and config applets that aren't small form factor aware - this means that only part of the window is displayed and there are no scroll bars, so there is a certain amount of guessing about what some of the fields may say!

Apparently it is also possible to install Windows XP on the Eee PC, but the question is: why would you want to? :-)