Components of System Design | System Design Tutorials | Part 2 | 2020

Part 2 of Yogita Sharma System Design Tutorial.


Components are the basic building blocks of system and consist of two types:

  1. Logical Entities
  2. Tangible Entities

Logical Entities:

  • At the core of logical entities is data, which is stored in databases. 
  • Users can interact with databases via applications,
  • Typical operations are create, read, update, delete (CRUD)
  • Applications and databases use communication protocols, which are also logical entities
  • Communication protocols such as HTTP, TCP/IP over networks
  • The presentation (front-end) application communicates to the server (on a separate machine) via protocols such as HTTP, RPC, APIs
  • Some systems, such as logging systems, do not have presentation layer
  • All of these logical entities run on computers, often on a machine run by a cloud provider
  • Examples of logical entities include:
    • Data
    • Database
    • Application
    • Cache
    • Message Queues
    • Infra
    • Communication

Tangible Entities:
  • Examples of logical tangible include
    • Text, images, videos
    • MongoDB, MySQL, Cassandra
    • Java, Golang, Python, React
    • Redis, MemCache
    • Kafka, RabbitMQ
    • AWS, Google Cloud Platform, Azure
    • APIs, RPCs, Messages
  • Cloud providers instantiate tangible entities listed above in order to provide a working environment for businesses to provide services to other businesses or users 
  • A simple system setup is shown below:
Courtesy of  vasanthk Gist

  • The Request could come from the user via front-end app on mobile, laptop, etc via browser or dedicated application.
  • Physical computers provisioned by cloud providers run the load balancers, web servers, and databases that data and respond to the user.
  • The physical and tangible entities in the diagram above as often referred to as "infrastructure".


No comments:

Post a Comment