Creating an application delivery controller for Developers (and why we use our own ADC)

Developers building business-critical applications need an IT environment that allows them to work quickly and securely. This means having reliable web servers that are always available and protected. However, in the agile world of modern application development, they can’t always wait for the IT team to set-up and configure ADCs for them. They need their own ADCs, and they need them to be tailored to their own needs.

When we developed Snapt Nova, we were our first customer. Our development team use Nova themselves (the process known as "dogfooding") to provide load balancing for Nova development and deployment. This post is about what developers need, how the right application delivery controller (ADC) can support and empower developers, and why Nova might be the best ADC for developers – or, at least, why our own developers seem to think it is.

What do developers need?

Generally, the priority for most developers is speed. They are always asking: "what is the fastest, most efficient way to do something?" Agile development methodologies enable them to work iteratively and to collaborate with colleagues in rapid, continuous development cycles. Their tools must not get in the way of their development work or slow things down. 

At the same time, developers are concerned about the availability and security of their applications, and ensuring these priorities are met even as architectures evolve and cloud platforms shift. Developers need operational agility without compromising the basic stability of an application.

Finally, developers usually share the ambition that their next app will be the one that takes over the world. But what happens when an app explodes in popularity? Will the infrastructure handle the demands of massive scaleability? When the developer suddenly needs to deploy load balancing functionality in dozens of sites and different clouds all over the world, do they have a load balancing solution that will make this manageable and responsive?

If you’re like us and you want to support developers and provide them with an agile environment, then ADCs are essential. But developers need the right kind of ADC that supports their workflow.

ADCs that support and empower developers

An ADC or load balancer designed for developers should, at a minimum, provide the following.

  • No worries about downtime. When developers need more than one server, load balancers automatically distribute traffic to prevent overloading on any one server and ensure the system is always up. Developers can count on a highly reliable system.
  • Efficiency. Web acceleration optimizes web servers so that page loading and response times are as fast as possible. This helps developers keep up the pace.
  • Scalability. Modern load balancers should automatically scale to handle any amount of developer traffic. Ideally, this will be paired with a flexible licensing model that allows them to pay only for what they use when testing and running applications in production. 
  • Ease of use. With real-time monitoring, and management and metrics provided in a "single pane of glass" approach to UI, you shouldn't have to be an expert in load balancers to use them. Developers should be able to easily keep tabs on how their applications and infrastructure are performing.

However, this is only the beginning. How can an ADC meet developers' requirements for speed, stability and potentially massive scale?

  • Centralized control and machine learning can save developers time as they propagate configuration changes to multiple load balancers in multiple locations, or delegate security parameters to an ADC solution that is self-learning and can adapt by itself to protect the application.
  • API integration and multi-cloud support enable developers to connect their ADC solution to their existing infrastructure in just a few clicks, and to run applications in multiple clouds simultaneously for more comprehensive testing, or for greater resilience or economies when running in production.
  • Lightweight processes and intelligent automation mean developers can rely on their ADC solution to scale-out as much as necessary to meet demand without compromising compute resources and without requiring hands-on instantiation and configuration  – which is the last thing developers need when facing a spike in demand and the pressure of meeting user expectations.

These are just some of the things an ADC solution can do to be more friendly to developers.

Why the Nova developers ended up using Nova

When Snapt was developing Nova application delivery controller (ADC), we faced all the usual choices and challenges common to software development, and our approach was to pursue the most scalable and agile way of getting things done, and that affected how we selected our programming languages, frameworks and databases. At every opportunity, we aimed to keep up the pace of development, and this is something we still do.

This approach led us to use Nova (from the alpha stage onwards) to provide the ADC functionality necessary for the ongoing development and subsequent production deployment of the Nova ADC solution. We are, as the saying goes, "eating our own dogfood".

Developing Nova and running it in production has high scalability requirements. Nova itself is designed for hyperscale deployments – that is, whether a company needs one ADC or millions of ADCs, Nova automatically scales up/down and out/in according to traffic demands. It turns out that the best load balancer for Nova is Nova! Using our own solution, which was architected to solve the problems of massively scaleable application development and deployment, was the most efficient choice for our development team.

For testing, before going into production, we use a big Kubernetes cluster in DigitalOcean where we can scale up to a million clients to validate that our platform can handle it; that process requires load balancing. We run almost exact copies of what’s running in production so that our developers have a simulated live environment in which to work. Nova's centralized control and native integration with Kubernetes and DigitalOcean (among others) make it easy for our developers to run large-scale testing in this way.

Nova: by developers, for developers

Snapt Nova allows developers to focus on what they do best – develop amazing apps for their business. By providing a centralized, extensible, lightweight and intelligent ADC platform, Nova enables developers to work fast and securely, and to reach for the limits of hyperscale growth without compromise.

Get the Snapt Nova Community Edition

Subscribe Here!