How can these limitations be overcome?
For things that already exist I would say brute force, meaning that if you think that you are going to have a problem with a T1 then put a T3 there. That adds a lot of cost, and it also may or may not be the right solution. There's end-to-end monitoring of an application service, which is difficult to do, and it tends to require more organizational and process changes than technology changes, but that is clearly something people can do. What are some limitations to network application performance?
When you integrate some of these applications, you're taking multiple discreet applications and you're making them run as a single system. So you're adding a number of additional components to the application. When that happens you're bound to get some latency, instead of hitting one application, you may be hitting five applications. The more important thing is that people don't plan for that. You tend to discover a problem after it already exists. Applications that were really built to be used across the wide area network are all of a sudden passing bits between the client and the server and that is bound to cause a performance problem. Would you give an example?
A real good example is Microsoft Exchange. It was built on a client server architecture, meaning that the server was somewhere in your building or at least your campus. When you take that and put it across the Internet it does cause a lot of latency. The only way to overcome that is to put bandwidth in front of it. What are some common mistakes that occur when people roll out network applications?
The first thing is that it?s not designed to meet a networking challenge. It may be very chatty between the client and the server for instance, and that doesn't work when the client and the server are far apart from each other. Generally the people are doing a better job with that, but testing is very important. Testing for user response time as well as load. An application may serve a few dozen users very well and may do so over a wide area, but if you put a few hundred users on it's going to choke. How about new applications?
With new applications it's really up front planning and testing. It's really understanding what the business requirement is, who the users are, what kind of response time you need, and making sure that you plan around that. That involves an up front cost, but tends to deliver a return on investment over time because you're going to avoid some skeletons in the closet. If you were deploying a new network how could you configure it for optimal network application performance?
The easiest thing that you could do is to throw unlimited bandwidth at it. That tends to be an expensive and wasteful solution. If you have a sophisticated organization you can put some kind of quality of service process in place. This will tag the application and assign it a priority. You can do that by application, or you can do that by user, but it becomes much more complex. The easiest thing to do is to build a flat high bandwidth network and then everything after that can be more efficient, but that comes with cost, complexity and people. What steps can be taken to make network applications more resilient?
Make sure that you understand all of the components in the service chain. That's an understanding down to the port level, down to the network interface card, down to the firewall, just really understanding all of the pieces. There are some things that you have control of and there are others that you don't, like if your customer is accessing an application over their digital subscriber line (DSL), clearly you don't have control over that. One group has to quarterback the process. In my experience that's the network people. The network people can get down to what's happening over the network, what protocols are running on the network, so if you have a sophisticated network operations center and network operations staff they can quarterback the process. They can determine what the application performance is and they can make the necessary changes. That in coordination with the help desk will get you off in the right direction. What other steps should you take?
There is also planning, that is putting together your business assumptions. Making sure that you're planning on the number of people that are going to be using this application, where they are, what kind of networks they'll be using and what kind of security they'll need all those kinds of things. Finally, really getting the applications and the networking people together and making sue that there is a mutually executed plan. When the networking and applications people don?t get along it leads to problems. If you take that up a level into the business you're talking about user dissatisfaction, lack of productivity, and if it's an external application it could mean lost revenue. So it's really important to get those guys working together up front. What are some trends in network application technology?
Almost all applications are being modified to run on a network. That may be anything from putting a Web front-end on a mainframe application, to actually building applications based on Web services, where you are really building them from the ground up to integrate with other applications that you may or may not have today.