Live data from Hacker News

Etcd, or, why modern software makes me sad

roguelazer.com

131–140 of 648 posts

Re: Etcd, or, why modern software makes me sad

#131
post #5

"Kubernetes is the worst thing to happen to system administration since systemd." I'll take that quote into my fortune file.

What are some of the arguments against `systemd`? I've used it in several production systems and don't really have an opinion on it.

It violates the old school UNIX Philosophy of (1) simple standalone tools (2) text as the universal interface.

(1) systemd is a monolith that aspires to do almost everything from booting to networking to sound. It's in many ways a Kubernetes sans distributed systems.

(2) systemd uses binary logs, abandoning "text is the universal interface"

systemd is also a giant single point of failure.

Personally I don't see the big deal. The actual reason people hate systemd is that it's the type of design a software company like Microsoft would come up with rather than one that a bunch of gritty basement hackers would create. They have found refuge in OSes like Gentoo and OpenBSD, so systemd served as a kind of explusion of this type of programmer/user from the Linux ecosystem.

Re: Etcd, or, why modern software makes me sad

#132
Early employee of CoreOS here. I wanted to float a few ideas out there for discussion.

First, while etcd did get a bit more complicated over the years, it stayed relatively stable compared to Consul. This was a point of pride of the etcd team and why it ultimately was picked for Kubernetes. Yes, a gRPC API is not as easy to use as HTTP, but this gained massive scale for Kubernetes when it was released. Something like a 10x increase in the number of nodes in a cluster, without changing any Kubernetes features. Just enabling etcd v3's gRPC API. That's pretty awesome.

As a member of the product team, I think we could have made different choices that would have massively impacted the ecosystem. Consul might not exist today. We did not want to add in a DNS server to etcd in order to keep it lean and focused. We had an integration with SkyDNS, but it wasn't on by default. This birthed Consul and its built in DNS server for service discovery. Consul is very popular so clearly this was the right move for some consumers. Kubernetes didn't need this, nor did Container Linux for its update coordination. For us, having this possible on top of etcd was the right trade off. Consul has added a complete service mesh into the later version. Again, etcd has stayed lean and focused. I think you are focusing on pebbles when you take in the overall ecosystem.

Would you rather etcd have turned into Consul's breadth? Would it have been forked?

The second point is around the success of Container Linux. I only include this because I am proud of it. We updated and secured a fleet of machines that measured larger than some cloud providers. That is a huge impact on the container and security ecosystems. Flatcar Linux and Fedora CoreOS remain as successors, along with other projects like Google'c container optimized OS and I think AWS announced one as well.

This work continues at Red Hat on OpenShift, etcd, Fedora/RHEL CoreOS, and tying Kubernetes more closely with the OS to keep the combined whole secure, up to date and successful for engineering teams shipping software.

Re: Etcd, or, why modern software makes me sad

#133
This is one weird comment section.

There are people attacking the author for a statement made about CoreOS, and for some hate towards Kubernetes.

The key point of the article is not really being addressed here: vested interests from large companies are able to introduce huge complexity into simple, well-designed projects. While the complexity may be good for some end that said vested interest has in mind, they are also in a position to absorb the cost of that increased complexity.

In the meantime, the simpler version of the software is long gone, with the added complexity placing a large burden on the solo developer or small team.

It's almost like there's no good representation in the open-source world for the solo developer or small team. Funding and adoption (in the extreme, some might say hijacking) of open-source projects from large corporations dictates the direction of all major software components today. Along with the roses come some very real thorns.

Just my 2c.

Re: Etcd, or, why modern software makes me sad

#134
post #70
post #47

I run k8s in production and I think this is a really bizarre axe to grind that sort of smells like someone who got upset by how steep the kubernetes learning curve is. Which, in a way, is understandable. > 1) Add hundreds of new failure modes to your software In my entirely anecdotal experience, it removes error modes. It turns out that just because k8s offers a feature (it offers many!) doesn't mean you're required…

