IT is no longer just a business enabler – it has become a competitive advantage and differentiator for most successful companies. How do companies respond to the rapid rise of ubiquitous computing and the demand for always on, anywhere services? It can seem overwhelming when customers have running shoes, toasters and homes generating data and consuming services, expect to shop online from their smartphones while streaming video on their tablets, all the while accessing enterprise data and services on their laptops in the nearest Starbucks. So companies are turning to the cloud.
However, in his excellent white paper, Time for the Cloud, Joe Weinman asserts that making applications and services cloud-centric is no guarantee of success. Companies have to strategically make use of time compression in order to compete successfully. Weinman speaks of time compression in two ways – reducing time to market and reducing time to scale.
Reducing Time to Market
Very few people remember Betamax. Most people owned a VHS. VHS was first to market, and ended up winning the tape recorder war. Being faster to market is a strategic competitive advantage.
How does the cloud aid in compressing time to market?
Firstly, companies don’t have to reinvent the wheel. Most applications have a common set of components or services, and only a small portion of differentiated value-add. Leveraging Platform-as-a-Service in the cloud, where trusted and proven components are used rather than coded, accelerates the front end of the product lifecycle – reducing cost and risk and increasing quality. Companies can focus energy on the value-add rather than on the plumbing.
Secondly, cloud enables hypothesis-driven development. By utilizing PaaS ideas can be turned into minimally viable products a lot quicker, enabling faster prototyping. However, hypothesis-driven development requires rich telemetry for testing the hypothesis. The cloud enables integrated DevOps tooling that can provide this telemetry.
Thirdly, cloud transforms the traditional time, cost and quality trade-off through pay-per-use models. Weinman uses the example of a test lab. Traditionally, companies could reduce test time by additional capital expenditure to purchase more equipment for the lab. In the cloud though, simulations and computations that employ one virtual machine for 1000 hours could cost the same as 1000 virtual machines employed for 1 hour, dramatically reducing the required time.
While faster cycle time has incredible benefits, it also has several challenges, especially in the area of DevOps. Teams must adopt more agile methodologies over more traditional, waterfall approaches. Developers and Operations need to work closer together in order to ensure quality releases frequently, requiring adoption of continuous deployment techniques and automation. Richer telemetry while monitoring applications is required and faster response times to issues are necessary. Fortunately, the cloud aids in addressing all of these challenges.
Time to Scale
Being first to market can be a double-edged sword – if a product or service does well and the customer base expands beyond infrastructure capacity, competitors that can scale can begin to outpace the first-movers. Companies need to be able to scale quickly.
However, services can also have cycles where demand increases only at specific peak periods. If company’s resource for peak periods, costs will be high in low-demand periods. Conversely, not resourcing sufficiently during peak periods can lead to service interruptions and poor quality.
How does the cloud aid in compressing time to scale?
The cloud allows companies to scale out quickly, but also to scale elastically. Minimally viable products can be launched on a small-scale, low-cost basis. As demand increases, scale up is simple to achieve. Services that have unpredictable demand can scale elastically, again providing quality of service while at the same time reducing cost.
The cloud removes the challenge of resource expansion when scaling out. However, being able to scale out requires that services and applications are designed for such scale-out. For example, web sites requiring session state cannot rely on in-memory caches, since scale-out means that requests may not always be serviced on the same machine. Scale out also presents challenges to deployment and configuration management which need to be considered.
Moving applications to the cloud is just the first step in gaining a competitive edge in today’s market. Companies must strategically utilize the cloud’s ability to compress both time to market and time to scale, being aware of the challenges that such time compression raises.
For a deeper discussion on how to move applications to the cloud, read our article PaaS Architecture: Designing Apps for the Cloud.