Typical Patterns of Cloud-Ready Applications

by Jani on August 17, 2010

As a part of my job, I work with large enterprise customers trying to help them realize the potential of Cloud Computing. As much I believe in the benefits of Cloud, I also have a realistic discussion around the anti-patterns for Cloud and why certain applications may not be the great candidates to be moved to the Cloud. It makes it easy to have certain patterns in mind when discussing what kind of a line of business application can move to the Cloud for realizing the best return on investment.

In this article, I want to discuss the possible scenarios for getting the maximum value out of Cloud.

Periodic Processing

Periodic Processing – Every enterprise has at least one application that goes through the grind during a certain time of the month, quarter or year. A classic example of this pattern is employee performance review application. This app is not so much in use for most part of the year and becomes the most accessed and used application during the mid- year review or annual review. In the finance industry, Credit Card companies run their risk scoring during the month end. July is the busiest month for tax filing applications run by Chartered Accountants in India. The common pattern across all these applications is that they are inactive for most of the times but become the most resource demanding applications during a specific period. From the IT investment perspective, it doesn’t make sense to allocate resources for these applications that are inactive for most of the time. Instead of provisioning and de-provisioning the infrastructure, it is optimal to move such applications to the Cloud. If you have such an application, think how you can move it to the Cloud.

Start Small, Grow Fast

Start Small, Grow Fast – This is the proven mantra for many startups. Majority of the startups would be intimidated by the overwhelming cost of the infrastructure. Even within the enterprise, there is a certain class of applications that start small and after testing the waters, they either get killed or become mainstream. Classic examples of such applications are contests and new business processes. What starts as a pilot within a department may turn into a best practice that gets adopted by the entire organization. Since most of these applications are designed from the ground up, they can be provisioned on the Cloud from day one and based on the demand, it can be scaled further. If the pilot is not well received by the employees, the application can be de-provisioned with minimal cost.

Unpredictable Burst

Unpredictable Burst – This pattern is more commonly seen in consumer facing web applications. If a website’s link appears on Slashdot or New York Times, there is an instant deluge of traffic and unable meet this demand the website might just become unavailable. If the enterprise launches a new digital marketing campaign which becomes extremely popular and gets viral, there will be a sudden spike in the traffic. These digital marketing campaigns are the ideal candidates for the Cloud. The biggest advantage of moving to the Cloud is the auto-scale capability. By monitoring the patterns in the traffic and the utilization of the infrastructure, additional server resources can be dynamically added to the application. Once the traffic stabilizes and the environment is not so demanding, the extra servers that are added can be safely disposed. This ability makes Cloud Computing extremely lucrative.

Predictable Burst

Predictable Burst- Ecommerce sites experience the predictable burst all the times. When Apple opens up pre-ordering for their next gen phone, they get ready to handle the peak loads. Because of the predictability, it is fairly common for the business to have a ball-park budget figure of the infrastructure cost. In public sector, there are many events that experience predictable bursts. Electoral results, examination results and publishing of latest census reports will result in this pattern. Sports sites know this better during a popular event like the world cup. Within the enterprise, these patterns are visible during a virtual company meeting or introduction of a mandatory online training for all the employees. The difference between this pattern and the first pattern, Periodic Processing is that there may not be a periodic recurrence of this pattern. The utilization of the resources is influenced by external parameters but the IT decision makers are usually aware of this burst ahead of the actual deployment.

What is your experience of moving an application to the Cloud? If you think there are more patterns, please do share with me by dropping a comment.

