Design goals: maintainability, flexibility, portability

Architectural Style vs. Architecture

Client-Server Architecture

Often used in the design of database systems

Portability High performance Reliability Scalability Flexibility

Functions performed by the client

Functions performed by the server

image.png

Problems

image.png

Example: a database must process queries from application 1 and should be able to send notifications to application 2 when data in the database has changed

Peer to peer Architectural Style

image.png

Layered Architectural Style

image.png

Closed architecture (opaque layering)

A layered architecture is closed, if each layer can only call operations from the layer directly below (also called “direct addressing”)

image.png

Design goals: maintainability, flexibility, portability

more portable → low coupling , but potentially a bottleneck

Open architecture (transparent layering)

A layered architecture is open, if a layer can call operations from any layer below (also called “indirect addressing”)

image.png

Design goals: high performance, real-time operations support

more efficient → high coupling :(

3 layered architectural style

Often used for the development of web applications

Example

  1. The web browser implements the user interface
  2. The web server serves requests from the web browser
  3. The database manages and provides access to the persistent data

4 layered architectural style

Hierarchically ordered layers

Example

  1. A web browser provides the user interface
  2. A web server serves static HTML requests
  3. An application server provides session management (for example the contents of an electronic shopping cart) and processes dynamic HTML requests
  4. A database manages and provides access to the persistent data

→ If these layers reside on different hardware nodes, then it is a 4 tier architecture

Layer vs. tier