Sign in

Passionate in distributed systems, C++ things. Follow me on twitter @melodiessim

Connections are everywhere! To communicate between 2 parties, we need connections. We use them in modern web stack and apps: from server-client to server-database interactions. But why don't we hear about it often?

Abstraction! Details on connections are often abstracted away (and for good reason!). However, if you are planning…


The goal of using RPC is to make communication between the client and server seem like a regular procedural call.

Photo by Vladislav Klapin on Unsplash

I was first introduced to Remote Procedural Call (RPC) while working on a software engineering entry task back in December. I soon learned that RPC is an essential component employed in many of my company’s distributed infrastructures. As a new intern, I didn’t fully understand the benefits RPC brings to…


How are distributed consensus algorithms such as Raft implemented in the real world despite the FLP Theorem?

Photo by Guilherme Teixeira on Unsplash

FLP (Fischer, Lynch, and Paterson) Impossibility is one of the most fundamental results in distributed systems and has been taught in many Computing undergraduate courses. Given the scale of data and computation, distributed systems (scaling services with more machines) are essentially the default pattern used to build scalable system infrastructures…


One more interesting model is Strong Eventual Consistency (guaranteed by CRDT!) :)


Do you really understand how replication works?

Photo by Austin Neill on Unsplash

Why should you care about replication?

A very common tradeoff pattern in distributed systems today is presented as follows: to scale up services and achieve high performance, a common strategy used is to shard data horizontally across many servers. Having many servers mean the probability of failures has increased proportionately, and we can no longer avoid…


Lessons learned from the distributed file system that many Google applications like BigTable, MapReduce are built on top of.

Photo by Robert Katzki on Unsplash

This article summarises the main lessons learnt from The Google File System (GFS) paper published in 2003 [1].

What is GFS?

Google File System (GFS) is a scalable distributed file system for large distributed data-intensive applications. It provides fault tolerance even with inexpensive commodity hardware, and delivers high average performance to a large…


Lessons learned from the distributed large-scale computation pipeline that Google built.

Photo by Rajeshwar Bachu on Unsplash

What is MapReduce?

MapReduce is an interface that enables automatic parallelization and distribution of large-scale computation while abstracting over “the messy details of parallelization, fault-tolerance, data distribution, and load balancing” [1].

As the name suggests, MapReduce is inspired by the map and reduce functions present in many functional languages. …


Key considerations and strategies to build a highly available cache solution for business use cases

Photo by Elena Mozhvilo on Unsplash

Memcached is a well-known, simple, in-memory cache solution and is used by several large companies such as Facebook, Twitter, and Pinterest. The main use case for Memcached is look-aside caching, to reduce the load on the database. …


Banner image from [1].

What is Memcached

Memcached is a free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load. [1]

Memcached is known for its simplicity as a distributed cache. Its simple design promotes not only quick deployment, ease…


Understanding Swift’s protocols and how to apply them to improve code performance and modular flexibility

Photo by Brooke Lark on Unsplash

Introduction

At the heart of Swift’s design are two powerful programming paradigms: protocol-oriented programming (POP) and class-based inheritance. POP helps solve some of the problems arising from class-based inheritance such as intrusive inheritance, implicit sharing, and lost-type relationships.

POP also improves model flexibility with new features such as retroactive modeling using…

Melodies Sim

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store