AlgoExpert – Systems Design Fundamentals Free Download. The foundational knowledge you need to ace the systems design interviews.
AlgoExpert – Systems Design Fundamentals Description
- 1 AlgoExpert – Systems Design Fundamentals Description
- 1.1 Introduction
- 1.2 What Are Design Fundamentals?
- 1.3 Client—Server Model
- 1.4 Network Protocols
- 1.5 Storage
- 1.6 Latency And Throughput
- 1.7 Availability
- 1.8 Caching
- 1.9 Proxies
- 1.10 Load Balancers
- 1.11 Hashing
- 1.12 Relational Databases
- 1.13 Key-Value Stores
- 1.14 Specialized Storage Paradigms
- 1.15 Replication And Sharding
- 1.16 Leader Election
- 1.17 Peer-To-Peer Networks
- 1.18 Polling And Streaming
- 1.19 Configuration
- 1.20 Rate Limiting
- 1.21 Logging And Monitoring
- 1.22 Publish/Subscribe Pattern
- 1.23 MapReduce
- 2 AlgoExpert – Systems Design Fundamentals Free Download
The foundational knowledge you need to ace the systems design interviews.
Where the coding interview serves primarily as an assessment of your problem-solving ability, the systems design interview is a test of your engineering knowledge veiled behind the facade of an open-ended design question. Welcome to the crucible of modern software.
What Are Design Fundamentals?
Building scalable, production-ready applications is both art and science. Science, in that it requires knowledge of many topics in computer engineering; art, in that it demands an eye for making smart design choices and piecing together the right technologies. Master both disciplines and you, too, can become a Systems Expert
A client is a thing that talks to servers. A server is a thing that talks to clients. The client—server model is a thing made up of a bunch of clients and servers talking to one another. And that, kids, is how the Internet works!
IP packets. TCP headers. HTTP requests. As daunting as they may seem, these low-level networking concepts are essential to understanding how machines in a system communicate with one another. And as we all know, proper communication is key for thriving relationships!
An entire video dedicated just to the storage of data? Yes! Multiple videos, in fact, as you’ll see later on when we discuss databases. As it turns out, information storage is an incredibly complex topic that is of vital importance to systems design. Don’t even think of skipping this lesson!
Latency And Throughput
If you’ve ever experienced lag in a video game, it was most likely due to a combination of high latency and low throughput. And lag sucks. It is therefore your Call of Duty to master these two concepts and to join the crusade against high ping.
Oops! This content is unavailable right now. Please try again later. Just kidding! SystemsExpert is a highly available system.
What do a punching bag and a cache have in common? They can both take a hit!
Often used by nefarious hackers to conceal their identity and obfuscate their location, these special intermediary servers boast many important real-life applications within the context of caching, access control, and censorship bypassing, amongst other things.
Relentlessly distributing network requests across multiple servers, these digital traffic cops act as watchful guardians for your system, ensuring that it operates at peak performance day and night.
Hashing? Like from hash tables? Should be simple enough, right? The good news is that, yes, hashing like from hash tables. The bad news is that, no, not simple enough. The video duration and thumbnail should be ominously indicative.
Tables and ACID. No, we’re not describing a drug lord’s desk, but rather referring to key properties of relational databases. There’s a lot of material to cover here, so hit the play button, kick back, and get ready to store tons of knowledge in the biggest database of them all: your brain.
One of the most commonly used NoSQL paradigms today, the key-value store bases its data model on the associative array data type. The result? A fast, flexible storage machine that resembles a hash table. That’s right folks, our favorite friendly neighborhood data structure strikes again!
Specialized Storage Paradigms
Yup. This is another video about storage. Nope. This isn’t the last video about storage.
Replication And Sharding
A system’s performance is often only as good as its database’s; optimize the latter, and watch as the former improves in tandem! On that note, in this video we’ll examine how data redundancy and data partitioning techniques can be used to enhance a system’s fault tolerance, throughput, and overall reliability.
Citizens in a society typically elect a leader by voting for their preferred candidate. But how do servers in a distributed system choose a master node? Via algorithms of course! This form of algorithmic democracy is known as “leader election”, though we personally think “algorithmocracy” sounds way cooler.
Equality for all. Sharing is caring. Unity makes strength. The more the merrier. Teamwork makes the dream work. Welcome to peer-to-peer networks!
Polling And Streaming
You can think of polling and streaming kind of like a classroom; sometimes students ask the teacher lots of questions, and other times they quiet down and listen attentively to the teacher’s lecture. Now fire up the video and get ready to stream; you won’t be able to poll here. Class is in session!
The config file is like the genome of a computer application; it stores parameters that define your system’s critical settings, much like your DNA stores the genes that define your physical characteristics. Unlike its biological counterpart though, the config file is easily editable. No gene therapy needed!
*Poke* *Poke* *Poke* *Po——* Too many pokes! You just got rate limited.
Logging And Monitoring
In order to properly understand and diagnose issues that crop up within a system, it’s critical to have mechanisms in place that create audit trails of various events that occur within said system. So go ahead, unleash your inner Orwell and go full Big Brother on your application.
Publish/Subscribe. Press/Tug. Produce/Consume. Push/Pull. Send/Receive. Throw/Catch. Thrust/Retrieve. Three of these can be used interchangeably in the context of systems design. The others cannot.
“MapReduce is a programming model for processing and generating big data sets with a parallel, distributed algorithm on a cluster.” Does Wikipedia’s nebulous definition confuse you? Of course, it does. In this video, we’ll map out this complex topic and reduce it to clear, easily understood concepts. See what we did there? ( ͡~ ͜ʖ ͡°)
AlgoExpert – Systems Design Fundamentals Free Download
Content From: https://www.algoexpert.io/systems/fundamentals