How the Cloud Improves (or Hinders) Application Performance
June 14, 2017

Josh Gray
Cedexis

Writing elegant, effective, flawless code is totally in the hands of the developer. When you accidentally drop in an infinitely recursive loop that takes your whole app down … well, you kick yourself, fix it, and pretty much just hope nobody else saw it.
 
You may even get to have a say in the stack it runs on to ensure there's nothing in there that could get in the way of smooth operation. Nobody loves finding out that the Linux instance is old and buggy, or that somebody forgot to update JQuery to the latest release — but, with a little interrogation and tenacity, things like that can be found and fixed.
 
The big hurdle remaining just outside your grasp, though, is the network your app ultimately flies across: the Internet itself. When everyone in Boston decides to watch the series finale of The Leftovers the moment HBO drops it, and the peering connections between all the local ISPs and HBO's CDN get slammed, your app can suffer if it coincidentally shares these linkages regardless of how much effort you put into making it hyper-efficient.
 
And given the efforts we put in these days to deconstructing monolithic applications, and using distributed microservices to make us more agile, the potential for app performance to take a nosedive because of unseen (and unanticipated) network congestion and outages is only getting greater. If even one of the dozens of APIs you call as the app opens is blocked by network problems, the entire user experience can fall apart.
 
There is help at hand, though, in the form of new ways to program network awareness directly into your code. There are many different words, acronyms, and marketing nonsense naming this, but let's call it Delivery as Code (DAC). Think of it as Infrastructure as Code, but instantiated and refined within the application rather than across the network.
 
The core principle of DAC is pretty simple, actually: don't try to hit any microservice at a particular location. Rather, hit a dynamic traffic manager endpoint that will automatically calculate which of several options to use for that microservice and the best route to get to it. Think of it like hitting a load balancer, instead of a specific server, inside a LAN, except that it's designed to work from the client over the unmanaged Internet, as well as within internally-managed data centers.
 
How could the traffic manager actually know which endpoint to direct your request to? In a perfect world, the answer is that it is part of a broader platform that doesn't just direct traffic — it also measures, analyzes, and acts on a broad swath of user experience data.

For instance, a system that tracks availability, latency, and throughput across and between networks, CDNs, and ISPs, will have a clear sense of where congestion exists, and where the clearest paths between your app and its desired APIs are.

Configured correctly, the system would also take into account all the possible endpoints you have within your own network: that way, it would have the option of directing requests between your own building and the farthest reaches of the Internet, based on an objective virtual map of Internet traffic.
 
By embedding DAC instructions within your code, then, you can remove the uncertainty of network delivery fluctuations from your development process. You can know that each microservice or API call will automatically be directed to the most efficient endpoint — and if your app is running slow it's because of something other than network congestion (ouch).

Josh Gray is Chief Architect at Cedexis.

The Latest

June 23, 2017

Why Agile? DEVOPSdigest asked the experts for their opinions on what are the most important advantages of being Agile. Part 3 covers how Agile enables you to grow and adapt to change ...

June 21, 2017

Why Agile? DEVOPSdigest asked the experts for their opinions on what are the most important advantages of being Agile. Part 2 is all about speed ...

June 19, 2017

Earlier this year, DEVOPSdigest featured a list of expert opinions on the essential steps to become agile. Now that we have an idea on how to achieve agility, however, we have to consider why. What's the payoff? With this question in mind, DEVOPSdigest asked the experts — including analysts, consultants and vendors — for their opinions on what are the most important advantages of being Agile ...

June 15, 2017

In the development community, creating additional efficiency through improved collaboration has been prevalent for some time. But despite the head start on the rest of the corporate world when it comes to collaboration, many organizations function today as they did 15-20 years ago. Since time is money in the tech world, outdated collaboration is a huge missed opportunity ...

June 14, 2017

Given the efforts we put in these days to deconstructing monolithic applications, and using distributed microservices to make us more agile, the potential for app performance to take a nosedive because of unseen (and unanticipated) network congestion and outages is only getting greater. There is help at hand, though, in the form of new ways to program network awareness directly into your code ...

June 12, 2017

What if you discover a fatal error or an exploit in your app? What if your app is down during a crucial time? As a developer, how you react to a crisis can mean the difference between minor blip and an embarrassing or costly company blunder. Here's a crisis management plan to get things right when they go wrong ...

June 08, 2017

Recently, the results from SmartBear Software's annual survey, the State of Code Review 2017: Trends & Insights into Dev Collaboration were released. One point I found interesting is that it suggests only 66 percent of organizations can get releases out on time. Why are the other 34 percent struggling to get releases out the door? ...

June 06, 2017

Today's app development landscape is competitive and expensive. Thousands of apps are released each month, and user acquisition and retention are costing app developers millions. User abandonment is one of the main battles of every app developer — as every lost user means another wasted investment ...

June 05, 2017

Developers love using containers to build, run and ship applications in a flexible and simple way. However, the technology has received backlash for not being as secure as other (traditional) methods, such as Virtual Machines (VMs). Securing containers and securing VMs requires a completely different process. Below are four key differences between securing containers versus securing VMs ...

May 31, 2017

DevOps results in improvements in software delivery performance, according to a new first-of-its-kind study by CA Technologies to quantify the benefits for companies that combine DevOps methodologies with Cloud-based tools and delivery mechanisms ...

Share this