[This article was originally published in the Cloud Computing Journal]

  • http://twitter.com/kkbava krishna kishore (KK)

    Agreed that these are the typical patterns! And that cloud gives super-elastic capacity on-demand.
    IMHO, cloud can be THE platform for almost any web application – savings on CapEx / OpEx, assurance that my app and the VM are securely running 24×7 – why not evangelize other scenarios as patterns too?
    While cloud is in its infancy, we need evangelists like you to mention as many scenarios as possible – so that each business can see how they benefit.
    May be, it is time for someone to write anti-patterns?

    regards,
    kk

    • http://www.janakiramm.net/ Jani

      Hi KK – I don’t think every web application should move to Cloud. After all,Cloud is expensive than classic web hosting. Moving a fairly static, content heavy web app to Cloud doesn’t offer good value for money. Instead only those apps that need the scale and the power should be moved.Will cover more scenarios in the future. I am working on the anti-patterns post as well.

      • http://twitter.com/kkbava krishna kishore (KK)

        Hi,
        “I don’t think every web application should move to Cloud” – a temporary truth? Didnt we hear similar sentiments in the late ’90s / earlier this decade about “not all enterprise applications should move to web”?
        We sure had two camps – enthusiastic developers who found new toolsets for web programming and wanted every application to be browser-based, and wise people who thought it wasnt a good idea! 14 years ago, we were ridiculed for planning to rearchitect a client-server ERP as a browser-based ERP. And I havent visited my bank in the last two years – hail browser! :)

        Enthusiasm fueled innovation and bandwidth became broader. Young developers won over wise old men! :) Many more applications are browser-based or even mobile! More users use more applications, cheaper and more frequently than ever before!

        Cloud-based infrastructure may not ‘remain’ expensive, or may not be for ‘limited patterns only’ for too long! (I’m personally hoping Azure rates would drop later this year!) And involved in developing a cloud-based web application that doesnt really meet the ‘best fit’ criteria. But, we chose cloud (and Azure, of course!)

        May be, public cloud(s) would replace all enterprise data centers some day soon? May be, CSPs and hosting companies become equally attractive? Or, will clouds drift away?

        While I bite my nails to see how wide and fast cloud cover spreads, let me also wait for your anti-patterns post! :)

        cheers,
        kk

        • http://www.janakiramm.net/ Jani

          Hi KK – Refreshingly different perspectives :) Web has two flavors -
          Internet and Intranet. Cloud is also available as Private and Public.
          Certain apps are best designed to run on Private while others on the Public
          Cloud. May be I should have qualified my statement with a ‘Public’ prefix.

          Moving a Line of Business application that talks to half-a-dozen internal
          Apps and ERP to the Public Cloud is not easy today. These applications may
          not tolerate latency and the data is too sensitive to be moved outside of
          the org boundary. As on date, with the given constraints of Cloud, this
          doesn’t look like an ideal candidate.

          This will change when Hybrid Cloud becomes more mature and seamless. Azure
          AppFabric and Amazon’s Virtual Private Cloud are good steps towards this.

          Public Cloud prices will certainly drop in the future as the customer demand
          grows and competition heats up.

          Thanks for sharing your views on this blog. Please keep them coming!

  • http://twitter.com/vivekjuneja vivekjuneja

    Very well compiled use cases.
    One more interesting use case is of Long running – Compute Hungry applications like Log file processing, Pattern processing, SPAM analysis, Protein Analysis etc. The vast amount of computing power at disposal for end customers via public clouds could be a solution for sustaining such a use case.
    Apart from that, the vast number of APIs to control and manage the lifecycle of virtual machines via many Private Cloud tools, opens up an interesting eco-system of automation. Many enterprises are experimenting with Automated Environment Management solutions that gives capability to delivery teams to provision new Development, Test, Integration and other environments in a short span. The use and throw feature of elastic infrastructure is a compelling boon.

    • http://www.janakiramm.net/ Jani

      Vivek, I believe most of the use cases that you mention also fall into one of the patterns that I mentioned. For example, log file processing typically happens every night during an off peak time.

      I am currently working on Windows Azure Service Management API and that is extremely powerful to control the environment on the fly.

  • Anonymous

    This one is the best article I’ve ever read on Cloud apps & its patterns. Very insightful & lucid. I keep waiting for your posts :)
    Especially liked the “Unpredictable Burst” & “Predictable Burst” – the way you’ve defined them. I remember one Indian media report : “300,000 hits/second make Election Commission website crash”. A few similar scenarios have been captured here:
    http://www.techno-pulse.com/2009/12/cloud-computing-service-basic.html

    • http://www.janakiramm.net/ Jani

      Thanks Basant! I am going to come up with more guidelines to identify and
      migrate applications to Cloud.