Application and infrastructure topology awareness: What is it, and why does it matter?
The world runs on apps. Apps run on infrastructure. Therefore, it is important that infrastructure is tuned to meet the needs of the application.
However, apps can be complex; infrastructure can be even more complex; and getting the two to work together can be exponentially complex. That’s the challenge facing enterprise DevOps teams, and that’s why application and infrastructure topology awareness is so important.
What is topology awareness?
Topology awareness is an understanding of both application requirements and infrastructure capabilities as well as how best to optimize the intersection of these two areas to meet business needs.
Let’s break this down.
Application topology awareness
First, we’ll take a look at what application topology awareness is all about. Application topology awareness is an understanding of all the different infrastructure resources and service level requirements demanded by services that make up an application. This capability is necessary if you’re going to automate the process of deploying applications to the right infrastructure services, based on technical and business requirements.
For most enterprise business needs, apps are comprised of a complicated mesh of services, each with their own unique requirements and interdependencies. For example, a distributed database application may have a name node service that is mission critical. This service likely needs to have both an active and a standby instance, and business rules might dictate that these two instances must not be hosted on the same server (or even under the same top-of-rack switch). That service requirement needs to be acknowledged and met in order for the application to deliver high availability.
Likewise, other services within the application may have their own special requirements of the underlying infrastructure, whether in terms of compute or storage resources or both. Understanding what each of these application services looks like, what their interdependencies are, and what needs they have is application topology awareness. Application topology awareness is required if you want to automate the orchestration and deployment of an application on the infrastructure in such a way as to ensure that its performance and availability requirements are being met.
Infrastructure topology awareness
Now, let’s consider infrastructure topology awareness. On a fundamental level, infrastructure topology awareness means knowing all the details of your infrastructure: physical location and specifications of servers, how much memory and CPU each has, what type of top-of-rack switches they’re sitting underneath, capabilities of the NIC cards, which data centers they’re in, what type and amount of storage is available in each of these systems, etc.
Unfortunately, being aware of what comprises your infrastructure doesn’t mean that you are using it efficiently to meet application requirements. In fact, in many cases, in order to run applications smoothly when application requirements are complex, organizations dedicate excessive infrastructure to each application, resulting in over-provisioning, underutilization, escalating costs, and limited flexibility.
Application and infrastructure topology awareness in combination
But to support complex data-centric and network-centric applications, it is critical to have both application topology awareness and infrastructure topology awareness and to use them in combination to optimize application performance and resource utilization. Orchestrating both in an automated framework means having a holistic view across your organization’s entire infrastructure (compute, storage, and networking) along with knowledge of the topology of all applications in order to provision applications in a way that best supports the application’s needs for performance and availability.
For example, the name node service of the distributed database application may need to store critical cluster data with very low latency. A policy that ensures the storage for that service is provisioned from a dedicated SSD pool on the same server eliminates the need for a network hop and ensures QoS guarantees can be met. Kubernetes orchestration platforms leveraging a Container Storage Interface (CSI) lack infrastructure topology awareness, and cannot guarantee where the underlying storage volumes will be provisioned. Similarly, the Kubernetes scheduler doesn’t support complex cross-service placement constraints, policies to intelligently—yet simply—select the appropriate infrastructure resources to meet the performance and availability requirements of the application.
Applying topology awareness to application pipelines
Now let’s take it one step further. Most essential business processes are supported by applications that are configured and customized in ways that are specific to a given business process or unique to an organization’s business logic, regulatory environment, auditing requirements, etc. Complicating things further, these applications are generally tied together in stacks—commonly known as application pipelines or service chains—to address higher-level business processes and drive business outcomes. Think of this as the difference between a supporting single instance of a big data application like Hadoop versus the entire chain of applications required to deliver a fraud analytics application (application pipeline).
Here’s a quick example. A popular application pipeline for fraud analytics is pictured below. A financial institution might use this pipeline to conduct fraud analytics on its credit card account activity. In this pipeline, Kafka is the application bundle used to ingest the credit card transaction data; Cassandra stores the data; Cloudera processes the data, and Pentaho provides a way to visualize the data. As you can see, supporting this business process requires a wide variety of application bundles that need to work well with each other. This is a requirement made considerably more complex because some of these applications may run in containers and some may run on VMs. And, some may run via apps that are accessing on-premises databases and some may be apps running in a public cloud.
This is where total topology awareness becomes a complete game-changer. Imagine how valuable it is to be able to overlay the needs of applications—whether they are legacy, database-centric applications or modern stateless applications or complex network services using Kubernetes—upon the total capabilities of a multi-cloud infrastructure, and then orchestrate deployment and life cycle management of those applications so that they achieve maximum performance and efficiency.
Faster Deployment, Higher ROI for Both Cloud-Native and Legacy Environments
Application- and infrastructure-topology awareness helps organizations deliver applications quickly, with just a click or two; support essential business processes with application pipelines; make the most of data-centric apps with the benefits of cloud-native architectures; achieve greater ROI from existing infrastructure investments; and support cloud mobility.
That’s what application- and infrastructure-topology awareness from Robin.io, via the Robin platform, delivers.