The CNCF announced the graduation of the etcd project - a distributed key-value store used by many open source projects and companies. Originally written at CoreOS, etcd was accepted into the CNCF incubation stage in 2018 and graduated in November 2020.
etcd was created at CoreOS in 2013 and open sourced in 2014. CoreOS shipped the first stable version of etcd in 2015. RedHat acquired CoreOS in 2018, and later that year they contributed etcd to the CNCF where it was accepted as an incubating project. etcd went through the standard graduation process at CNCF which includes quality metrics, Jepsen testing, security audits, governance protocols and adopting the CNCF code of conduct.
As part of the graduation due-diligence requirements, etcd met the required quality metrics for issue and PR management, CI, test coverage, and the CII Best Practices Badge. Jepsen tested etcd for consistency guarantees on v3.4.3 earlier this year, and the results were favorable, with some suggested fixes. A third-party security audit - also part of the requirements - performed in July 2020 against the same version, did not find any "significant issues in the core components of etcd". However, "one high severity issue was found in the etcd gateway, which the team addressed with fixes and backported into etcd supported releases" - notes the press release.
Back in 2013, Brandon Philips, Alex Polvi and Xiang Li - the creators of etcd - looked at Google Chubby and Apache Zookeeper as alternatives to writing their own distributed key-value store. None of the existing projects sufficed for their use-cases so they wrote etcd which was initially used by CoreOS's internal container orchestration framework. According to Polvi, etcd was based on the Chubby paper. After gradual adoption by other open source projects, etcd's community expanded further when the Kubernetes team chose it as its primary key-value store.
etcd uses the Raft consensus algorithm for leader election and for selecting which etcd node (the leader) should handle client requests. Implementations of Raft are used by many other tools. The typical cluster deployment has 3-5 nodes for high-availability, and uses a write-ahead log for persistence. The transport layer uses gRPC for communication. Communication can be secured by using TLS.
Some of the current projects that use etcd are Kubernetes, Cloud Foundry, OpenStack, M3 and Rook. The list of well-known companies that use etcd in production includes Alibaba, Amazon, Baidu, Cisco, EMC, Google, Huawei, IBM, NTT, Red Hat, Uber, Verizon, and Yandex. A comparison with similar tools is available in the etcd GitHub repo. The latest etcd version as of this writing is 3.4.0, and the source code is available on GitHub.