System Design and System Architecture

Brandon Kang
Bootcamp
Published in
5 min readJun 10, 2023

What is system design? is it same as system architecture?
System design and system architecture are related concepts but they refer to different aspects of the overall system development process.

System Design
System design is the process of defining the architecture, components, modules, interfaces, and data for a system to satisfy specified requirements.

It involves translating the requirements of a system into a detailed design that can be implemented. System design focuses on the internal structure and behavior of the system, considering factors such as performance, scalability, reliability, maintainability, and security. It involves making decisions about the system’s components, their interactions, and their relationships to external systems or modules.

<System design has a broader meaning>

System Architecture
System architecture refers to the overall structure and organization of a system, including its components, their relationships, and the principles and guidelines governing their design and evolution. It provides a high-level view of the system, defining its major components, their responsibilities, and how they interact with each other and with external systems. System architecture is concerned with the system’s overall design philosophy, the allocation of functionality to different components, and the coordination and integration of those components.

In summary, system design is a more detailed and specific activity focused on designing the internal components and behavior of a system, while system architecture provides a broader perspective and focuses on the overall structure and organization of the system. System architecture sets the foundation for system design by defining the high-level structure and principles that guide the design process.

What are the system design procedures?
The procedures of system design typically involves the following steps:

  1. Requirements Analysis: Gather and analyze the requirements for the system. This includes understanding the system’s purpose, functionality, performance expectations, constraints, and user needs.
  2. System Architecture Design: Define the high-level structure and organization of the system. Identify the major components, their responsibilities, and how they interact with each other. Consider factors such as scalability, reliability, and security.
  3. Subsystem Design: Decompose the system into smaller subsystems or modules. Define the interfaces between the subsystems and specify the functionality and behavior of each subsystem.
  4. Component Design: Design the individual components or modules of the system. This involves specifying the internal structure, algorithms, and data structures of each component. Consider factors such as performance, maintainability, and reusability.
  5. Data Design: Design the data structures and databases required by the system. Define the data schema, relationships, and access mechanisms. Consider data storage, retrieval, security, and integrity.
  6. Interface Design: Define the interfaces between the system and external entities, such as users, other systems, or devices. Specify the input formats, output formats, and protocols for communication.
  7. Design Validation: Validate the system design against the requirements to ensure that all functional and non-functional requirements are met. Identify and address any design flaws or inconsistencies.
  8. Design Documentation: Create comprehensive documentation that describes the system design, including architecture diagrams, component specifications, data models, interface definitions, and design decisions.
  9. Design Review: Conduct a review of the system design with stakeholders, including developers, testers, and clients. Incorporate feedback and make necessary revisions to the design.
  10. Design Implementation: Translate the system design into actual code or physical components. Follow coding standards and best practices during the implementation process.

It’s important to note that the specific procedure of system design can vary depending on the development methodology, project requirements, and organizational practices. Agile methodologies, for example, may involve iterative and incremental design processes, while traditional waterfall methodologies may follow a more sequential approach.

System Architecture Examples

  1. Client-Server Architecture: In this architecture, the system is divided into two main components: the client, which makes requests for resources or services, and the server, which provides those resources or services. The client and server communicate over a network. This architecture is commonly used in web applications, where the client is a web browser and the server hosts the web application.
  2. Three-Tier Architecture: This architecture divides the system into three tiers or layers: presentation layer, business logic layer, and data storage layer. The presentation layer handles user interaction and interface, the business logic layer contains the core application logic, and the data storage layer manages the storage and retrieval of data. This architecture promotes separation of concerns and scalability.
  3. Microservices Architecture: This architecture decomposes a system into multiple small, independent services, each responsible for a specific business capability. These services communicate with each other through lightweight protocols such as REST or messaging queues. Microservices architecture allows for flexibility, scalability, and ease of deployment and management.
  4. Event-Driven Architecture: In this architecture, components of the system communicate by producing and consuming events. Events are notifications of important changes or actions within the system. Event-driven architecture enables loose coupling, scalability, and responsiveness. It is commonly used in systems that handle real-time data processing, event processing, or messaging.
  5. Peer-to-Peer (P2P) Architecture: This architecture enables decentralized communication and resource sharing among peers, without relying on a central server. Each peer can act as both a client and a server, sharing resources directly with other peers. P2P architecture is commonly used in file sharing applications, decentralized communication systems, and blockchain networks.
Examples show how end users relate to the system and how the components within the system interact.
Sometimes, through various diagrams in UML, the function and sequence of the system are schematized.

These are just a few examples of system architectures, and there are many other variations and combinations depending on the specific requirements and context of a system. Architects select the most appropriate architecture based on factors such as scalability, performance, security, maintainability, and the specific needs of the application or system being developed.

--

--

Brandon Kang
Bootcamp

This blog is for personal study purposes, not for the company I work for. I LOVE Cloud, DevOps and Open Source.