|
| 1 | +== etcd Project Proposal |
| 2 | + |
| 3 | +*Name of Project*: etcd |
| 4 | + |
| 5 | +*Description*: |
| 6 | + |
| 7 | +etcd is a consistent distributed key-value store, designed to hold small |
| 8 | +amounts of data that can fit entirely in memory (although etcd still writes |
| 9 | +to disk for durability) and mainly used as a separate coordination service |
| 10 | +for other distributed systems like Kubernetes. A typical etcd cluster is |
| 11 | +distributed over 3 to 5 nodes for high availability, while it prioritizes |
| 12 | +consistency and partition tolerance. Which means, it provides one logical |
| 13 | +cluster view of many physical servers. So long as a majority of cluster is up, |
| 14 | +etcd continues to work even under machine failures. This redundancy provides |
| 15 | +fault tolerance. |
| 16 | + |
| 17 | +etcd server implements Raft consensus algorithm for data replication. Raft is |
| 18 | +a leader-based protocol. Data is replicated from leader to follower; follower |
| 19 | +forwards proposals to leader, and leader decides what to commit or not. Leader |
| 20 | +persists and replicates an entry once it has been agreed by the quorum of |
| 21 | +cluster. Therefore, adding more members to cluster would lead to more |
| 22 | +communication overhead and limited write scalability. Write (and consistent |
| 23 | +read) throughput is limited to durable write throughput of a single leader |
| 24 | +node. |
| 25 | + |
| 26 | +The underlying storage layer for Raft log is write-ahead log (WAL). |
| 27 | +Committed entries are written out to disk, so they can be replayed on restart. |
| 28 | +etcd uses gRPC for transport layer. Client employs HTTP/2 Ping for server |
| 29 | +health checking, and implements automatic failover under faulty networks. |
| 30 | + |
| 31 | +*Sponsor / Advisor from TOC*: Brian Grant <briangrant@google.com> |
| 32 | + |
| 33 | +*Unique Identifier*: etcd |
| 34 | + |
| 35 | +*License*: https://github.com/coreos/etcd/blob/master/LICENSE[Apache License 2.0] |
| 36 | + |
| 37 | +*Maturity Level*: Incubating |
| 38 | + |
| 39 | +*Source control repositories*: https://github.com/etcd-io (to be moved |
| 40 | +from https://github.com/coreos/etcd/issues/9965[August 27, 2018]) |
| 41 | + |
| 42 | +*Issue tracker*: https://github.com/coreos/etcd/issues |
| 43 | + |
| 44 | +*Initial committers*: See https://github.com/coreos/etcd/blob/master/MAINTAINERS[MAINTAINERS]. |
| 45 | + |
| 46 | +*Infrastructure requirements (CI / CNCF Cluster)*: N/A |
| 47 | + |
| 48 | +*External dependencies*: https://github.com/coreos/etcd/blob/master/bill-of-materials.json |
| 49 | + |
| 50 | +*Statement on alignment with CNCF mission*: A consistent and partition |
| 51 | +tolerant datastore, like etcd, is a base dependency for many cloud native |
| 52 | +architectures. They hold on to critical cluster configuration and locks |
| 53 | +while providing guarantees against individual machine failure, network |
| 54 | +partitions, or data center power loss. In the literature and ecosystem |
| 55 | +etcd, or similar systems (e.g. Chubby, Zookeeper, etc.), provide the |
| 56 | +persistence layer for applications like Kubernetes, CoreDNS, Vitess, Borg, |
| 57 | +Mesos, and countless others. |
| 58 | + |
| 59 | +*Communication channels*: Google Groups https://groups.google.com/forum/#!forum/etcd-dev[etcd-dev], |
| 60 | +Kubernetes slack https://kubernetes.slack.com/messages/C3HD8ARJ5/[#etcd] |
| 61 | +channel. |
| 62 | + |
| 63 | +*Website*: http://etcd.io |
| 64 | + |
| 65 | +*Release methodology and mechanics*: etcd employs semantic version to name |
| 66 | +each release, with detailed https://github.com/coreos/etcd/blob/master/CHANGELOG-3.2.md[changelog] |
| 67 | +and compiled https://github.com/coreos/etcd/releases[release] binaries hosted |
| 68 | +on GitHub and Google Cloud Storage. Each release file is cryptographically |
| 69 | +signed using Yubikey. Released container images are hosted on |
| 70 | +gcr.io/etcd-development and quay.io/coreos/etcd. The release process is https://github.com/coreos/etcd/blob/master/scripts/release[partially automated]. |
| 71 | +Typically, we release new minor version every 6-month, and patch version every |
| 72 | +month or whenever critical fixes are backported. |
| 73 | + |
| 74 | +*Social media accounts*: None |
| 75 | + |
| 76 | +*Community size and any existing sponsorship*: |
| 77 | + |
| 78 | +Adopters: Alibaba, Amazon, Baidu, Cisco, CoreOS (now Red Hat), EMC, Google, |
| 79 | +Huawei, IBM, NTT, Uber, Verizon, Yandex, etc. |
| 80 | +See https://github.com/coreos/etcd/blob/master/Documentation/production-users.md[etcd production users] for more. |
| 81 | + |
| 82 | +Integrations: Kubernetes API server persists cluster metadata in etcd. |
| 83 | +OpenStack uses etcd to keep track of service liveness. CockroachDB, TiKV, |
| 84 | +and Dgraph use etcd/raft implementation for log replication. Please see how |
| 85 | +https://docs.google.com/presentation/d/1_8RZH8VbX3ijH_aVi3r5FyQtfhV4oSvW-KaGsWZ5_G8/edit[NTT manages their network infrastructure], |
| 86 | +how https://www.youtube.com/watch?v=Snnqvr1g4r4[Uber built its time series database m3] on top of etcd, |
| 87 | +and how https://www.youtube.com/watch?v=WQoxyb1o9Y4[BrainTree replaced Redis with etcd], to run its caching systems. |
| 88 | + |
| 89 | +Sponsors: Alibaba Cloud, Amazon Web Services, Google Cloud Platform, Red Hat. |
| 90 | + |
| 91 | +As of August 7, 2018, we have 444 contributors and https://github.com/coreos/etcd/blob/master/MAINTAINERS[8 maintainers]. |
| 92 | + |
| 93 | +We hold https://docs.google.com/document/d/16XEGyPBisZvmmoIHSZzv__LoyOeluC5a4x353CX0SIM/edit[bi-weekly community meeting] with about 5 regular attendees. |
| 94 | +
|
| 95 | +*What is the team looking for in a foundation*: |
| 96 | +
|
| 97 | +In general, etcd team is looking to grow its communities and expand |
| 98 | +maintainers, by having etcd owned by neutral organization like CNCF. |
| 99 | +
|
| 100 | +Manage billing for shared https://gcr.io/etcd-development/etcd[Google Cloud account], |
| 101 | +which etcd team uses for performance testing and hosting release files. |
| 102 | +
|
| 103 | +Manage etcd.io domain (e.g. play.etcd.io). |
| 104 | +
|
| 105 | +Community support (e.g. help enact to https://github.com/coreos/etcd/blob/master/code-of-conduct.md[code of conduct], |
| 106 | +when needed). |
0 commit comments