[This article was written by Ritesh Patel.]
Cloud computing is forcing application developers to think differently about application architecture. Just as client side developers faced a huge paradigm shift from desktop to mobile application development, server side developers are experiencing a similar shift as they develop applications for the cloud. Deploying an application that is not architected for cloud (i.e. cloud native) cannot harness any benefits of the underlying cloud infrastructure and will result in increased operational costs in the long run. For developers building new cloud applications it is absolutely critical to get the architecture right the first time and avoid costly redesigns.
The new app tier
As I look at cloud leaders like Netflix, LinkedIn and Twitter, it is clear that a new architecture for the application tier has emerged. The new app tier consists of a collection of fine grained services that are stateless and can be scaled up or down independently. Rapid scalability is not the only benefit though. A welcome but often overlooked side benefit of this architecture is the rapid agility it provides to the enterprise by enabling small teams to independently develop and deliver these services. This model not only enables continuous integration but facilitates true continuous delivery of software making it easy to do things like canary launching, A/B testing and release automation. In fact, developers at Netflix have been extremely open about how they have achieved continuous delivery for their application and have seen significant benefits.
For most enterprises that have built large scale applications over the past year, transition to cloud is a huge challenge. As their customers get more comfortable with cloud and embrace cloud based software delivery i.e. SaaS, these enterprises are faced with two choices:
- Migrate their existing application to the cloud
- Re-architect their existing application for the cloud
Either approach has some benefits as well as challenges.
Migrating existing applications to the cloud addresses the customer need in the short term but results in significant operational challenges with multi tenancy being a key issue. On the operational side there are several challenges including ongoing support, monitoring, software upgrades and inefficient resource utilization. Automation can certainly help alleviate some of these challenges but it becomes very difficult to achieve operational efficiencies beyond a certain point as the customer base grows. With this approach larger investment in operations is required since as more resources are used, more operations personnel are needed for ongoing operations and management unless high level of automation is achieved.
On the other hand, companies that have chosen to re-architect their existing applications for the cloud face some upfront challenges including steeper learning curve, greater initial investment in software development as they build or select their underlying platform, and potential disruption to existing customers in the short term. Companies that commit to the cloud may also need to undergo cultural and organizational changes to truly become agile and adopt devops. But companies that successfully navigate through these challenges stand to reap significant benefits in the long run. They can now leverage the true benefits that cloud infrastructure and delivery models have to offer. This also allows them to achieve greater operational efficiencies due to better resource utilization and smaller investment in operations. These companies benefit from greater economies of scale as they grow and are well positioned to ride the experience curve gaining significant cost efficiencies and competitive advantage.
What’s your strategy?
For teams building new applications, the choice is clear – design and architect the application to leverage cloud computing. But for existing applications, the choice is not very straightforward and requires careful consideration of costs associated with operational and development paradigm mismatch. For core, long lived applications, a phased migration may be the only option, and sooner cloud computing is embraced, the greater the business efficiency gains. Some companies we have talked to have been successful in taking this phased approach for transforming their traditional applications and as a result minimized the risk while benefiting from the cloud. Perhaps this is a topic for a future post.
We are interested in hearing whats your cloud application strategy and any issues/challenges you currently face.