Live data from Hacker News

Etcd, or, why modern software makes me sad

roguelazer.com

601–610 of 648 posts

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

#602
post #252

Earlier quoted context omitted.

I love k8s, think it’s the best thing that happened to distributed computing since .. sliced bread? Anyway, it’s good, but I don’t disagree with the author I just have a different perspective. I see k8s as a vehicle for learning about distributed computing not just for me but the industry as a whole. Same thing about Linux, it’s just a stepping stone for node management and has served us well in figuring out a bunch…

I also love k8s and agree with the author. K8s gives us declarative infrastructure with eventual reconciliation. That's massive, and there's nothing else around that really does that. I have a hard time taking anyone sesriously that makes the case that k8s is bad that hasn't fully grokked the above.

Disclaimer: I'm was part of the Apache Aurora PMC before the project went into the attic.

Not sure what you mean by declarative infrastructure but eventual reconciliation has been implemented in at least one other project (now retired) called Apache Aurora[1] which runs on Apache Mesos[2].

Twitter ran (and probably still runs) a combo of these to huge scale and great success so I don't think it's fair to say that there's nothing else around that does that :).

K8s is great, but we should be careful not to rewrite history.

[1] http://aurora.apache.org/

[2] http://mesos.apache.org/

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

#603

Earlier quoted context omitted.

Sorry but even though I disagree with most of the points from the article, I prefer to read this instead of a shy and unconfident rant from someone that's afraid of insulting your favorite tech.

What about a third option, where the author makes focused criticisms supported by clear explanations instead of the shy and unconfident strawman you've constructed?

That's what I read here. People got upset because he said Kubernetes was bad software and gRPC was a bad choice.

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

#604
post #217

Earlier quoted context omitted.

To be clear, it's not like there are any HTTP/2- only servers in the world. HTTP/2 is something a client connection upgrades to. One might think of HTTP/2 and HTTP/3 not precisely as versions of HTTP, but rather as variants —HTTP/2 is "optimized binary HTTP, fixed-station profile" and HTTP/3 is "optimized binary HTTP, mobile-station profile." (Mind you, they are versions relative to each-other , because HTTP/3 is str…

> HTTP/2 is something a client connection upgrades to. to which I as a normal person on a normal phone has no control. > Also, a design hint, if you actually want to try to build something competitive to HTTP/3 I'd need to control a major browser's code base. Lets get one thing clear, HTTP is, has never been and almost never will be efficient. The entire HTML/JS/HTTP web is never going to be efficient. If the web was…

It took me a bit to understand what you were saying here:

> I'm talking about not putting control signals in the same TCP connection that you are shoving tonnes of data down. That's never going to scale past 70-100ms.

...but I think I got it now. I was arguing with the wrong thing here.

Yes, there's a reason that FTP and RTP do what they do. (Though in FTP's case it had more to do with TCP-port parity gender; multiple data sockets per control socket was just a convenient outgrowth of the existing architecture.)

But crucially, HTTP/{2,3} are about accelerating existing traffic; and existing HTTP "apps" (the HTML + JS + CSS that contain an implicit dependent-resource digraph that gets turned into flow-requests by the browser) have no indication in them for what's going to be a "control-plane" request vs. a "data-plane" request. HTTP itself is an oblivious carrier re: these use-cases. So HTTP/{2,3} must continue that trend, and be oblivious carriers as well. To do otherwise would force a rewrite of all HTTP "apps" to add such indications.

However, in HTTP/1.1, you got the benefit of this purpose-isolated signalling "for free" anyway, because you'd probably be making your data requests from a CDN origin, while making control requests to an API-subdomain origin. Those are separate origins, so they got separate (keepalive, pipelined) TCP sockets.

In HTTP/{2,3}, you can choose to shove everything into one socket by putting both your control-plane and your data-plane into the same origin.

But, crucially, you don't have to. Nobody's stopping your HTTP "app" from just having separate control and data origins; and so ending up with two HTTP/{2,3} sockets open, one for control signals, the other for BLOB data.

And, of course, existing sites previously engineered for HTTP/1.1 won't shove everything into a single socket, since they've already separated the control origin from the data origin. (They've likely got several data origins, so they'll likely want to re-engineer with upstream proxying to compact those down into one data origin; but all they have to do while doing this is to choose not to also compact the control origin in there as well. The choice to not change anything is, in this case, the right choice!)

And also keep in mind that most websites aren't, like, photographer's portfolios or direct video hosts. There are few websites directly embedding same-origin BLOBs. There are many websites embedding "Binary Not-so-large OBjects", like blogs that embed same-origin 500px-wide medium-quality optimized-JPEG images. And those websites don't have such a large disparity between control signalling and data signalling that they have any need to separate them—those images aren't much larger than the average compressed-JSON XHR response!

