Friday, 20 February 2009

A new compatibility layer: Application Platforms

I get to chat about application compatibility issues and patch impact issues quite a bit. But one of the things that I have been asked to investigate more frequently these days is the application platform stack and the virtualization stack.


By application stack, I am referring to what others might have called Middleware in the past. The reason for the new name is that instead of simple application level integration or dependencies, the Application  Platform is the foundation and the "vehicle" for the delivering the application experience to user. 

To contrast middleware against the Application platform, I use the following examples;


  • Crystal Reports is middleware
  • Oracle and Sybase are middleware
  • Microsoft Internet Information Server (IIS) is an application platform
  • .NET is an application platform


You may disagree with this example but the basic premise is that the Application Platform can cause two classes of application compatibility issues;


  • Breaking dependency changes
  • Breaking "delivery" changes


Breaking Dependency changes include things like;


  • Deprecated API's (function calls are no longer supported)
  • Removed Functionality or Features (that pivot chart function is no longer accessible
  • Increased Security restrictions (you now need elevated permissions)


Whereas breaking Application Platform changes can result form all of the above issues and also include some of the following;


  • Breaking changes to delivery protocols (no more Citrix support for RSTP)
  • Application delivery security restrictions (your controls now need to be signed on IIS 7)


The difference may seem minor but this new view of things has opened up my eyes to new potential compatibility issues with;


  • Microsoft Internet Information Server (IIS)
  • Microsoft IE7/8 (on Windows 7)
  • Office 2007


And, hence the need to start to identify issues not just with Vista or Windows 7; but to view the complete picture of compatibility  that includes;


  • Base Platform compatibility
  • Application-level conflicts
  • User-end Security restrictions
  • Delivery-end Security restrictions (server and streaming limitations)
  • Middleware Dependencies
  • Application Platform issues
  • Virtualization limitations


And you thought getting applications to work was easy!


No comments: