-
How To Think Like A Software Architect (Without Being One)
You don’t need to be an architect to think like one – and doing so makes you a better developer, produces more effective systems, and accelerates your career. Architectural thinking is a learnable skill composed of three competencies: translating business drivers into architecture characteristics, expanding your technical breadth, and rigorously analyzing trade-offs. Mastering these three…
-
Rendezvous Hashing – alternative to Consistent Hashing
While its counter part “Consistent Hashing” first appeared on a May 1997 paper and is considered to be a conventional wisdom to use today Rendezvous hashing was created just one year earlier in the paper in 1996. Works well for load balancers, caches, and cdns mainly to distribute loads randomly when new servers are added…
-
What is Consistent Hashing?
For horizontal scaling solutions, data are spread across many different servers vs in vertical scaling solutions, the data is stored in one big server. Horizontal scaling requires a way to identify where the data can be stored and then searched after it is stored. fn(key) mod N – where “key” is the data key name…
-
Raft – the most popular distributed database consensus algorithm
etcd CockroachDB TiKV InFluxDB Consul HashiCorp Kafka Dgraph It may be worthwhile to look into Raft as some of these databases are able to claim fault tolerance, high availability due to using Raft. It is also worthwhile to see the short comings of Raft as the system can go into error state if there are…
-
Do I Need Kubernetes?
Intro k(8)s – k(ubernete)s – 8 letters – A cluster management software that handles deployment of softwares with a lot of built in features Started as a project called Borg by Google 2003-2004, then open sourced it and called k8s. scalability fault tolerance high availability/self healing/rollbacks microservice oriented architectures disaster recoveries (GKE version 1.24+ container…