A recent survey by Capgemini found that 15% of new enterprise applications today are cloud-native, meaning they are designed specifically for a cloud computing architecture. That figure is expected to jump to 32% by 2020, and will likely be achieved through gradual attrition of on-premises infrastructure. Companies are, of course, delving deeper into the cloud due to the increased revenue and decreased operational expenses that are typically associated with cloud, but it’s worth taking a closer look to gauge whether it’s a fit for your business. In this article, I’ll explore the pros and cons of living in a cloud-native world.
The success that cloud service providers (CSPs) such as Amazon Web Services™ (AWS®) and Microsoft® Azure® have seen in recent years is indicative of the larger triumph cloud computing is experiencing over traditional on-premises infrastructure. Cloud brings intrinsic value through agility, availability, and scalability.
Agility enables you to consume best-of-breed service from the CSP and deftly incorporate it into your architectural and application design. You can achieve availability both through application uptime, as well as the abundance of services choices constantly proffered by the CSP. Scalability allows you to maximize your ROI while minimizing expenses, and adapt your applications to meet any demand regardless of scale. But unless you’re designing, integrating, and delivering applications for an agile company, the technology debt and technology inertia is often daunting to overcome.
Still, good CTOs know that applications are the secret sauce that help companies disrupt their industries and grow, so the need to keep applications healthy and running smoothly while generating revenue surpasses the inertia. Overcoming tech debt and inertia can be accomplished in the following two ways:
- Conduct a personnel review. If your teams lack the proper skillsets or wherewithal to continually learn and evolve their skillsets, it’s time to consider hiring new personnel to help you enable cloud-native applications. Moving forward and invest in your teams to make certain their skills are continually evolving to meet the applications’ needs.
- Revisit your processes. With legacy technology comes old processes, so as the technology constructs change, the entire application lifecycle will change and new methods and steps will evolve along with them. Make a point to continually address processes to see if they still fit your requirements.
What are the pros of building cloud-native apps?
The primary benefit of a cloud-native application is to positively impact the business’s bottom line through application availability, agility, and scalability. For example, a monolithic on-premises application can have a negative impact if it’s suboptimal for any reason, including high latencies, slow release and update cycles, and any downtime for maintenance, upgrades, or issues. As a monolith, any change to the application code—including new features and updates, as well as infrastructure integration—will affect application consumption for end-users and ultimately negatively affect the bottom line. When it’s transformed into a cloud-native application, you can design it as microservices running on ephemeral containers, increasing agility as updates, and releases can be done without taking down the running application. In other words, this means maintenance or upgrade of a microservice doesn’t affect the revenue-generating efficacy of the cloud-native application. This aspect of the cloud-native approach provides continuous integration and delivery. No longer do you need to plan a six-month maintenance window—cloud-native mindsets allow you to scrap the traditional enterprise application lifecycle and commit to a rapid testing and deployment cycle, where you can quickly conduct quality assurance (QA) test, identify bugs, and rectify outstanding issues.
Additionally, adhering to best practice design principles in distributed application architecture will help protect against downtime, even if an entire region were to go down, as availability best practices mandates no single point of failure — including a CSP’s region. In the end, the application performance and health can be maintained via cloud-native approach to apps.
The advantages of cloud-native are further enabled by the CSPs, who are constantly releasing service updates and new services as described in their monthly service updates. If you read the details, you might be surprised at the number of services that have been fixed or updated without any service interruption to your application services. This is the epitome of frictionless consumption.
What are the cons of building cloud-native apps?
Where there’s a pro, there’s almost always a con. While utilizing cloud services can deliver benefits to your organization, remember that it requires a realistic understanding of what your organization can take advantage of. Before going cloud-native, consider whether your organization has the internal competency to be able to build cloud-native applications and fully realize their benefits. By the same token, consider whether CSPs will be able to provide you with the services that will allow you to truly differentiate your application innovation and gain credibility within your end-user and customer base.
There are many vendors, platforms, and even technologies, so do your research and become intimately familiar with your organization’s needs and application requirements to avoid vendor lock-in. In other words, once your application is locked in with AWS, it will require heavy lifting to move it to Azure, so be sure what your needs are. Inter-cloud mobility is still a challenge; no vendor wants you to leave their ecosystem for a competitor’s.
Another drawback of relying on cloud-native applications is reduced control over customizations. By the very nature of the cloud, AWS and Azure control their own environments and the services they provide, so they can remove or update services, increase service fees, or force service upgrades at will.
Finally, vendor-provided monitoring and troubleshooting capabilities may not be enough to help you surface the single point of truth needed when troubleshooting your application. This is because the toolsets used to monitor your cloud-native applications and the different CSP services are not as tailored and mature as traditional end-to-end monitoring toolsets.
Skill up for a cloud-native world
While troubleshooting skills have never been more important, it goes without saying that the reason you’re going cloud-native is to become highly available, enable scale, and increase agility. For these reasons, automation and orchestration are critical skills to hone, to realize the full advantages of going cloud-native with applications.
Secondly, your knowledge and expertise of monitoring with discipline in a hybrid IT environment will serve as a strong foundation in the cloud-native method. Monitoring techniques used on virtual machines, servers, storage, and networks (aka IT operations) is transferable knowledge to new technology constructs like cloud services, microservices, containers, and Functions as a Service. Cloud-native platforms are built from scalable commodity resources in a distributed and hyper-scale architecture to sustain the multitenant environment, so use the DART/SOAR framework to get visibility into and maintain optimal health and performance of your cloud-native applications.
As more organizations move towards cloud-native applications, you’ll need to increase your skills. But there are some additional best practices that can help ease the transition and set you up for success:
Deploy the K.I.S.S. principle. Keep it stupid simple. The services offered by technology providers are constantly evolving. What AWS offered last year may not be what they offer this year. As you integrate and deliver your application, remember to keep it simple and cut through those complex layers.
Establish your baselines and see the trends. Some CTOs and CIOs aren’t sure if going to the cloud made their businesses run better. By using an end-to-end monitoring toolset, you can first establish baselines and see trends in your application’s performance and health. Then, backed by data, you’ll be able to confidently report whether the cloud helped you gain efficiency or lose it, and why you ended up in either situation.
Trust but verify. This is the modus operandi that all engineers should live their careers by. Trust that AWS and Azure services are easy to consume and deploy, but before you choose a cloud service provider, be cognizant of what services that they offer and balance it with what your organization really needs. Over time, if your cloud-native application has lost Quality of Service, compliance, or ease of consumption with the integrated services that CSPs provide, reevaluate whether that application should return to on-premises instead.
As the move to cloud-native businesses becomes more apparent, there are advantages to be had. Learn what cloud-native skills are needed within your organization, and then take the steps necessary to increase the breadth and depth of your existing cloud knowledge and experience. Leverage a proper monitoring toolset to gain a more thorough understanding of what cloud-native can deliver for your organization. In short, cloud-native applications will allow organizations to handle business transactions at the scale, agility, and availability of AWS and Azure.