What's wrong with the YAML? It's easy to read and write, concise, and generally has sane defaults meaning you don't have to be overly verbose.

Having to do conditional logic in it, like:

matchExpressions:

  - key: app

    operator: In

    values:

    - myservice
Rather than, if (app=="myservice")

Re: Etcd, or, why modern software makes me sad

#135

> the simple internal data model was replaced by a dense and non-orthogonal data model with different types for leases, locks, transactions, and plain-old-keys I maintain a (/the only?) etcd3 library for Node.js[0], and used etcd extensively on my former team. None of these things are new to etcd3 API. All of these are present on v2 as well[1], whose API the author extolls, or are built within clients on etcd's base…

I feel like the blog post could largely be summed up as "stop threatening to remove the normal HTTP API, some of us find that a lot easier to debug and ease of debugging is essential for a core operational component of a distributed system" - which is, I would argue, an entirely reasonable thing to want.

I quite enjoyed the rantiness on a "being entertained" basis but it did rather work against effectively making the core point.

Re: Etcd, or, why modern software makes me sad

#136
There's a lot of inflammatory buildup to the chief complaint:

> With the massive influx of Kubernetes users came, of course, a large number of Xooglers who decided to infect etcd with Google technologies, as is their way23. Etcd's simple HTTP API was replaced by a "gRPC"4 version; the simple internal data model was replaced by a dense and non-orthogonal data model with different types for leases, locks, transactions, and plain-old-keys. etcd 3.2 added back a tiny subset of the HTTP API through the "gRPC Gateway", but not enough to implement any of the rich applications built on top of the original API. The v2 API lives on for now, but upstream threatens to remove it in every new version and there will surely come a time when it'll be removed entirely.

This is the interesting part of the post to me. I can understand the disappointment - but also, nobody's making the author upgrade to the gRPC-based etcd v3. This reminds me of other "traditional" sys-admin folks I've worked with who seem to want to stick to 2010-style administration rather than work with newly available abstraction layers that eliminate some of the overhead (e.g. Docker, k8s). If they want to continue linux administration in that way, that's their choice, and there's some merit in that - but they shouldn't expect their tools and other developers to necessarily follow them.

Re: Etcd, or, why modern software makes me sad

#137
post #70

Earlier quoted context omitted.

What's wrong with the YAML? It's easy to read and write, concise, and generally has sane defaults meaning you don't have to be overly verbose.

Having to do conditional logic in it, like: matchExpressions: - key: app operator: In values: - myservice Rather than, if (app=="myservice")

Why would you do this in a Kubernetes context?

Re: Etcd, or, why modern software makes me sad

#138
post #51

Earlier quoted context omitted.

Your statements are overly hostile and hyperbolic. There's been plenty of great software out of Google and lots of good ideas taken for granted. I'll give you folks trying to build things the Google way without Google tools or scale is more often than not the wrong thing to do, but that doesn't invalidate the good.

Name a single piece of good software from Google.

1. search

2. protocol buffers

rest is vaporware

Re: Etcd, or, why modern software makes me sad

#139
post #5

"Kubernetes is the worst thing to happen to system administration since systemd." I'll take that quote into my fortune file.

What are some of the arguments against `systemd`? I've used it in several production systems and don't really have an opinion on it.

There is https://blog.darknedgy.net/technology/2020/05/02/0/ which puts systemd in its historical context, explains some of the criticism, and then goes into the technical details. It's a long post and the tone makes it difficult to continue reading at times, but I learnt a lot from reading it.

Re: Etcd, or, why modern software makes me sad

#140
post #110

Earlier quoted context omitted.

Bazel, gRpc, Guava, Go, Dart, I could go on but you technically only asked for one.

Bazel is fucking awful . Most miserable years of my career is when I was tasked with maintaining a build system based on it. Same for gRPC, which TFA also does a good job of shutting down. Google doesn't get credit for Go, Bell Labs does.

Bzl is the most advanced build system on earth tbh. I have yet to see anything that compares for large-scale C++ development.
Post reply on HN