Search Results


10 matches found for 'system design'

Quick Numbers in Software Engineering Cheatsheet

Preface This article is a cheatsheet and a collection of tips/tricks for doing back of the envelope calculations. Numbers Data Types to Bytes Note: keep in mind that these are general estimates.


Design Concepts

... article, I want to go over some fundamental design concepts that are useful for coming up with system design. Requirements Functional Requirements Describes specific behaviors i.


CAP Patterns

The CAP Theorem dictates that only two of its three characteristics can be guaranteed at any given time. Intro to CAP Consistency Every read will be based off of the latest write Availability Every request will be given a response, although the response data might be stale Partition Tolerance It can handle network partitions or network failures MTV's The Real World If your service is in the cloud, the P in Partitioning has to always be accounted for.


Asynchrony vs. Multithreading

Asynchrony Asynchronous programming, also known as event-driven programming, is built on foundations of Futures/promises. The basic idea is that instead of having a thread wait for a blocked call to finish (i.


Forward Proxy and Reverse Proxy

Proxies have a wide variety of use cases with great benefits. In this article, I go over two variations of proxies. Forward Proxy One day, in a school classroom setting, a teacher wants an anonymous survey filled out by all of the students in the classroom.


Data stores in Software Architectures

... to store your data. In this article we'll walk through some examples of data storage in common system designs. Reminder: There is no single best storage choice and they may vary heavily depending on things such as access patterns and scale.


What is DDD? What is CQRS?

Domain Driven Design DDD is an approach to developing software systems that is large and complex, and has ever-changing business rules. DDD captures the sweet spot between the business knowledge and the code.


Distributed scaling with Relational Databases

... unfortunately, is the material that is neglected more often than not, missing from a lot of system design explanations that talk only about general purpose sharding algorithms and replication methods.


Software Methodologies

... to each one. For example, having two weeks to gather requirements and documents, two weeks for system design, and four weeks for implementation might sound like a game plan using the traditional Waterfall flow.


Big Data Processing: Batching vs. Streaming

Intro In data processing, we often have to work with large amounts of data. The way in which this data is gathered comes in a few variants: batching, where we aggregate a collection of data (e.g., by hourly time), streaming for data that needs to be processed in real-time, and a unified variant which simply does not distinguish the technical difference between batching and streaming, allowing you to programmatically use the same API for both.