Software Systems Design (FIRST DRAFT)

Version 0.1

4. Client/Server Systems

As networking technology developed in the 1980’s, some universities, government research labs, and a handful of tech companies (like Sun Microsystems, IBM and Digital Equipment Corporation) deployed (wired) ethernet on their campuses.

Some campuses already had proprietary networks built from vendor-specific components. On such networks, IBM computers could talk only to other IBM computers, and likewise for other brands. Networks were expensive and slow, and they connected mainframes and mini-computers. Users did not typically have computers at their desks – they had terminals.

Ethernet, the IBM PC, and the Sun workstation (among other products) changed everything.

Ethernet allowed computers to talk to each other, in a reasonably reliable way, without requiring vendor-specific hardware like DECnet or IBM SNA. The PC was an affordable way to give an employee their own computer. The workstation was a much more powerful single-user computer than the PC. For over a decade, Sun dominated the workstation market, selling ever more capable Unix-based systems to universities and government labs (for research) and companies (primarily for design work).

A form of distributed application arose on networked campuses that has shaped business and consumer services ever since, including what we today call “the cloud”. The shape of that application is the simplest distributed system, the client/server system.

Topics for investigation

One topic from the last chapter was “narrow waist architectures”, where a single standard or technology could be implemented in many ways – giving the lower half of a diagram – and support many use cases, shown in the upper half of a diagram, emphasizing a single connection in the middle, bridging the assorted use cases at the top with many technologies at the bottom.

Now that we are considering client/server architectures, which are about as simple a distributed application as one can have, we will dive into how these architectures work. We will also preview our next topic, three tier architectures.

  1. Most internet protocols are text-based. To communicate, two computers must agree on how text is encoded, because at the transport layer, they are exchanging zeros and ones, grouped into words or bytes. DEC and Sun and other computers used ASCII, whereas IBM used EBCDIC. What are ASCII and EBCDIC, and what text encoding system is most commonly used today? (Unicode is not the answer, but it is related.) How many characters are there in the Unicode specification? How many human languages are represented in that standard?
  2. In an earlier age, before the Internet, there were local area networks, some of which were connected to each other by long links, e.g. “leased [telephone] lines”. If your company had a New York office and a San Jose office, with a LAN in each, you could lease a T1 line or a T3 line from a telecom company to connect them. What speeds could one expect from a T1 or T3? Can you find out what typical latencies were for these? Costs?
  3. What was the ARPANET, and how did it become the Internet? Also, what is an internet?
  4. Bill Joy had a conspicuous role in many technologies of the 1980s and 1990s. Which text editor did he write? What was his role at Sun? He directed the creation of Java at Sun, co-authoring its language specification. What were some of the goals for Java as a language?
  5. What is hypertext? When and where was it conceived, and can you find one or more early implementations? Where did HTTP and HTML come from, and how did these technologies affect the growth of the Internet? (By the way, there were around 5,000 hosts on the net in 1986 and less than 750,000 in 1992. There were more than a billion as of 2019.)
  6. What is an application topology? What characterizes a client? What characterizes a server? What is a three tier architecture for an application, and why is it used?

Topics for discussion

What are some client/server applications?

Computers are talking to other computers over a network. Why?

Some answers can be found in internet application protocols, a subset of the larger set of the IETF standards. There, among the oldest standards, we find:

What kinds of activity is enabled by each of these protocols?

Myth: The network is reliable

A famous list of fallacies about distributed computing starts with the myth that the network is reliable. It’s fitting that this list is attributed to Peter Deutsch from his time at Sun Microsystems, as the company’s slogan was “The network is the computer.”.

So then, what does it mean to say that the network is unreliable? What kinds of network errors can occur?

How can we design client and server programs in a way that lets them recover from errors?

In your own experience using applications, how did they behave when there was some connectivity issue?

Who owns the network?

A LAN may be owned by the same organization or person that owns all the computers on the LAN. When something goes wrong, one person or team has access to the entire system, and the ability to change anything.

Wide Area Networks (WANs) typically introduce a loss of control. Someone else owns (part of) the network, and this makes debugging and repairing a system more complicated.

Imagine yourself the head of a company that depends on network connectivity, which (in the 1980s and 1990s) you would be paying a great deal for. (“Leased lines” from telecommunications companies were relatively slow and relatively expensive, easily costing more than $10,000 per month.) What do you want from your network provider? Consider, for example:

  • Availability: How often, and for how long, can the network be down?
  • Bandwidth: How do you know how much you need?
  • Quality: High bandwidth can be achieved with high error rates, so how much latency, jitter, and packet loss is too much?
  • What else might be important?

Looking ahead

Java was one of a set of technologies that helped commercialize the internet. The World Wide Web brought many people online, which brought more people online in a classic example of the network effect. Our next topic, the three tier architecture features widespread purchase and deployment of commercial software for web hosting, application hosting, and data management.

Further Reading

TODO.