Complex: adj. (Of a data processing problem) resolvable into two parts: a real part which can be solved or shelved, and an imaginary part which requires a complete and immediate restructuring of the DP department.
– The Devil’s DP Dictionary, Stan Kelly-Bootle (McGraw-Hill Paperbacks, 1981)

Having seen The Phantom Menace over the weekend, our admin, formerly of the real estate persuasion, dropped by to chat. The climactic scene, she said, told her she’s been working for us too long: (Warning: If you haven’t seen it yet, skip ahead because I’m about to reveal the ending.) After Anakin Skywalker blew up the Trade Federation’s spaceship in the nick o’ time, thereby inactivating the entire ‘droid army (a plot twist that caught yours truly completely off-guard) her only thought was “server’s down.”

“Hmmm,” I thought to myself. “I’m sure glad the Mandalorian CIO fell for the thin-client hype when designing the ‘droid army. And I just knew fat network architecture came from the dark side of the force!”

Over lunch the same day I talked to another colleague who’s a yachtsman (OK, he owns a boat). He told me about a guy who sells gas to everyone in his marina. The guy had to hire an assistant to pump the gas. Why? Seems his company installed a new computer system. His new system relies on a fat network architecture, with results as predictable as The Phantom Menace’s ending: Each transaction now takes several minutes to complete. Until he hired the assistant the line of boats grew long and their owners became increasingly impatient.

Want to bet that with a fatter client, response time would have been good enough to avoid the cost of that assistant?

Nearly everything you read about thin clients is bogus. If you want to keep things straight, keep a single fact in mind and you won’t go wrong: “clients” and “servers” are software processes, not hardware devices. Clients request services, servers provide them. The devices we call servers are really computers running operating systems designed to host server processes.

Remember that clients and servers are software and you won’t write monolithic applications, install them on web servers so they’re accessible through a browser and congratulate yourself on implementing a thin-client solution even though your business logic is inaccessible.

You also won’t fall for the “software on the desktop is bad; software on the server is good” claptrap that led to the hiring of the gas-pumping assistant and the fall of the ‘droid army. Read any article promoting this philosophy and you’ll find a common design priority: Minimizing Total Cost of Ownership (TCO).

As an IS manager you generally won’t design software, but you will establish priorities for those who do. Is your most important one minimizing cost, or is it maximizing end-user effectiveness? Remember, form follows function, so when your software architects design to minimize cost you’ll get a very different result than when they design to maximize end-user effectiveness.

Want to maximize end-user effectiveness? Isolate business logic and integration logic into modules that are separate from presentation logic and callable whether they’re installed on a local hard drive or on a network server. That way, software design doesn’t dictate run-time deployment.

Want to maximize end-user effectiveness? Since response time is probably the single most important part of “user-friendly”, install each module based on frequency of use rather than on IS convenience. Put the most frequently used modules on hard drives, moderately used modules on centrally managed LAN-attached servers, and infrequently used modules on centrally-located WAN-attached servers.

Want to maximize end-user effectiveness? Design solutions so that for critical applications desktops can continue to function (albeit in “degraded mode”) when the network or a server is down.

Keep in mind that with fat-network designs, when a server crashes everyone is down. If an application relies on three physical servers, each delivering 99% reliability, the application will only be up 97% of the time — about an hour’s worth of crashes each week — so designing for server unavailability is important. (In contrast, when a desktop crashes a single individual is down … and a three-finger salute will fix things.)

Remember: Clients should always be thin. Whether you deploy a fat desktop or a fat network is an entirely separate question.