Thursday, April 19, 2007

Application Architecture is not just a fancy document

I’ve been a part of or lead application architecture for various clients, from small Internet Companies to Large Financial Institutions. Most companies try to come up with a detailed overall architecture and stick with it for the long run. Unfortunately, things for the most part don’t work this way. The application architecture should be approached the same way agile application development is. Work in iterations, create solid foundation blocks, develop a poc (proof-of-concept) for each block and then integrate it into overall application architecture. It’s pretty impressive when application architects create sophisticated Visio diagrams, which usually don’t even fit on a single page. They specify multitude of components, connectors, databases, messages, etc. But original architecture diagrams rarely get updated when certain architectural features change. The best approach from my experience is to outline a very high level architecture by breaking it into smaller blocks. Each architectural block will then have a more detailed design. In other words, don’t try creating an overall detailed picture – leave some wiggle room.

A sample overall architecture may specify that there is a service bus and a bunch of services are using the bus. Then, create a separate architecture diagram and document for the service bus and each service. Make sure that each architectural block has a working poc. If you decide to use Message Driven Beans to receive some events, and the requirement is to be able to process 2 million events in one hour, then you better make sure that the proposed architecture can handle it. Don’t just select a technology because it logically makes sense – prove it. If you are trying to expose business logic as services, don’t just assume that EJB is the best approach because Sun, BEA and IBM said so at some point. Be pragmatic and prove that each architectural decision is going to deliver the best results. Compare various implementations of JMS. Don’t just use the one provided by your JEE Application Server. And don’t forget the Open Source products. They often prove to be better products then the commercial heavyweights.

Application architecture is not just a brainstorming session with several gurus locked in the same room for 3 days and coming up with a fancy document. Application Architecture is a process of not just discussing but testing and comparing various solutions. Application Architect must therefore be very hands-on. Someone who hasn’t developed anything for the past 2 years can’t call herself an Application Architect, because Information Technology changes so fast that something that wasn’t considered a year ago might be the best fit for your needs today.

There is a ton of architecture best practices and I am not opposing them. They should be analyzed but not followed blindly, because each business has its own unique needs and goals and therefore each solution must be custom tailored and aligned with the business.

-Igor

Labels:

Thursday, April 12, 2007

Java is still the best platform for business integration

I’ve seen companies struggle with multitude of databases and applications not talking to each other, having redundant data and not necessarily in the same format. Trying to update customer information might require five separate manual entries in different applications. Sounds familiar? Well, most companies accumulate technology over the years without realizing that it’s going to get them sooner or later. Those who realize maybe don’t have the expertise or the budget to do the things right.

Business and IT executives start acting when it’s almost too late. They have a legacy RPG AS/400 application handling their warehousing and distribution, a Microsoft VB/SQL Server application for managing customer relationships, and a LAMP (Linux, Apache, MySql, PHP) based e-commerce website… You get the point.

Some ask the question: What is the best technology platform for integrating various disconnected systems into a coherent and manageable solution? I think most of us will agree that Java is the way to go. Java will let us read from any database, run on any operating system, support both back office and web solutions. Java has the best messaging middleware and web services support from open source community and commercial vendors. We are not locked into any application server with Java. There are more open source frameworks and business products written in Java then in any other programming language. It’s been proven time and again that Java has better performance then most other popular platforms. And if that is not enough, Java is the most commonly used programming language and the most requested expertise on job sites.

For those doubting business and IT executives out there, don’t hesitate. Java has proven itself. This is not 1998, it’s 2007.

-Igor

Blogging - here I come!

Hi, my name is Igor Royzis.

So I decided to start a blog. I've been in the IT field for the past 17 years and I'd like to start sharing some of my experiences and thoughts related to the software development, e-commerce, web services, management and other topics within the realm of IT and business.

I'll try to write a relevant article every month. This will hopefully be another helpful blog for IT professionals, business and IT executives and anyone else who has time to read and learn from other people's experiences.

Looking forward to having fun here.

-Igor