It’s no surprise to learn that demand for cloud computing applications for the enterprise is soaring. What’s not as well known how to decide which application development approach is best for your organization.
- Increasing demand for highly scalable, highly available applications to span many data centers;
- Growing need for speed, to ensure that application developers have immediate access to hundreds of services without the need to develop or integrate third-party components;
- Growing interest in agility – the ability to use and pay only for what your organization needs rather than investing years of development and many millions of dollars to build an infrastructure around each functional aspect.
As more large enterprises embrace all that the cloud has to offer, software providers now have options on how to meet that demand, and, as with most options, all come with pros and cons.
- Cloud-native. In the cloud-native approach, applications are developed to leverage the advanced features of the cloud and operate only in the cloud, with no portion of the system running on-premises. Cloud-native applications are best suited for a service-based architecture that makes the best use of cloud features such as security and scale, such as load balancers, auto-scaling, container management, and content delivery networks.
- Cloud-enabled. Think of cloud-enabled app development as a ‘lift and shift’ approach in which an application that runs on a traditional (on-premises) enterprise system is reconfigured to run in a cloud-based environment. This approach does not take advantage of advanced cloud features and typically does not scale as well as cloud-native applications.
- Cloud-based. Cloud-based applications typically refer to any application that is hosted in the cloud. Think of it as a hybrid of cloud-native and cloud-enabled. The best candidates are those that need to remain on-premises to meet compliance or security requirements, such as an enterprise system that makes use of some cloud services but does not require a complete redesign of the system.
Consider the following when deciding the development approach that is best for your organization.
Ask yourself which services are used most in your current system architecture and which will be used in the future. Cloud services to be adopted should be prioritized by impact and value – some are easy to adopt, such as a database service, while others require more significant design/redesign. A cost-benefit analysis will help determine the value and the order in which services can be adopted.
There is no question that it is much easier to build a scalable system that takes full advantage of advanced cloud features when a cloud-native approach is adopted from the start. Traditional methods of scaling can work in the cloud, but it’s unlikely that they take advantage of the advanced auto-scaling features that span multiple data centers.
Cloud-specific vs. Cloud-agnostic
Many organizations are adopting a cloud-specific approach, yet one significant risk of this approach is becoming ‘locked in’ given what’s involved in moving to another cloud service. Creating a cloud-agnostic application requires a level of abstraction within the application to support different cloud providers. There are technologies out there to help with this, but in order to be sure there is true cloud independence, it requires working with multiple cloud providers, adding more time, work, and ultimately, investment.
We are still in the early days of enterprise application development for the cloud. As with all new software evolutions, this evolution requires a strategic approach, incremental advances, and a step out of the comfort zone.
Contact ETQ today to learn more about our cloud-native approach to automated quality management and how it could be the right approach for your organization.