System Design

There's a total of 5 notes.




Mon, Oct 12, 2020

Preparation for a Software Engineer Interview

This is my interview preparation plan for a software engineering role. I share a summary of my preparation, a plan of problems to tackle for coding interviews, the topics to study for system design interviews, and the questions to prepare for the behavioral section.
Sat, Aug 8, 2020

Back of the envelope calculations

When designing a system, it's important to consider the limitations of the technologies chosen. Making some approximate calculations when the system is designed helps us decide on the tradeoffs of the different approaches. These approximations include: This article has a table with latency comparison numbers, common numbers used in system design calculations, and some challenges to put all of this info into practice.
Fri, Feb 28, 2020

Cassandra

Cassandra is a highly scalable, distributed NoSQL (non-relational) database management system designed for handling large amounts of data across multiple commodity servers. This article covers key design features of Cassandra, such as the usage of consistent hashing, the write pattern to a write-ahead log and a memtable, the read pattern from the memtable and from SSTables, and, most importantly, some examples of data modeling for different types of queries.
Mon, Jan 8, 2018

Partitioning

Data partitioning refers to the process of dividing a system's data into smaller, more manageable subsets, which are distributed across multiple storage locations or nodes. This article covers several strategies for partitioning, including random partitioning, by hash key, by range, and a hybrid approach for skewed workloads. It also discusses strategies to rebalance partitions, whether there's a static or dynamic number of partitions.
Tue, Jan 2, 2018

Non Functional Requirements

Non-functional requirements refer to quality attributes or system characteristics that describe how well a software system or solution performs or behaves. This article covers well-known non-functional requirements such as reliability, availability, scalability, performance, and durability.