System Design

There's a total of 5 articles.




Preparation for a Software Engineer interview

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 a system design interviews and the questions to prepare for the behavioral section.
Me
Published on Mon, Oct 12, 2020
Last modified on Fri, Nov 22, 2024
5650 words - Page Source

Back of the envelope calculations

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 help 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 these info into practice.
Me
Published on Sat, Aug 8, 2020
Last modified on Sun, Nov 10, 2024
1128 words - Page Source

Cassandra

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 finally and most important, some examples about data modeling for different types of queries.
Me
Published on Fri, Feb 28, 2020
Last modified on Fri, Nov 22, 2024
768 words - Page Source

Partitioning

Partitioning
Image source: https://www.enjoyalgorithms.com/blog/data-partitioning-system-design-concept

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 some strategies for partitioning including random partitioning, by hash key, by range and a hybrid approach for skewed workloads. We also see strategies to rebalance partitions if there's a static or dynamic number of partitions.
Me
Published on Mon, Jan 8, 2018
Last modified on Sun, Nov 10, 2024
511 words - Page Source

Non Functional Requirements

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.
Me
Published on Tue, Jan 2, 2018
Last modified on Sun, Jun 16, 2024
241 words - Page Source