The LongJump Architecture

Having specified the building blocks, it is now possible to define an architecture for Internet applications based on the characteristics established in Environment of an Internet-Based Application. This is the purpose of this chapter.

The Client-Server Model

At the highest level, the architecture is divided into a client and a server. Other models are possible (e.g. grid computing [Fos03]) but they tend to be less feasible (or desirable) at the current state-of-the-art. The client-server model is highly asymmetric; it is designed to deal with relatively few servers and many clients. This approach originated early in the evolution of practical computing — when very expensive, centralized machines served a large number of comparatively cheap terminals.

The Internet and modern generic hardware, however, completely reverse the earlier situation. Now, most server systems are not that much more capable than the clients that connect to them (sometimes even less so). Collectively, standard desktop clients making use of an Internet-based server are almost certainly far more powerful than that server. Yet, the model lives on.

The viability of the client-server model in the Internet age is based on two key issues — upgrades and security. Even within an organization, upgrading the software on every user's personal machine is an extraordinary difficult task. On the wider Internet, with its heterogeneous mix of computers and operating systems, the problem becomes exponentially more difficult. This explains the popularity of web-based services — after all, nearly every desktop machine is equipped with a browser, which behaves in a more or less predictable manner.

The issue of security for Internet-based systems is even more critical. Trusting the output of even a single compromised machine could affect all users of the application — possibly millions of them. Worse still, the problem can spread across the Internet, to other applications and other users. Although the worst-case scenario is rare, any security fault can potentially have global consequences — simply because everything is effectively connected to everything else. In earlier eras, primitive networks linking a limited number of hosts provided far less capacity for doing damage.

The way to minimize both multi-machine upgrades and catastrophic security breaches is the old client-server model. By limiting the client's role, most upgrades can hopefully be restricted to the server only. In addition, security-related attention can be lavished on the server machines. While keeping tight control over a limited number systems concentrated at only a few locations is still a difficult task, it is nevertheless manageable.

The above arguments also apply to Internet-based wireless applications. It is interesting to note, however, the astonishing degree to which a mobile wireless device (such as a cell phone or PDA) talking to a standard generic server resembles the centralized computing environment of old. In relation to the typical server, these mobile devices are extremely weak. Limited memory and processing power are combined with user interfaces that are often less capable than even the dumb terminals of the mainframe era. Thus, one of the newest forms of practical computing resembles one of the oldest — making the client-server model particularly applicable to Internet-based wireless services.