Michael Hausenblas on July 14, 2017
Liveblog by Linda Xie (@lindeexie)
Michael Hausenblas is a developer advocate for OpenShift and Kubernetes Hat Red Hat. His background is in large-scale data processing and container orchestration. He also contributes to open source software, mainly using Go.
There are any fallacies in distributed computing. This stuff will bite you sooner or later. For each fallacy, I address the problem with a general solution and a Go specific solution.
1. The network is reliable
In general: timeouts, error handling, retry logic.
Go language &stdlib:
Beyond stdlib:
2. Latency is zero
In general: cancelation, partial results
Go language & stdlib:
Beyond stdlib:
3. Bandwidth is infinite
In general: CDNs, protobuf rather than JSON
Go: golang/protobuf
4. The network is secure
In general: SSL/TLS, digital signatures, checksums
For go: crypto/tls, crypto/rsa, crypto/sha512, crypto/x509
Beyond stdlib:
5. Topology doesn't change
In general: DNS vs. IP addresses, TTL
In Go: be aware of the pure Go resolver
6. There is one administrator
In general: auditing, role-based access, immutability
Go language & stdlib:
Beyond stdlib:
7. Transport cost is zero
In general: cost of (un)marshalling
In Go stdlib:
Beyond stdlib:
8. The network is homogeneous
In general: interoperability on all levels.
In Go: broad and well-tested stdlib
Beyond stdlib:
github.com/prometheus/client_golang/prometheus
I'll be covering five open source distributed systems.
All stats taken on 2017-07-06:
Used cloc to generate raw stats:
Kubernetes
Kubernetes.io is a container orchestration platform.
Fallacies covered:
Architecture overview:
Consul
Consul is a tool for service discovery and configuration
Fallacies covered:
Architecture overview:
etcd
etcd is a distributed, reliable key-value store
Fallacies covered:
CockroachDB 23.4
CockroachDB is a distributed SQL database
Fallacies covered:
Architecture overview:
Minio
Minio is an object storage server compatible with Amazon S3 APIs
gateway
for multi-cloud (Azure, GCS, S3) accessFallacies covered:
Architecture overview:
Some observations from the code reviews carried out in order to prepare this talk:
Take home message: be aware of the 8 fallacies and how to avoid them!
For complete slides: http://go-talks.appspot.com/github.com/mhausenblas/fallacies-of-distributed-gomputing/main.slide.