What is Latency?

Latency refers to the time it takes for a request to travel from its point of origin to its destination and receive a response.

  • Latency represents the delay between an action and its corresponding reaction
  • It can be measured in various units like seconds, milliseconds, and nanoseconds depending on the system and application.

Latency involves so many things such as processing time, time to travel over the network between components, and queuing time.

  • Round Trip Time: This includes the time taken for the request to travel to the server, processing time at the server, and the response time back to the sender.
  • Different Components: Processing time, transmission time (over network or between components), queueing time (waiting in line for processing), and even human reaction time can all contribue to overall latency.

Guide to System Design for Freshers

Starting your journey into the system design domain can be exciting and difficult, especially for freshers. In this article, we’ll provide a simplified model of system design aimed specifically at freshers/new grads. Whether you’re a new grad or transitioning into a tech career, understanding system design fundamentals is crucial for building scalable, efficient, and reliable software solutions.

System Design for Freshers

So, let’s start with the guide for system design in a way that’s easy to learn and apply.

Important Topics of System Design for Freshers

  • What is System Design?
  • How to Design a System?
  • System Design Life Cycle
  • SOLID Principles
  • What is Monolith Architecture?
  • What is Microservices Architecture?
  • Content Delivery Network (CDN)
  • Object-Oriented Programming(OOP) for System Design
  • Object-Oriented Analysis and Design(OOAD)
  • What is High-Level Design(HLD)?
  • What is Availability?
  • What is Scalability?
  • What is Reliability?
  • CAP Theorem
  • What is Latency?
  • What is a Load Balancer?
  • SQL vs NoSQL: Which Database to Choose in System Design?
  • What is Caching?
  • What is Low-Level Design(LLD)?
  • Unified Modeling Language(UML)
    • Structural UML Diagrams
    • Behavioral UML Diagrams
  • Design Patterns
  • Design a URL Shortening Service (TinyURL)

Similar Reads

1. What is 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 user requirements into a detailed blueprint that guides the implementation phase. The goal is to create a well-organized and efficient structure that meets the intended purpose while considering factors like scalability, maintainability, and performance....

2. How to Design a System?

System design is the process of designing the architecture and components of a software system to meet specific business requirements. The process involves defining the system’s architecture, components, modules, and interfaces, and identifying the technologies and tools that will be used to implement the system. Here are some steps to get started with system design:...

3. System Design Life Cycle

The System Design Life Cycle (SDLC) is a comprehensive process that outlines the steps involved in designing and developing a system, be it a software application, hardware solution, or an integrated system combining both. The System Design Life Cycle (SDLC) involves following phases:...

4. SOLID Principles

The SOLID principles are a set of five design principles in object-oriented programming intended to make software designs more understandable, flexible, and maintainable. This principle is an acronym of the five principles which are given below:...

5. What is Monolith Architecture?

Monolithic architecture is a traditional software architecture style where all the components of a software application are tightly integrated into a single, unified executable or deployable unit. In a monolithic architecture, the entire application, including its user interface, business logic, and data access layers, is developed, deployed, and scaled as a single unit....

6. What is Microservices Architecture?

Microservices architecture is a software development approach where a large application is decomposed into smaller, independent services that are loosely coupled and independently deployable. Each service is responsible for a specific business function and communicates with other services through well-defined APIs. Key characteristics of microservices architecture include:...

7. Content Delivery Network (CDN)

A Content Delivery Network (CDN) is a distributed network of servers that work together to deliver content (like images, videos, and static files) to users faster and more efficiently....

8. Object-Oriented Programming(OOP) for System Design

Object-oriented programming (OOP) is important for system design because it promotes modular, scalable, and maintainable code. By organizing code into objects with defined behaviors and interactions, OOP facilitates the creation of complex systems that are easier to understand, extend, and modify....

9. Object-Oriented Analysis and Design(OOAD)

Object-Oriented Analysis and Design (OOAD) is a software engineering methodology that employs object-oriented principles to model and design complex systems. It involves analyzing the problem domain, representing it using objects and their interactions, and then designing a modular and scalable solution. It helps create systems that are easier to understand, maintain, and extend by organizing functionality into reusable and interconnected components....

10. What is High-Level Design(HLD)?

High-level design or HLD refers to the overall system, a design that consists description of the system architecture and design and is a generic system design that includes:...

11. What is Availability?

Availability refers to the readiness and accessibility of a system or service to users at any given time. It measures the percentage of time a system remains operational and usable. High availability ensures that users can access the system without significant interruptions or downtime, typically achieved through redundancy, fault tolerance, and efficient recovery mechanisms....

12. What is Scalability?

Scalability refers to the ability of a system to handle increasing amounts of workload or requests without sacrificing performance or incurring excessive costs....

13. What is Reliability?

Reliability in system design refers to the ability of a system to consistently perform its intended functions under expected conditions over a specified period. It encompasses several key aspects:...

