Diagram: The Network Diagram


Read this article if you want to learn how I construct network diagrams, the notation and how I put it together. While the notation itself can be put to a broader use, such as infrastructure architecture and others, it is specifically geared towards Software Architecture.

1. Introduction

The network diagram is a commonly found diagram in IT Architecture. It has uses in many architectural disciplines – not just Software Architecture. This article will primarily focus on the Software Architecture view, and not consider any other uses.

In this article I am going to outline the notation I have been using and adapted to my needs over the years. I prefer this notation as it is handier and provides a lot more overview than others, such as UML Deployment Diagrams with which it is particularly difficult to convey this amount of information in concise way.

For me the network diagram is an important document. Before even drawing then I develop network diagrams on a flip-chart or on white-boards together with my clients. This is a good way to quickly model a future environment and iterate over it until it fits the requirements.

First I develop a logical view with little detail about the physical implementation. Over time, the logical diagram will develop into a physical one with more detail added. This activity goes along with modeling the Software Architecture. The Infrastructure Architecture determines which network infrastructure is a given and the Software Architecture determines which additional application- and infrastructure-nodes you need.

Sometimes a Network Diagram is referred to as Architecture Overview Diagram. It is fine if this is the purpose of the Architecture. Mostly, it is just one particular view of the Architecture while there are others. In this case I would not call it Architecture Overview Diagram, but create an Architecture Overview (document) that contains a Network Diagram.

2. Typical Use

This diagram is typically used in the following contexts:

  • As a quick way to gain an understanding about an environment and as basis for refinement.
  • As a tool for placing deployment units (installable components of the developed software) onto physical nodes.
  • As work-document for the entire software development project, such as setting up development environments, test environments, performance test environments, etc.
  • As deployment diagram/deployment model for software applications. It will be used as input for other architecture and planning work, such as: infrastructure architecture, infrastructure planning, etc.
  • As operational diagram. It will be used as input for the operational planning, technical support structures, and others. It may be enhanced to become a walk-through diagram, i.e. showing the how a request flows through the infrastructure from the user to the last node in the chain, such as an E-Mail gateway, database server, etc. This can be very helpful for problem determination.
  • As means to communicate the architecture you created.

3. Notation used in Network Diagrams

This chapter outlines the elements I frequently use for network diagrams.

Network Diagram - Network

Network: The cloud is used as notation for a network. It displays a network but does not go into details about what is hidden in this network. The assumption is that requests are able to travel through the network. Examples are: wide area networks (WAN), wireless networks, local area networks, etc.
Network Diagram - Logical Node
Logical Node (or Server): A logical node represents a logical server or other hardware or software device. Examples are: HTTP Servers, network infrastructure, proxy servers, printers, mail servers, etc.
Network Diagram - Cluster of Nodes

Logical Cluster of Nodes: Multiple nodes stacked on top of each other are used to display a logical cluster. This means that the diagram indicates that a cluster exists in this place but that the technical details of the cluster – such as load balancer, concrete setup, etc. – is hidden in this view. This can be of relevance if you want to show the connections (dependencies) between different nodes but do not want to clutter the diagram with too many elements.

Physical (real) clusters show the actual implementation of a cluster with all servers and all connections.

Network Diagram - Physical Node

Physical Node (or Server): A physical node represents a physical server. Often, I add additional details as I learn about them. Examples are: hostname, important software and application code installed, such as Apache HTTP Server and custom developed HTTP content.
Network Diagram - Datastore
Datastore: A symbol commonly used to denote a data store. It is mostly used as an addition to other symbols, such as database nodes, caching proxies, etc.
Network Diagram - Filesystem
Filesystem: This symbol is often used to denote a file-system. It can be a local file-system, if it is of relevance, a network-attached-storage, or other types of storage that are relevant in the context.
Network Diagram - Location or Zone

Location or Zone: I am typically using this notation to denominate a location or a zone. A location is a physical location, such as a computing center, a branch office, a warehouse, etc. A zone is a network zone. It is a sub-net between within an existing network, such as two different network zones in a computing center, the DMZ, etc. I only use those if they are relevant in the given context.
Network Diagram - Firewall

Firewall: I use this symbol to denominate a firewall. I usually do not distinguish between the different types of firewalls because it is not a necessary detail for Software Architectures.

If a connection crosses the firewall I usually add the required port. This is necessary for work with the infrastructure teams.

Network Diagram - Connections

Connections: The notation used for connections between nodes is an arrow. The head of the arrow points in the direction of the connection-initiation. Connections are elements such as network connections, message queue connections, etc.

Above the arrow I write the application layer protocol and port used, for example HTTP or HTTPS and the port, such as 80 or 443. If the connection is a HTTP connection I usually add the URI or even the entire URL if necessary. This is especially relevant if reverse proxy servers need to be configured.

Below arrow I write the network layer protocol used if it is not obvious. For example TCP, UDP or others.

4. Example

The example illustrates a simple web-store. I have used the notation described above. Let’s assume the web-store has the URL http://www.domain.com/. The store itself is a dynamic web application and available on the URI /store/. The catalog – the second part of the application – is available on the URI /catalog/.

Network Diagram for sample web store
Figure 1 - Network Diagram for sample web store

Users access the store across the Internet (a large cloud we don’t know much about). The protocol is HTTP and HTTPS and uses the ports 80 and 443. User requests are directed to the store (if the URI is /store/) and to the catalog (if the URI is /catalog/).

Both, the catalog HTTP servers and the web application servers are clustered.

The connection between the reverse proxy and web application servers is secured, whereas the catalog is always accessed unsecured. The firewall between the DMZ and Intranet needs to have port 443 inbound open.

The nodes in the web application server cluster access the database via JDBC on port 5000.

I will add detail as I learn more. This may be the physical layout of the clusters, availability features, application software installed, software versions, hostnames, and other details. It all depends on the audience of the chart and the requirements you are trying to validate the diagram against.

I also use colors on network diagrams. Sometimes it helps to color different diagram elements based on commonalities or features, such as infrastructure nodes, application nodes, and others.

References

[Amb2009] Ambler, S. 2009, “UML 2 Deployment Diagrams”, Agile Modeling (AM) Homepage [online] available at http://www.agilemodeling.com/artifacts/deploymentDiagram.htm

Copyright © 2010 Michael Pichler

Advertisements

5 thoughts on “Diagram: The Network Diagram

  1. Thanks for sharing this informative post. I have been using Microsofts visio 2007 for designing such network diagrams. It has good add-ins and tools available for network models and rack planning. Would like to know which software you prefer for such designing purpose.

    1. Thank you, Emily! There is no particular tool I use for this purpose. I am typically not using a particular tool for that purpose. It usually depends on what my clients want me to use. If I want to capture something quickly I draw by hand and take a photograph. If I want to draw it nicely I use easy to use charting tools like OpenOffice Impress. If it needs to be available for future processing, such as model-driven approaches, I use some model-based design tools. So it depends…
      Regards,
      Michael

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s