Skip to content

Commit b187d38

Browse files
authored
Merge pull request #143 from gyuho/etcd
proposals: add "etcd" as "Incubating" CNCF project
2 parents b5f6119 + 0f53ac5 commit b187d38

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

proposals/etcd.adoc

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
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

Comments
 (0)