Back to all AlgoDaily courses

    Fundamentals of Systems Design

    Systems design is the process by which we as engineers make decisions regarding the elements of a complex application. These system elements-- such as the data models and structures, overall architecture, modules and components, and the different interfaces of those components-- have to be carefully contemplated to ensure speed, reliability, and stability down the line.

    Section Menu

    How do I use this section?

    1. LESSON

    A Systems Design Interview Primer For New Engineers

    Objective: In this lesson, we'll introduce systems design interviews, and focus on these outcomes: You'll learn what systems design is. We'll walk you through the various concepts you should know to design highly reliable and performant systems. We'll show you how to get better **at answe...

    2. LESSON

    How to Ace Systems Design Interviews: Tips and Strategies

    Systems design interviews are not just another test; they are a golden opportunity to showcase your talent and potential. Assessments focus on analyzing complex scenarios and designing robust, scalable systems to handle them. Mastering systems design is not only about getting that job—it's about advancing your career and becom...

    3. LESSON

    From Byte to Gigabyte to Petabyte: Understanding Data Size

    In this lesson, we will learn about data sizes, with a focus on following key points: How data is represented in computers. Why is it important to know about data sizes? Data sizes in computer systems. You have probably encountered terms professionally or in day to day life like "4GB...

    4. LESSON

    Introduction to Computer Networking and Protocols

    API-driven business strategies are the hype today, and designing and maintaining web APIs is a task that many developers face in one way or another. To design web APIs, you need to know what options you have in terms of technology. This is where the knowledge of distributed computing concepts such as REST, RPC, gRPC, and GraphQL comes in handy. T...

    5. LESSON

    REST, RPC, and Distributed API Design

    Let's learn about client-server interaction over HTTP in more detail: The client sends to the server a request that is basically a text document that consists of: A verb (such as GET or POST ) that defines what action the server should perform, Headers that define additional information about the request, (Optional)...

    6. LESSON

    Metrics: Latency, CPU, Memory, Error Rates

    What are metrics and why do they matter? Generally speaking, metrics are simply quantitative measures used for comparing, tracking, and understanding the performance of a specific process. They are highly beneficial because they help us evaluate our progress and overall efficiency, or simply put – tell us where our problems are so that we can...

    7. LESSON

    Monoliths vs. Microservices for Junior Engineers

    The monolith versus microservices architecture debate has been around for years. Some claim that a monolith architecture is the best option if we're working from scratch. Others believe that the advantages of microservices outweigh the initial hassle of creating multiple servers. In this tutorial, we'll be discussing these architectures in de...

    8. LESSON

    Microservices Interview Questions

    What is a Microservice architecture? A microservices architecture is a service-oriented architecture used to build large applications. The complete picture is a combination of small "services", in which all the modules are independent of each other, but deliver the expected aggregate functionality to the user together. This is done via da...

    9. LESSON

    What is Caching? An Introduction to Strategies

    The Definition of Caching Caching is the process of using a system store to temporarily hold data for easy retrieval. It often serves as a way to optimize getting frequently-read data, reducing the amount of computation required to serve a high number of reads. Before diving deeper into the concept, let’s get an overview of the different laye...

    10. LESSON

    Cookie vs. Token Authentication

    An introduction authentication When dealing with sensitive information or paywalled content in an application, having safe client-server communication is key. Certain things require limited access. This is usually achieved by passing some credentials, and we can refer to this use of credentialing as "authentication". More precisely, we can...

    11. LESSON

    Feature: Software Architectural Patterns & Design Structures

    This lesson was originally featured at Software Architectural Patterns & Design Structures. It has been republished here with permission from Nishant Sharma. <img src="https://miro.medium.com/max/2110/0*SFXaTyXZhVqLeL4v.jpg...

    12. LESSON

    What is a Load Balancer? An Introduction

    The Load Balancer: Event Coordinator Extraordinaire The Event Planning Analogy Think of managing a large-scale coding event as a fun puzzle. You have a whopping 1,000 participants and several halls that can each accommodate 100 eager coders. How do you make sure everyone has a seat without overwhelming any single space? Well, you would...

    13. LESSON

    What is MapReduce and How Does It Work?

    The act of processing data, which requires a lot of memory consumption, needs many physical machines to enable it. That is not always possible in the real world. Even the largest data centers in the early 2000s, despite having huge machine setups, still had the question of how the data could be split across these machines to conduct computatio...

    14. LESSON

    Potential Bottlenecks in Software Performance Testing

    In this lesson, we will learn about potential bottlenecks in performance testing, with a focus on following key points: How do we test the performance of programs? Why is it important to check for bottlenecks during performance testing? Common performance bottlenecks that should be taken care of. </div...

    15. LESSON

    Pub-Sub and Event Driven Architecture (EDA)

    What's On The Agenda? In today's lesson, we'll delve into the fascinating world of Event-Driven Architecture (EDA) and its most commonly used messaging pattern, the Publish/Subscribe model (Pub/Sub). We'll cover: Why Event-Driven Architecture is crucial in modern workflows How it enables seamless, real-t...

    16. LESSON

    What Is Cloud Computing? What to Know In Interviews

    Objective: Dive deep into the world of cloud computing! By the end of this guide, you'll not only grasp the essence of cloud computing but also confidently discuss its nuances in interviews, workplace discussions, or even casual tech debates with friends. **Here's what we're diving i...

    17. LESSON

    How do Routers, Switches, and Hubs work?

    Computer networks and their physical connections are the fundamentals to getting to know in-depth how all network services and abstractions work. There are different types of network devices and although they might seem similar, they are still very different in what they do. In this tutorial, we will get to know in-depth the three most used networ...

    18. LESSON

    What is a Proxy Server?

    Demystifying Proxy Servers: Your Guardian of the Internet Why the Need for Proxy Servers? In this age of interconnectivity, the Internet is not just a global village, but a massive metropolis connecting every corner of the earth. It gives us social media, real-time communication, and a treasure trove of information. Yet, as with any bustlin...

    19. LESSON

    Best Cloud Platforms for Software Development

    Avoiding digital transformation is not an option in the modern world, and it goes especially for the businesses trying to follow all the new digital trends. Cloud computing is crucial for any of those businesses, and it has become much more significant in the past few years. Using such cloud technology, developers can design and create new applic...

    20. LESSON

    Cloud Computing Pricing Analysis and Comparisons

    Companies today are soaring high, navigating the limitless sky of cloud computing, leaving behind the grounded world of on-premises data. Why? It's all about growth, agility, and, importantly, cutting down on expenses. Imagine your data as a flock of birds, now free to fly without the constraints...