BSDCan2008 - Final - we hope

BSDCan 2008
The Technical BSD Conference

Adrian Chadd
Day Talks - 1 (2008-05-16)
Room H
Start time 10:00
Duration 01:00
ID 72
Event type lecture
Track Hacking
Language en

What Not To Do When Writing Network Applications

The lessons learnt working with not-so-high-performance network applications

This talk will look at issues which face the modern network application developer, from the point of view of poorly-designed examples. This will cover internal code structure and dataflow, interaction with the TCP stack, IO scheduling in high and low latency environments and high-availability considerations. In essence, this presentation should be seen as a checklist of what not to do when writing network applications.

Plenty of examples of well designed network applications exist in the open and closed source world today. Unfortunately there are just as many examples of fast network applications as there are "fast but workload specific"; sometimes failing miserably in handling the general case. This may be due to explicit design (eg Varnish) but many are simply due to the designer not fully appreciating the wide variance in "networks" - and their network application degrades ungracefully when under duress. My aim in this presentation is to touch on a wide number of issues which face network application programmers - most of which seem not "application related" to the newcomer - such as including pipelining into network communication, managing a balance between accepting new requests and servicing existing requests, or providing back-pressure to a L4 loadbalancer in case of traffic bursts. Various schemes for working with these issues will be presented, and hopefully participants will walk away with more of an understanding about how the network, application and operating systems interact.