Sunday, September 11, 2011

Changing Landscape of Middleware

Lately I have been engaged with many clients that are maniacally focused on reduced costs by means of reduced footprint. This post, I attempt to discuss some of my thoughts and experiences towards this trend:

  1. Growth poses a problem: As business grows so does the resulting infrastructure and primarily the middleware which houses the business logic and in some cases this tier shares the presentation or the store front with business logic. So with growth in business either due to larger client base or new business model implies similar growth in middleware. This consistent growth poses a few challenges some obvious ones include costs – not only of software but also hosting infrastructure and hardware. Some non obvious challenges include manageability of platform i.e. general administration, handling performance and Service level agreement (SLA) and addressing scalability.

  1. Consolidation – an Answer? - Many clients have taken an approach of consolidation to address this issue. Now this consolidation can come at many levels including (but not limited to) data center consolidation, IT & middleware virtualization, automation – for installation and configuration. Many clients are even as bold in claiming this effort towards the goal of being ‘cloud’ ready. However, I think that virtualization can only offer so much, at some point to achieve better resource economies clients and leaders have to think about a better design, understanding of business and user behavior and promoting design that not only appeals to the end user but also nudges the user towards a certain desired behavior.

  1. Design: I have always advocated dedicating significant amount of time in design phase. While a design phase may not produce a sizable amount of tangible application artifacts, but it does enable a better design pattern for future improvements and upgrades. (More on this in later).

  1. Changing Landscape of Middleware: What I am seeing and we have enabling technologies seeping into enterprise infrastructure to make this possible is the Movement of content in the outer tiers. So one way to address the scalability of middleware processing is to not let the request traverse to middleware tiers until absolutely necessary. This can be done in many ways, and one can be creative on how they accomplish this – this is where the application design comes in. Here is an example
    1. Many clients push as much content to ultra edge or the public accessible content domain. For example Akamai content network. An example of this type of content is generally static content. This enables faster access to site and catalog content, and has a high user satisfaction rate. This also enables the ‘window shoppers’ from consuming your precious middleware cycles.
    2. Caching at edge tier – now not all content can be cached or served from ultra edge, and some content such as domain specific content, some page fragments and jsps etc can be cached at the edge tier (which is usually behind the firewall), this does a great deal in saving processing costs of middleware presentation tier.
    3. Caching at middleware tier: Patterns like side cache and in-line database cache are further instrumental in reducing resource usage such as a db lookup, db connection and in-memory access enables faster access to various type of content.

  1. The Idea: By caching strategically at many tiers, we are trying to offload processing to various tiers and ONLY dedicating processing in middleware when it is most important or the ‘window shoppers’ now mean business, we will dedicate our cycles to those business meaning clients and service them better with an enhanced experience.

Challenge: I discussed the Design phase, the challenge is to ensure the application design that is modular enough to enable these various tiers of caching and still present a unified front, where the end user is oblivious of the inner working of the application that has its content derived from various layers. An intentional design will enable the content and business logic to be isolated, thus enabling caching at various tiers.

Enabling technologies:

  1. Ultra Edge caching – Akamai content network
  2. Edge caching – edge caching appliances ( such as IBM XI50, XC10), in memory data grid at the edge (IMDG – such as WebSphere eXtreme Scale (IBM) , Coherence (Oracle)
  3. Side Cache and Inline database buffers - such as WebSphere eXtreme Scale (IBM) , Coherence (Oracle)
  4. Smart Routing – IBM XI50, IBM AO, F5, Cisco etc.

Thoughts?

:)

Nitin

No comments:

Post a Comment