Scaling for Enterprise
Proven Architectural Concepts
By Maynard Vitalis and Eric Delore
All enterprise-class software applications require a fundamentally sound architecture. By definition, these are systems that need to perform well, be highly available and scalable, and be easily maintained. Their deployment in a Web environment does not excuse developers from applying sound design principles. In this article, we'll outline some of the key architectural steps for planning a Web-based electronic-commerce application.
Some areas to consider when discussing architecture, from general to specific, include partitioning applications into tiers, building shared services, developing stateless business-logic components, dealing with client state, using lightweight server processes and pooled resources, and designing the database for maximum concurrency.
Partitioning the Application into Tiers
The first place to start is to separate the application into three distinct tiers: presentation, business logic, and access/data. This means you'll never mingle business logic with code that affects the user interface or that communicates to a database or network. To understand why, let's look at the three tiers in more detail.
The presentation tier contains HTML along with server- or client-side code (such as JavaScript or VBScript) that deals with manipulating the user interface, and, optionally, code that manages client state. The presentation layer should not contain any business logic.
The business-logic tier contains separate components -- the rules specific to your business.