A common ignorance with new developers (sometimes even the experienced developers) is the ignorance towards how the developed code would perform in a production environment. There are several architectural as well as implementation specific parameters that needs to be kept in mind while developing an application. What might look like a perfect system while testing on a local servers could actually fail miserably on a production environment. Obviously these are not function errors rather non functional, for example slow response time, bad user experience etc. Many of such things could be avoided if some of the non functional requirements are kept in mind during development as well as testing. One such key area that developers often miss is the parameters around network. On one hand is the ignorance about it but on the other hand is knowing them wrong or having misconception about network and the effects of it. The eight fallacies (mistaken belief’s) of network are,
- Reliable Network - Even though one would be choosing a data center to host the application, it is very important to understand what the data center offers in terms of the network reliability and availability. The availability the data center promises becomes your application’s default availability. So assuming that once the application is hosted in a data center, doesn’t mean that there will be reliable network connection 24×7x365
- Zero Latency - Your application’s response time includes time for information to travel back and forth between the client and the server. There is no teleporting happening. The more the information has to travel, there would be more back and forth communication because the entire information doesn’t travel in one packet. So it is important to keep in mind what you send and receive and if it is optimized.
- Infinite Bandwidth - The network bandwidth determines the capacity of a system to transfer information over a network connection. Too many connections beyond the bandwidth can support could also lead to slow response and connection time outs. Like how your intranet setup environment will not allow you to connect beyond certain number of connections, so would there be a limit on your production environment. Get to know the bandwidth the data center guarantees for your system and calculate approximately the number of connections the system can handle given the bandwidth.
- Secure network - While this can be enabled based on what protocol you use (HTTPS for example) this is not default. The data center could provide protection to who enters the servers, but not necessarily the information carried over the network.
- Unchanged topology - Topology is arrangement of node elements and the links between them. When your application is clustered and/or you share the network with other systems in the data center, understand the topology and how the nodes are connected. Also for better inter connectivity the topology need not be the same always.
- One administrator - Unless you have setup your own production environment and you are all in all everything, understand that it will not be one administrator managing all your network. There could be many who would be involved in managing the network and ensuring the network is most reliable and available. Ensure that there is good support team that can manage network in the data center round the clock. If your application has a global presence, then all the more you will need your application available throughout a day.
- Zero transport cost - Network utilization is not a fixed cost usually. Your data center puts a restriction on usage for a fixed cost and then usage beyond that would be charged. This possibly would help you to realize that the bandwidth you had originally opted for is no more enough. Also your data center gives little flexibility by not cutting down connections exactly when the connections to your system cross the bandwidth limit.
- Homogeneous network - The network may not be dedicated in entire to your application. There could be several other applications or tools that could be consuming or think about the interoperability with other systems from your application.
Keep all of the fallacies above in mind ensures that you plan your network capacity properly for the application and ensure that your application doesn’t get affected because of it.