Application Must-haves for Hitting the Cloud Services Mother Load
There is a veritable cloud gold rush occurring today. CIOs are declaring “cloud-first strategies” while companies are pasting “cloud” onto any and every product they have. Their hope is to hit pay dirt amid uncharted and widespread IT transformation. As with most euphoric and rapid endeavors, reality is setting in for those who have made the journey to the cloud. Big payouts require work. For the cloud, a lot of that work happens at the application level.
Lifting & Shifting Is Not Enough
The first dose of cloud-rush reality for most businesses and IT leaders is this: you can’t forklift applications to the cloud, hit the nirvana button and finish with a victory lap. Lifting and shifting is not enough to realize the full value of cloud computing. Why not? Because most applications have been developed to run on a single server/VM. Even applications that are written to sit on multiple servers and sit behind load balancers often have idiosyncrasies that will not tolerate server additions and removals that occur with demand fluctuations. Migrating high-performance applications (powerful systems that require databases with extreme hardware configurations) is also challenging. In many cases, design flaws or incorrect technology choices make these applications difficult or impossible to port to the cloud without significant rewrites.
The Cloud-Native Path: What It Takes
In my experience, businesses that are able to extract the maximum value from the cloud are taking a different path. They are choosing the cloud-native path. That means, they are designing and developing applications with the characteristics needed to perform flawlessly and flexibly in the cloud environment. Some of these characteristics will be native to all or most of your applications and some may not. Use the list of “cloud native must haves” below to see what may or may not be missing from your applications today.
Cloud Native Must Haves
- Expand & Contract with Demand: The ability for an application and its infrastructure to expand and contract in response to demand is a foundational aspect of cloud-native applications. It enables the application to be as efficient as possible by only using the resources it needs at any point in time and allows cloud providers to optimize consumption across a large number of customers and drive costs down through economies of scale.
- Ephemeral: Ephemeral means that any component or service that the application uses can fail and the application will still continue to function. With redundant infrastructure, ephemeral applications are written to tolerate service interruptions and/or failures.
- Full Life Cycle Automation & Orchestration: The automation and orchestration of all provisioning, decommissioning, testing, deployment, monitoring, operational analysis and self-healing is critical for applications in cloud environments.
- Model Granular Computing & Cost Management: The dynamic expansion and contraction of cloud-native applications allows for the management of computing and storage costs at the granular level. In some cases, it can be as granular as tracking costs on a transaction basis.
- Ability to Consume Cloud Services & Publish as a Cloud Service: Cloud-native applications must be able to leverage and consume cloud services, such as databases, storage, messaging, monitoring, container services and identity management. Easy consumption of these services greatly speed development and also allow developers to leverage robust infrastructures on a pay-per-use basis.
- Security at All Levels of the Application Stack: Traditional application architectures have focused on perimeter security and not as much on security between applications or the different layers of an application (e.g. web, application, database, etc.). This is due to the fact that most organizations have considered their internal networks to be safe environments. In cloud-native applications, security exists as part of every application and infrastructure component and is implemented in a least privilege model. In some cloud-native models, virtual network overlays are used to isolate applications to reduce their attack surface and increase security.
- Loosely Coupled Application Interfaces: The ability to call and be called by other applications is a critical cloud-native application feature as it provides agility in development, testing and deployment. The loose coupling of applications means that a change in one application does not require a change and redeployment of all the applications that interfaces with it. The current best practice for loosely coupled application interfaces is to use RESTful APIs.
Cloud Native Nice to Haves
- Microservices: A microservices architecture decomposes an application into independent, discrete services that are loosely coupled. The benefits of a microservices application architecture are the same as loosely couple application interfaces. Each microservice can be developed, changed, tested and deployed independent of the other microservices in the application.
- Network Application Isolation: The need for security and recoverability has created a new generation of web application firewalls (WAF) and virtual networks that are focused on protecting applications rather than entire infrastructures (e.g. multiple applications). This has created a new focus on network isolation at the application level.
- Platform Agnostic: In order for an application to consume and be consumed by other applications, the technical platform that applications reside on should not matter. Additionally, applications should be able to be moved from one cloud provider to another. A good example of this is containerization, which abstracts the platform and allows applications to move seamlessly.
- Stateless: Although not always possible due to functionality requirements, applications should be designed so that no data is stored in the web or application servers that needs to live beyond an individual transaction. Any data that needs to be available after the life of a transaction should be saved to a database or file system that exists on redundant infrastructure.
- Continuous Delivery of Applications: The continuous delivery of applications implies that the entire development life cycle is automated so that any changes made by a developer go through automated testing and deployment to production. Without automation and orchestration, in addition to a microservices architecture, the risks of implementing continuous application delivery are high. But, if implemented correctly, it can result in a significant reduction in the time to ROI for both internal and external-facing applications.
Cloud-Native Equals Big Benefits
Tangibly demonstrated in early cloud adopters, the benefits of cloud-native applications extend from IT performance all the way to bottom-line business results. They include:
- Quicker Application Delivery
- Decreased Time to ROI
- Faster Reaction Time to Market Threats and Opportunities
- Cost to Service Delivery Alignment
- Near Infinite Scaling and Contraction
- Built-in Redundancy
- Increased Business Continuity
- Fully Optimized Consumption Model
With benefits like these, cloud-native applications are more than just the preferred gateway to the cloud. They offer more than a way to join in the gold-rush like dash to the cloud. Cloud-native applications offer businesses a way to build a more nimble, effective and secure IT environments—ones that can withstand the challenges and embrace the opportunities of the next decade and beyond.