Does SOA + Agile Programming = Crappy Business Agility?

Service oriented architectures (SOA) and agile programming techniques are about changing complex business applications at faster rates.  However, true business agility is not about doing more application changes faster.  True business agility is about doing more application changes faster without sacrificing the application’s performance or quality of service.

From my perspective, achieving that second part of business agility means preventing application performance problems.  As IT Operations groups streamlined their application problem resolution processes, they are recognizing that they must also tackle problem prevention earlier in the application lifecycle.  In other words, the number of application performance problems depends on: 1) how well the application is engineered for the production environment; 2)  how well application updates are managed; 3) how well defect and problem knowledge are shared across organizations. Those issues are driving the growing interest development and operations collaboration (Can DevOps overcome us vs them). Let us look at each to understand why.

1) How well the application is engineered for the production environment.  IT staff must map the application service model, designed by software architects and developers, to the resource environments available from physical, virtual, or cloud infrastructure. This mapping activity has become an engineering effort as the complexity of the applications has grown. Organizations can have as much as 50% their deployments rolled back because of miscues during the engineering effort.  Rollbacks can be caused by configuration had problems such as incorrect IP addresses.  That type of problem occurs when developers with no operations experience are managing this application engineering effort. Rollbacks can also be caused when the placement of the distributed components caused unexpected performance problems.  That type of problem occurs when operations folks with little insight into the application design are managing the application engineering effort.  Skills from both development and operations must be applied during the engineering effort to prevent these problems.

2) How well application updates are managed.  Back when tiered web application deployments were new, I did research showed that when enterprises went from client/server to tiered web application architectures, application updates jumped from bi-annual to monthly events.   Now I’m beginning to track that the combination of SOA and agile programming means weekly (sometimes daily) application updates. It seems obvious to me that weekly application updates done with release management tools designed for bi-annual updates will result in poorly performing applications.  The quality of application performance is even worse when those release management tools used by infrastructure administrators with hardware and OS configurations expertise but little insight into application design and engineering.  If the goal is business agility without sacrificing application performance then application development and operations teams need new tools to manage how updates get done.

3) How well defect and problem knowledge flow across IT organizations.  Defect knowledge from development teams is extremely useful because it allows operations teams to create infrastructure workarounds (such as throwing more hardware at the problem or staging server restarts).  These workarounds protect application performance while buying the development team time to resolve the problem.  Problem knowledge from operations teams is useful because it allows agile developers to improve their application design for better performance as they work on the next round of application features. Therefore, it seems obvious to me that the more difficult communications between development and operations is the more application performance problems there will be.  The chasm between enterprise development and operations groups has to be bridged with collaboration for application performance to improve.  Effective collaboration is about enabling the different groups to share the right information with the right people at the right time.

So from my perspective, the next generation of application management solutions must focus on these issues in order to prevent problems from occurring.  Fostering application collaboration between development and operations should be a cornerstone capability of those solutions if they are to deliver true business agility.


This entry was posted in DevOps, Enterprise IT and tagged , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

2 Comments

  1. Posted August 5, 2010 at 3:23 am | Permalink

    Francis over at BSM Review wonders whether SOA + Agile Programming = Crappy Business Agility?. I don’t think it does. You do have some valid points here, though.

    Francis from Best Blu Ray
    (no IT stuff there, useful if you’re also a HDTV junkey as I am :)

  2. Posted August 5, 2010 at 11:24 am | Permalink

    Hi Francis,
    I want the answer to be no!
    That’s why I spend so much time talking about collaboration between development and operations.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>