While building AppCritical Version 3.6, our development team had many spirited discussions about the underpinnings of networked services and applications. Services delivered over a network have been around since…well, since before the Internet. This isn’t a history lesson so we can skip the details. What’s important is that this model of computing and communications has thrived during all the technology paradigm shifts over the years, including today’s cloud computing initiatives. I think the reasons for this long-term success boil down to layers, encapsulation and path. Let’s briefly look at each and see how they enable simple network communication.
Layering: Build a stack of functionality, with each layer building upon the capabilities of lower layers.
Encapsulation: Keep complexity in a ‘box’ and don’t let it influence other layers. Layers aren’t concerned about other layer’s functionality and complexity; in fact they are obliviously to it.
Path: An abstracted view of the communication channel between a provider and a consumer. Applications view the network as a path because it is the most convenient and powerful abstraction available.
Let’s look at the Internet Protocol suite:
- Application: HTTP, SMTP
- Transport: TCP, UDP
- Network: IP, ICMP
- Link: Ethernet, Wi-Fi
With this arrangement, a task such as viewing a webpage, which is actually quite a complex process, is simple because you provide the location of the webpage and everything else is taken care of for you. This is the path concept in action – define server and client end points and just let everything else happen. All four layers of the client and the server are involved, but the user isn’t concerned nor should they be. It just works as we expect because complexity is abstracted away.
Just as viewing a webpage is simple; understanding a network from an application’s perspective is a convenient and powerful means to understanding network performance. Application perspective, or ‘path centric’ as we sometimes call it, breaks the network into logical elements from client to server and lets everything else take care of itself. You don’t need to concern yourself with device locations, special access requirements or even different types of network technologies. With a path-centric view, you know when the network is performing up to your expectations, and if not, why not.
– Chris Norris
Director, Product Management