We feel that many designers and architects lack an understanding of how to use Microsoft technology to build and implement large enterprise solutions. Far too often we have found architects shivering at the thought of building mission-critical systems based on this technology—not because they have tried and failed in their attempts, but because they simply do not have a good awareness of what tools are available. We want to change this.
The idea for this book came up in 2002. We first thought about writing this as an internal document at Cap Gemini Ernst & Young. When doing research on the market, we discovered that very few books focused on the IT architect and system designer. Most books were directed toward the developer, and we wanted a book for a broader audience. Because we think many IT architects lack a thorough understanding of what they can actually achieve on a Microsoft platform, we decided that we should extend the intended audience of our document outside Cap Gemini Ernst & Young and try publishing it as a book. Apress has always published great books, so we turned to them first. Gary Cornell became interested, and this book is the result.
The target audience is primarily designers and IT architects, but we try to cover topics we feel are valuable for developers to have knowledge about as well. First, let us define these three categories. Different companies may have different definitions for these terms, so to avoid confusion, we will specify what we mean here.
An architect is a person who, together with the customer (or the decision maker), retrieves the requirements and the data flow for an application or solution. The architect also defines what servers, function blocks, and so on are needed to make the application work. An architect works with the management of the company to find out how the application should be designed at a high level. He or she also determines the need for integration with other systems.
This person does not have to have deep technological skills; rather he or she designs on an abstract level and produces a blueprint of what the solution should look like.
An architect can be either an application architect or an infrastructure architect. The infrastructure architect focuses on the networking issues—how clusters should be placed and how to secure the infrastructure. The application architect focuses on the application(s) and the design of these. The best result comes when these two types of architects collaborate closely during the design phase.
A designer is a person who takes the map from the architect and from it completes a working design based on, for instance, Microsoft or Java.
This person is probably a developer with a lot of experience in the field. He or she knows the technology very well in contrast to the architect.
There are also designers who design the infrastructure. These people determine what clustering solution to use, which server versions to implement, what security technology to use, and so on.