Back to System Design Course

System Design Course

System

It is the architecture or collection of technologies that interact with each other inorder to serve set of users to fulfill set of requirements.

System Design

It is the process of designing the elements of a system such as the architecture, modules and components, the different interfaces of those components and the data that goes through that system.

System Analysis

It is the process that decomposes a system into its component pieces for the purpose of defining how well those components interact to accomplish the set requirements.

Elements of a System

  • Architecture - This is the conceptual model that defines the structure, behavior and more views of a system. We can use flowcharts to represent and illustrate the architecture.
  • Modules - This are components that handle one specific tasks in a system. A combination of the modules make up the system.
  • Components - This provides a particular function or group of related functions. They are made up of modules.
  • Interfaces - This is the shared boundary across which the components of a the system exchange information and relate.
  • Data - This the management of the information and data flow.

Design methods

  • Architectural design: To describes the views, models, behaviour, and structure of the system.

  • Logical design: To represent the data flow, inputs and outputs of the system. Example: ER Diagrams (Entity Relationship Diagrams).

  • Physical design: Defined as

    1. How users add information to the system and how the system represents information back to the user.
    2. How the data is modelled and stored within the system.
    3. How data moves through the system, how data is validated, secured and/or transformed as it flows through and out of the system.

Lets see each component in detail in upcoming session.

Thumb rule for any System Design Problem

Requirement Clarification

screenshot of the app

Non Functional Requirements

  • Scalable( tens of thousands of videos per second)
  • Highly Performant(few ten of milliseconds to return total views count for a video)
  • Highly Available(survives hardware/network failures, no single point of failure)
  • Consistency
  • Cost(hardware, development, maintenance)

Distributed Systems and Its 3 principles

Any system which includes multiple components residing on multiple machines coordinating through some sort of mechanism like sending messages to achieve a common goal is a distributed system.

  1. Single responsibility principle
  2. No single point of failure principle
  3. No bottle-neck principle

screenshot of the app