14. CAP Theorem

The three letters in CAP refer to three desirable properties of distributed systems with replicated data: consistency, availability and partition tolerance. The CAP theorem states that it is not possible to guarantee all three of the desirable properties – consistency, availability, and partition tolerance at the same time in a distributed system with data replication. Whereas in networked shared-data system or distributed system can share/have only two of the three desired characteristics for a database....

15. What is Latency?

Latency refers to the time it takes for a request to travel from its point of origin to its destination and receive a response....

16. What is a Load Balancer?

A load balancer works as a “traffic cop” sitting in front of your server and routing client requests across all servers. It simply distributes the set of requested operations (database write requests, cache queries) effectively across multiple servers and ensures that no single server bears too many requests that lead to degrading the overall performance of the application. A load balancer can be a physical device or a virtualized instance running on specialized hardware or a software process....

17. SQL vs NoSQL: Which Database to Choose in System Design?

Let us compare SQL and NoSQL on different domains:...

18. What is Caching?

Caching in system design involves storing frequently accessed data or computations in a temporary storage location, called a cache, to reduce access latency and improve system performance. When a requested piece of data or computation result is found in the cache, it can be served directly to the user or application without the need to retrieve it from the original data source or perform expensive computations again....

19. What is Low-Level Design(LLD)?

LLD, or Low-Level Design, is a phase in the software development process where detailed system components and their interactions are specified. It involves converting the high-level design into a more detailed blueprint, addressing specific algorithms, data structures, and interfaces....

20. Unified Modeling Language(UML)

Unified Modeling Language (UML) is a general-purpose modeling language. The main aim of UML is to define a standard way to visualize the way a system has been designed. It is quite similar to blueprints used in other fields of engineering. UML is not a programming language, it is rather a visual language....

1. Structural UML Diagrams

Class Diagram: Class diagrams are the main building blocks of every object-oriented method. The class diagram can be used to show the classes, relationships, interface, association, and collaboration. UML is standardized in class diagrams. Package Diagram: A package diagram is mainly used to represent the organization and the structure of a system in the form of packages. A package is used as a container to organize the elements present in the system into a more manageable unit. Object Diagram: It can be referred to as a screenshot of the instances in a system and the relationship that exists between them. Since object diagrams depict behaviour when objects have been instantiated, we are able to study the behavior of the system at a particular instant. Component Diagram: They are used to represent how the physical components in a system have been organized. We use them for modelling implementation details. Component Diagrams depict the structural relationship between software system elements and help us in understanding if functional requirements have been covered by planned development.  Composite structure diagram: A composite structure diagram represents relationship between parts and their configuration which determine how the classifier (class, a component, or a deployment node) behaves. They represent internal structure of a structured classifier making the use of parts, ports, and connectors.  Deployment diagram: They are used to represent system hardware and its software. It tells us what hardware components exist and what software components run on them. We illustrate system architecture as distribution of software artifacts over distributed targets....

2. Behavioral UML Diagrams

State Machine Diagrams: They are used to represent the condition of the system or part of the system at finite instances of time. It’s a behavioral diagram and it represents the behavior using finite state transitions.  Activity Diagrams: We use Activity Diagrams to illustrate the flow of control in a system. We can also use an activity diagram to refer to the steps involved in the execution of a use case. We model sequential and concurrent activities using activity diagrams. So, we basically depict workflows visually using an activity diagram. Use Case Diagrams: Use Case Diagrams are used to depict the functionality of a system or a part of a system. They are widely used to illustrate the functional requirements of the system and its interaction with external agents(actors). A use case is basically a diagram representing different scenarios where the system can be used.  Sequence Diagram: A sequence diagram simply depicts interaction between objects in a sequential order i.e. the order in which these interactions take place. We can also use the terms event diagrams or event scenarios to refer to a sequence diagram. Sequence diagrams describe how and in what order the objects in a system function.  Communication Diagram: It is used to show sequenced messages exchanged between objects. A communication diagram focuses primarily on objects and their relationships.  Time Sequence Diagram: They are a special form of Sequence diagrams which are used to depict the behavior of objects over a time frame. We use them to show time and duration constraints which govern changes in states and behavior of objects. Interaction Overview Diagram: An Interaction Overview Diagram models a sequence of actions and helps us simplify complex interactions into simpler occurrences. It is a mixture of activity and sequence diagrams....

21. Design Patterns

Design patterns are basically defined as reusable solutions to the common problems that arise during software design and development. They are general templates or best practices that guide developers in creating well-structured, maintainable, and efficient code. They help in addressing the recurring issues in software design and provide a shared vocabulary for developers to communicate and collaborate effectively....

22. Design a URL Shortening Service (TinyURL)

URL shortening service allows users to enter a long URL, and then it returns a shorter, unique URL. These services generate a short URL if the user gives a long URL and if the user gives a short URL then it returns the original long URL....