And because of that, the "default" advice for HTTP/{2,3} transitioning (that you should follow if you're 99% of websites) can just be "put everything on one origin"; whereas "split control signals to a different origin, thereby forcing it to a separate socket with separate TCP window scaling parameters" can just be one of those arcane PageSpeed things you learn from an infrastructure consultant, a bit like choosing what type of select(2)-alike kernel ABI your webserver should use to receive packets.)

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

#605
post #328

Earlier quoted context omitted.

> gRPC wasn't added for no reason, or because politics; its a sister CNCF project, and would increase the performance of the API surface, which greatly benefits all of its users. gRPC (Google RPC) was absolutely added because of politics. Yes, it's performant, but let's not kid ourselves that gRPC wasn't picked because it falls nicely into the orbit of Kubernetes and the Google ecosystem. It's also why etcd can even…

I feel as if I have to repeat this during most discussions about Kubernetes and its halo technologies: Kubernetes is not developed by Google. gRPC is not developed by Google. etcd is not developed by Google. These are all projects under the Cloud Native Computing Foundation; its Platinum-level sponsors include: Alibaba, AWS, Apple, ARM, Cisco, Dell, Fujitsu, Google, Huawei, IBM, Intel, JD, Microsoft, NetApp, Oracle,…

great; so it's controlled by a big tech cartel, not a single company. that totally addresses the author's complaints >.<

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

#606
post #466

Earlier quoted context omitted.

I feel like you are several metaphors removed from me right now. Rowhammer? Spectre? I am just trying to serve a couple of websites here! I'm not going to buy another rack of servers just to isolate the two. Have you seen how expensive those things are? > Anyone selling you on containers as a security measure is pitching snake oil. They are a resource allocation & workload scheduling tool. I agree with both of these…

> I am just trying to serve a couple of websites here! Don't underestimate your responsibilities as an active participant online and operator of a globally reachable computing resource. Like driving a car, if you're not fully qualified and alert then you can endanger yourself and others. This is how PHP got such a bad rap. The fact that the container deployment tool has helped you configure security elements (such as…

Having an additional layer of restriction (be it an alloation and workload scheduler or whatever) is additional security. The fact that there are vulnerabilities that bypass layers of security is irrelevant. The power button on the machine is a vulnerability to your software. The fact the restrictions are possible with other tools is irrelevant. Grouping functionality into a singular paradigm has utility.

To be fair, more security by additional tooling adds a vulnerability in human error, but that's true of all the tools.

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

#607
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.

Chromium.

I'm serious. Say what you will about the high complexity of the web platform, or the rising dominance of Chromium. It's a seriously impressive piece of engineering. Have you ever watched the Chromium build process in action? It builds hundreds of static libraries, then statically links them all into one monster executable or DLL (depending on the platform). BTW, part of what enables static linking at this massive scale is the gn build system, which AFAIK is inspired by Blaze (the internal ancestor of Bazel). So IMO that's a major point in favor of that type of build system.

BTW, to answer your point about throwing tens of millions of dollars at a problem: some problems are just unavoidably that big, especially when you factor in things that are required for a piece of end-user-facing software to be usable by the whole world, such as internationalization, accessibility, and in general, complex but usable UIs.

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

#609
post #553

Earlier quoted context omitted.

> " that somehow found their ways in software engineering, out of possibly good intentions" It seems that systems and principles invented for some specific situations get rapidly entrenched as "best practice" due to the wild success of their root corporations. That's twisted much like fashion - "that dress looks great on that model, maybe if I wear that dress, I would look good too".

There's some truth in that, but there's more to it. Successful tech companies build good tech that is often worth adopting: - the companies' successes are often predicated on strong ability to develop technologies - good (well-maintained) technology requires resources and the successful tech companies have those resources.

Valid. The "fashion" point was more about P(adoption worthy tech | successful originator) != P(successful originator | adoption worthy tech)

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

#610
I don't really use k8s nor etcd, but one sentence in the article really stood out to me:

> I would go so far as to say that Kubernetes is the worst thing to happen to system administration since systemd.

I know it's popular to shit on systemd, but as a casual user, I honestly don't get it. I've written about a dozen systemd unit files over the years, and each time it's been a pleasure. Write a few lines describing what to launch when, one command to make systemd aware of your new file, one command to launch it.

In contrast, I've written a couple sysvinit files, and the experience was horrible every time. Having to manage pid files and logging myself, setting up the proper symlinks, etc. It'd always end up being a ~100 line script that'd be 99% copy-paste.

There might be some use-case where systemd is worse, but for my (admittedly simple) use-case, it's far superior.

Post reply on HN