Before you can get to define what web architecture is, first it is necessary to frame it properly. There are some roles related to architecture within the Information Technology industry, but basically we can do the following division:
- System architects: combine different hardware components (computers and other devices) with software elements (operating systems) to build systems capable of providing the resources needed by applications or services wich run on top of them.
- Data architects: design how information handled by applications is structured using databases.
- Storage Architects: design storage area networks (SAN) that allow to store all the information generated by applications running on different information systems.
- Networking Architects: plan and design communication networks that allow data exchange between different information systems.
- Software Architects: more typically known as software engineers, these professionals design and build applications that provide services needed by users of information systems or other applications.
It’s in the latter group where web architects fall, as a subgroup of software architects specialized in designing and building applications that are used through what is known as the Web, ie, using the HTTP protocol to communicate with users or with other web applications.
Sometimes this division is not so clear, especially in smaller projects where web architects may have to carry out tasks such as selection and sizing of hardware and software platforms used by web applications, forecasting and sizing of network traffic, providing the necessary resources to enable the application to assume that traffic volume, planning storage needs, ensuring availability through replication, clustering or other HA mechanisms, etc.
In any case, the skills that are genuinely specific to a web architect are:
- Design and implementation of application logic, ie the set of capabilities wich it provides, such as user-entered data processing, results calculation from different input data, algorithms designing and implementation, manipulation of information stored in databases, executing different actions as a result of compliance with some given conditions or event triggering, etc. Ie planning and designing of what later is implemented using one or more programming languages.
Data architects are more concerned with sizing and designing an implementation of a specific database engine, while web architects are more concerned with information nature and how it is organized into a database.
Designing of information architecture, ie, determine the real-world information that the application will be able to handle, design a conceptual model wich is an accurate reflection of the real world with its different entities and relationships between those entities, determine the data model wich best suits that conceptual model, implement the data model on a particular database engine and move the necessary information to it for the application proper functioning. Do not confuse all this with the work of a data architect, wich is to organize the information inside databases to make better use of available resources, ie, determine which volumes or which physical disks are assigned to that databases, how to replicate those volumes to achieve data redundancy, how to optimize memory use or I/O, etc.