Apple app developer news Android app developer news

Cloud native apps: Perspectives from Navisite

Cloud native apps advice from David Grimes, Vice President of Product Engineering, Navisite.

Cloud Services 19,200 VIEWS
3/16/2017 8:06:09 AM
Cloud native apps: Perspectives from Navisite
https://appdevelopermagazine.com/images/news_images/Cloud-Native-Applications-App-Developer-Magazine_a6zd60ah.jpg
Posted Thursday, March 16, 2017 by Richard Harris, Executive Editor


Cloud native apps: Perspectives from Navisite
There is much to be considered in the complex IT ecosystems that support modern enterprises. Just like a clock, each little cog and gear plays a critical role in making sure everything is on time and in working order. Unlike a clock, however, IT environments are far less predictable and must be built with more flexible, scalable parts and pieces to function at an optimal level. The relationship between an IT infrastructure and application is particularly important as they must “communicate” with one another in order to scale and react to changing demand.

Vertical and Horizontal Scaling


Autoscaling is a cloud computing service feature that automatically adds or removes compute resources depending upon actual usage and continues to be considered as a viable approach to deal with these challenges. Microsoft recently outlined the two typical forms of vertical and horizontal scaling currently in use for application aware infrastructures, including:

1. “Vertical Scaling (often referred to as scaling up) requires that you redeploy the solution using different hardware. In a cloud environment the hardware platform is typically a virtualized environment, and vertical scaling involves provisioning more powerful resources for this environment and moving the system onto these new resources. Vertical scaling is often a disruptive process that requires making the system temporarily unavailable while it is being redeployed. It may be possible to keep the original system running while the new hardware is provisioned and brought online, but there will likely be some interruption while the processing transitions from the old environment to the new one.”

2. “Horizontal Scaling (often referred to as scaling out) requires deploying the system on additional resources. The system can continue running without interruption while these resources are provisioned. When the provisioning process is complete, copies of the elements that comprise the system can be deployed on these additional resources and made available. If demand drops, the additional resources can be reclaimed after the elements using them have been shut down cleanly.”

Application Aware Infrastructure


Regardless of whether you choose vertical or horizontal scaling, the truth today is that the world we live in is highly virtualized. And with many new applications being designed as cloud native, there is an opportunity to build these apps so they have an awareness of how they will need to be scaled or adapted from the onset. The most innovative developers need to think about building and architecting apps that can be used in both the horizontal and vertical scenarios to cater to this “application aware infrastructure.” Meaning, the infrastructure should be made aware of the context of the application and the “rules” it should watch through the tooling we refer to as autoscaling.

This “grow forward” model is effective, but there is still a tremendous footprint of legacy applications in use and there is a shortage of development talent that can build in this new world. When I say “legacy,” I don’t just mean older applications that are still in use, but also new apps being designed in a more traditional way. Simply put, autoscaling does not always fit the application, so it may not be able to scale in the ways that the application aware infrastructure enables.
David Grimes

Infrastructure Aware Applications


While the application aware infrastructure model may have less of an impact on the app (aka the app continues to run, while the infrastructure does all the magic behind the scenes), I believe there are limitations to the autoscaling capabilities of infrastructure - particularly when servicing a variety of applications or the nuances of a new application.

As an alternative, I propose infrastructure aware applications. In this model, developers build an application in a way that the app is actually aware of the infrastructure that it’s running on and recognizes that the infrastructure is virtualized and has accessible APIs. The application can look at things that aren’t necessarily infrastructure-centric and can focus on metrics about the application itself. From there, the app can take action on the infrastructure based on its analysis of the environment. This moves the burden of autoscaling from the infrastructure owner to the developers who need to understand the notion that this application will run in this cloud-enabled infrastructure.

Gaining Control


The application infrastructure aware model is still a very viable option - especially as it can provide a quick path to autoscaling - but there are several key limitations with this model. With an infrastructure aware approach, you can purpose-build an application and gain greater control.

While this application-centric approach is still fairly new, savvy developers are able to recognize the significant benefits in the long run. As with any new approach, it will take time to see this shift take place. Just like a clock – it will all happen in good time!

Editors note: Guest submission from David Grimes, VP of Product Engineering at Navisite





Subscribe to App Developer Daily

Latest headlines delivered to you daily.