1. Cloud native apps: Perspectives from Navisite
3/16/2017 8:06:09 AM
Cloud native apps: Perspectives from Navisite
Cloud Native Applications,Navisite,David Grimes
https://news-cdn.moonbeam.co/Cloud-Native-Applications-App-Developer-Magazine_a6zd60ah.jpg
App Developer Magazine
Cloud Services

Cloud native apps: Perspectives from Navisite


Thursday, March 16, 2017

Richard Harris Richard Harris

Cloud native apps advice from David Grimes, Vice President of Product Engineering, 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 Magazine

Become a subscriber of App Developer Magazine for just $5.99 a month and take advantage of all these perks.

MEMBERS GET ACCESS TO

  • - Exclusive content from leaders in the industry
  • - Q&A articles from industry leaders
  • - Tips and tricks from the most successful developers weekly
  • - Monthly issues, including all 90+ back-issues since 2012
  • - Event discounts and early-bird signups
  • - Gain insight from top achievers in the app store
  • - Learn what tools to use, what SDK's to use, and more

    Subscribe here