Environment of an Internet-Based Application

The first step in architecting an Internet-based application is understanding the environment in which it operates. This environment (shown in the simplified network diagram of Figure 1) is certainly a demanding one. Failure to master it results in constant crashes, service outages, frequently successful attacks by hackers, and errors that anger users. Tame the Internet environment with the right architecture, however, and the full power of global communication is yours. Your servers, spread across multiple locations, work reliably with each other. Applications running on third party systems are smoothly integrated. Customers — using desktop machines or mobile wireless devices — easily access your service at any time of day or night.

Unfortunately, the impressive capabilities of the Internet come at a price. Being able to connect together a large variety of systems spread across the world creates a heterogeneous, unsecure environment. The Internet simply has to be this way — otherwise it would be of no value. After all, if someone else decided who your application can talk to, and who can talk to it, your options would be severely limited. On the Internet, these kinds of choices are largely up to you — the application's owner.

The Internet is a network of networks. Your server (or servers) reside on some Local Area Network (LAN), which is connected to the Internet. In practice, both the LAN and the Internet connection is usually supplied by an Internet Service Provider (ISP), on whose premises the application's servers are also located (collocation). Those servers are your little corner of the Internet — you get to choose who is allowed to enter there, and what they are allowed to do once inside.

There might be one server or several, working together in a group via the LAN (some demanding installations of this type use a dedicated, high speed LAN for server-to-server communication). The application may also be distributed over a wider area, with additional servers at other locations. This is typically done for reliability — if there is a failure that affects an entire site, another, geographically distant site is likely to remain operational. In contrast, multiple servers are also often deployed at a single location to increase capacity (i.e. a larger number of simultaneous requests can be processed every second).

System administrators and network engineers can take a variety of measures in order to protect the application from attack (e.g. by installing a firewall to block some intruders, running intrusion detection software, etc.). These measures, while very important, are not sufficient. The application itself — since it must remain widely accessible — has to implement its own security.

On the client side, a desktop or laptop computer is the most common type of hardware used (of course, capabilities and operating systems vary greatly). Mobile wireless devices, however, are becoming an increasingly popular alternative. These devices (typically telephones and PDAs) are connected to some wireless carrier's cellular network, which, in turn, is connected to the Internet. Internet connectivity is a requirement for cost-effective third party services to wireless clients. High bandwidth capability, however, should not be necessary for many applications — provided that the network protocol is well designed.

An Internet-based application does not have to rely solely on its own servers for all functionality. External services, for example, may be accessed (possibly subject to a license) in the course of fulfilling a user's request. The Internet is the perfect medium to integrate such disparate systems together into a single application — or even multiple applications with shared components.

Key Requirements

Based on the operational conditions just described, several key characteristics required of an Internet-based application can be stated. These characteristics are discussed below.