Archive for January, 2010

Application Layering to Improve Business Flexibility

Technical architects have long understood the benefits of architectural laying within an application to reduce coupling, increase modularity and maintainability, etc.  Typically, that layering looks something like:

However, as IT strategists we must also recognize the benefits of layering when it comes to looking across applications.  After all, most organizations (including Storeroom Solutions) rely upon a large number of applications to perform its responsibilities.  Most of these applications were assembled over the years based upon the requirements and business strategy at that time.  Rarely do enterprises have the opportunity to build everything at once (oh my, how I miss the dot-com days when it seemed everything was green field).  The same way layering within an application can improve modularity and maintainability, layering of applications can increase business flexibility without spiraling increases in complexity and cost.

Say, for example, a service provider offers an application that it has developed over the years to perform procurement and inventory management functions for clients.  It has proven to be a real competitive advantage, especially for those seeking a turn-key solution.  The application has also proven to be relatively low maintenance and trouble free.  It looks like this:

Alas,  times change and the number of new clients seeking a turn-key solution starts to dwindle.  Fortunately, the company has developed some real expertise in its procurement capabilities that are attractive to an entirely new segment of the market.  This segment already owns an inventory management application but wishes to tap into the advanced procurement features offered in this application.  The company is faced with a challenge.  Because application layering wasn’t considered in the original design, separating the functionality is a problem.  In order to overcome these challenges, the company must aggressively re-factor its procurement/purchasing functions to allow inputs from a source other than its embedded inventory application.  In fact, it may be easier to re-write the procurement application, leveraging the existing business rules. The new application topology may look something like this:

What is this advantage of this approach? In this case, this application layering approach allows for new business opportunities that would have otherwise been difficult to serve.  Furthermore, by employing SOA concepts and maintaining a disciplined API in its procurement application, the company can keep maintenance manageable.  After all, its internal inventory application could use the same API as the external inventory application to communicate!

Downsides? It is is easy to gloss over the downsides but they are rarely greater than the benefits of moving to this layered application approach.  One practical downside is the complexity that could be introduced to some users due to the new architecture.  For example, if users were accustomed to a single application with an identical look and feel they may be exposed to a little more variation due to the new modular approach.  However, even this can be managed through Single Sign On technology and common libraries and standards between the teams responsible for maintain their respective applications.

While this approach may seem to be a “no-brainer”, I continue to encounter architectures where little, if any, emphasis is placed on “application layering”.  Hopefully, more architects and CIO/CTO’s will start to place greater value on the benefits of this approach.

No Comments

Contact Synchronization Solution?

So I stumbled into Soocial while I was doing a search related to synchronizing contacts across multiple applications.  Soocial appears to be a simple alternative to something like Plaxo, which is trying to expand into the whole social networking craze. I don’t need or want another social networking application.  I use LinkedIn for my professional networking and will most likely add a Facebook account sometime this year for more social networking (is there a difference anymore?).  I just want to synchronize my contacts and calendars across multiple applications/services as simply and unobtrusively as possible.

Here is what I am trying to do.  I am sure I am not the only one out there trying to do the same thing.  In our organization we use Exchange.  This is the keeper of my office calendar which syncs perfectly with my iPhone via ActiveSync.  My wife and I also use our My Dog Boris Google Apps account for our family calendaring and personal email.  She also uses Outlook/Exchange at her office.  We both use the Google Calendar Sync plug in for Outlook to synchronize our office calendars with dedicated calendars set up in Google Apps.  On Google Apps, we can view each others office calendar (read only) as well as make entries to a 3rd calendar that we’ve set up for our Family events.  All that is working perfectly with few glitches.  Google Calendar Sync works in the background and rarely causes any problems (thanks Google).

Of course, most of you know that I am a Mac-guy and I do as much as I can (including all my development work) on the Macbook that usually sits next to my office PC.  When Snow Leopard came out last year, Active Sync was included in the operating system.  It allowed me to synchronize my mail, contacts, and calendars with Exchange.  Of course, Mac OS X has had support for syncing contacts and calendars with Google for some time.  I thought my prayers had been answered.  Well, hold your horses.  You see, while there is support for multiple calendars in iCal and multiple account in Address Book, they remain completely isolated from each other.   You cannot sync your Exchange Contact file with your “On My Mac” address book account that syncs with Gmail.  Hmmm.

The reason this isn’t an issue for calendaring is because of the Google Calendar Sync plug in for Outlook.  When this runs in the background in Windows, it is actually mapping from one domain (Exchange) to another (Gmail).  The Google Sync tool doesn’t (yet) support contact syncing.  There are other plug ins available that have support for syncing contacts between Outlook and Gmail but I have found them to be more trouble than they are worth.  I have tried both OggSync and gSyncit but I ended up scrapping them as they just seemed buggy to me.  Plus, they weren’t free (not a good combination, IMHO).

Enter Soocial.  So while it is a little more intrusive than I would like (a third party having access to my contacts plus another point of failure), it seemed really simple and wasn’t trying to get me to join another social networking cult.  After setting up the free account (is there any other type on Soocial?), I added connectors to my Gmail account and downloaded the plug-in for Outlook.  Note there are a bunch of warnings about this being in beta but I went for it anyway.  I will confirm that there are some issues that I hope will be worked out (read on).  I also didn’t need to add a connector to my Macbook Address Book since I was already successfully syncing with Gmail as above.  Gmail would already act as that conduit for me.  After a little bit of trouble with the Outlook plug-in I was able to get everything working… well almost.

After an initial sync with Outlook I was getting duplicates in my Outlook contacts and on my iPhone.  However, my contacts on the Soocial website appeared to be very clean (no dupes).  So what I decided to do was make a backup .vcf file from the tools available on the Soocial site (just to be safe).  Then I deleted all my Outlook contacts (whereby removing them from Exchange and my iPhone).  I also deleted all my Gmail contacts (after making another backup from the Gmail site).  Next I initiated a manual sync with Gmail and after that appeared to successfully re-populate my Google contacts from my Soocial “master file”, I initiated a sync from the Soocial plug-in inside Outlook.  After a lengthy process (mine took almost 30 minutes), my contacts re-appeared in Outlook with no duplicates!  Now when I make a change to my contacts in either (1) the Soocial website, (2) Gmail, (3) Outlook, (4) iPhone, or (5) the Address Book on my Mac THEY WILL ALL BE SYNCHRONIZED.  Of course, there is some latency depending on the client you are using to update.  Exchange only gets notification of contact updates from Gmail or Soocial if Outlook is running and the plug in is syncing every so often (and visa versa).  I think I can live with that.

All is good now in contact synchronization land (at least until Soocial crashes or runs out of money).  Now if I can only get visibility to my Family and wife’s calendar (through Google Apps) in Outlook and on my iPhone.  I recall having that visibility when I was using gSyncit (it supports multiple calendar syncing between Google and Outlook).  However, I just couldn’t live with the hassle and bugs in the application.  Plus, I like the comfort of knowing that Google wrote the application that is trying to sync my calendars in Google.

No Comments