TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Software Infrastructure 2.0: A Wishlist

321 pointsby klintchoabout 4 years ago

37 comments

jiggawattsabout 4 years ago
Years and years ago I saw an advertisement by a SAN array vendor where their gimmick was that they supported very cheap read&#x2F;write snapshots of very large datasets, in combination with a set of transforms such as data masking or anonymisation.<p>Their target market was same as the OP: developers that need rapid like-for-like clones of production. The SAN could create a full VM server pool with a logical clone of hundreds of terabytes of data in seconds, spin it up, and blow it away.<p>The idea was that instead of the typical &quot;DEV&#x2F;TST&#x2F;PRD&quot; environments, you&#x27;d have potentially dozens of numbered test environments. It was cheap enough to deploy a full cluster of something as complex as SAP or a multi-tier Oracle application for a CI&#x2F;CD integration test!<p>Meanwhile, in the Azure cloud: Practically nothing has a &quot;copy&quot; option. Deploying basic resources such as SQL Virtual Machines or App Service environments can take <i>hours</i>. Snapshotting a VM takes a <i>full copy</i>. Etc...<p>It&#x27;s like the public cloud is in a weird way ahead of the curve, yet living with 1990s limitations.<p>Speaking of limitations: One reason cheap cloning is &quot;hard&quot; is because of IPv4 addressing. There are few enough addresses (even in the 10.0.0.0&#x2F;8 private range) that subnets have to be manually preallocated to avoid conflicts, addresses have to be &quot;managed&quot; and carefully &quot;doled out&quot;. This makes it completely impossible to deploy many copies of complex multi-tier applications.<p>The public cloud vendors had their opportunity to use a flat IPv6 address space for everything. It would have made hundreds points of complexity simply vanish. The programming analogy is like going from 16-bit addressing with the complexity of near &amp; far pointers to a flat 64-bit virtual address space. <i>It&#x27;s not just about more memory!</i> The programming paradigms are different. Same thing with networking. IPv6 simply eliminates entire categories of networking configuration and complexity.<p>PS: Azure&#x27;s network team decided to unnecessarily use NAT for IPv6, making it exactly (100%!) as complex as IPv4...
评论 #26870707 未加载
评论 #26872846 未加载
评论 #26870670 未加载
评论 #26872393 未加载
评论 #26872085 未加载
评论 #26872877 未加载
评论 #26871804 未加载
mikewarotabout 4 years ago
Virtualization eventually will be seen as the unnecessary layer added to make up for operating systems that lack capability based security.<p>It&#x27;s going to take a decade to refactor things to remove that layer. Once done, you&#x27;ll be able to safely run a process against a list of resources.
评论 #26870505 未加载
评论 #26874396 未加载
评论 #26870542 未加载
评论 #26871140 未加载
评论 #26870851 未加载
评论 #26870541 未加载
评论 #26873556 未加载
评论 #26870273 未加载
评论 #26870406 未加载
bob1029about 4 years ago
I love the test-in-production illustration. This is a fairly accurate map of my journey as well. I vividly remember scolding our customers about how they needed a staging environment that was a perfect copy of production so we could <i>guarantee</i> a push to prod would be perfect every time.<p>We still have that customer but we have learned a very valuable &amp; expensive lesson.<p>Being able to test in production is one of the most wonderful things you can ever hope to achieve in the infra arena. No ambiguity about what will happen at 2am while everyone is asleep. Someone physically picked up a device and tested it for real and said &quot;yep its working fine&quot;. This is much more confidence inspiring for us.<p>I used to go into technical calls with customers hoping to assuage their fears with how meticulous we would be with a test=&gt;staging=&gt;production release cycle. Now, I go in and literally just drop the &quot;We prefer to test in production&quot; bomb on them within the first 3 sentences of that conversation. You would probably not be surprised to learn that some of our more &quot;experienced&quot; customers enthusiastically agree with this preference right away.
评论 #26870877 未加载
评论 #26870778 未加载
评论 #26870039 未加载
zmmmmmabout 4 years ago
This post mingles different interpretations of &quot;serverless&quot; - the current fad of &quot;lambda&quot; style functions etc and premium &#x2F; full stack managed application offerings like Heroku. Although they are both &quot;fully managed&quot; they have a lot of differences.<p>Both though assume the &quot;hard&quot; problem of infrastructure is the one-time setup cost, and that your architecture design should be centered around minimising that cost - even though it&#x27;s mostly a one-time cost. I really feel like this is a false economy - we should optimise for long term cost, not short term. It may be very seductive that you can deploy your code within 10 minutes without knowing anything, but that doesn&#x27;t make it the right long term decision. In particular when it goes all the way to architechting large parts of your app out of lambda functions and the like we are making a huge archtitectural sacrifice which is something that should absolutely not be done purely on the base of making some short term pain go away.
评论 #26870482 未加载
评论 #26870800 未加载
ngngngngabout 4 years ago
&gt; but it takes 45 steps in the console and 12 of them are highly confusing if you never did it before.<p>I am constantly amazed that software engineering is as difficult as it is in ways like this. Half the time I just figure I&#x27;m an idiot because no one else is struggling with the same things but I probably just don&#x27;t notice when they are.
评论 #26870804 未加载
评论 #26870076 未加载
评论 #26874497 未加载
jcelerierabout 4 years ago
I&#x27;m so happy to just develop desktop apps in C++ &#x2F; Qt. I commit, I tag a release, this generates mac &#x2F; windows &#x2F; linux binaries, users download them, the end.
评论 #26871847 未加载
评论 #26884735 未加载
评论 #26871953 未加载
XorNotabout 4 years ago
Some of this I agree with, even if the overall is to me asking for &quot;magic&quot; (I wouldn&#x27;t mind trying to get there though).<p>For me the one I really want is &quot;serverless&quot; SQL databases. On every cloud platform at the moment, whatever cloud SQL thing they&#x27;re offering is really obviously MySQL or Postgres on some VMs under the hood. The provisioning time is the same, the way it works is the same, the outage windows are the same.<p>But <i>why</i> is any of that still the case?<p>We&#x27;ve had the concept of shared hosting of SQL DBs for years, which is definitely more efficient resource wise, why have we failed to sufficiently hide the abstraction behind appropriate resource scheduling?<p>Basically, why isn&#x27;t there just a Postgres-protocol socket I connect to as a user that will make tables on demand for me? No upfront sizing or provisioning, just bill me for what I&#x27;m using at some rate which covers your costs and colocate&#x2F;shared host&#x2F;whatever it onto the type of server hardware which can respond to that demand.<p>This feels like a problem Google in particular should be able to address somehow.
评论 #26870301 未加载
评论 #26870267 未加载
评论 #26870064 未加载
评论 #26870149 未加载
评论 #26870239 未加载
评论 #26870313 未加载
评论 #26873189 未加载
评论 #26870876 未加载
anuragabout 4 years ago
Testing in &#x27;production&#x27; has been possible for a while: Heroku has Review Apps, and Render (where I work) has Preview Environments [1] that spin up a high-fidelity isolated copy of your production stack on every PR and tear it down when you&#x27;re done.<p>[1] <a href="https:&#x2F;&#x2F;render.com&#x2F;docs&#x2F;preview-environments" rel="nofollow">https:&#x2F;&#x2F;render.com&#x2F;docs&#x2F;preview-environments</a>
评论 #26869564 未加载
评论 #26870322 未加载
评论 #26872489 未加载
qaqabout 4 years ago
Given how much capitalization AWS and Azure account for it&#x27;s surprising how little progress has being made in many areas. A true serverless RDBMS database priced sanely that basically charged for qry execution time and storage without need to provision some &quot;black box&quot; capacity units and would be suitable for a large scale app. Most of all workflows that require contacting support and arbitrary account limits that force you to split solutions across multiple accounts wtf.
评论 #26870821 未加载
Ericson2314about 4 years ago
I&#x27;m sympathetic to the motivation, but the author is a bit naive in some of the specific requirements --- we absolutely must spin things up locally to retain our autonomy. Sure, allow testing in the cloud too, but don&#x27;t make that the only option.<p>The cloud should be a tiny margin business, that it isn&#x27;t shows just how untrustworthy it is. The win-win efficiency isn&#x27;t there because there&#x27;s so much rentier overhead.<p>Oh, and use Nix :).
skywhopperabout 4 years ago
While it’s a good idea to lay out a vision for the future of infrastructure as a service, it’s annoying to read this sort of article that seems to believe it ought to be simple to provide true serverless magical on-demand resources for random code. Fact is it’s a lot more complicated than that unless you’re just a small fry without any really hard problems to solve.<p>It’s silly to complain that AWS doesn’t have a service that allows any random programmer to deploy a globally scalable app with one click. For one thing, you aren’t AWS’s primary target audience. For two, the class of problems that can be solved with such simple architectures is actually pretty small. But for three, it’s not actually even possible to do what you’re asking for any random code unless you are willing to spend a really fantastic amount of money. And even then once you get into the realm of a serious number of users or a serious scale of problem solving, then you’ll be back into bespoke-zone, making annoying tradeoffs and having to learn about infra details you never wanted to care about. Because, sorry, but abstraction is not free and it’s definitely not perfect.
评论 #26869669 未加载
pbiggarabout 4 years ago
So I&#x27;m creating something that&#x27;s exactly like the author is describing: <a href="https:&#x2F;&#x2F;darklang.com" rel="nofollow">https:&#x2F;&#x2F;darklang.com</a><p>He&#x27;s right that there&#x27;s no reason that things shouldn&#x27;t be fully Serverless, and have instant deployment [1]. These are key parts of the design of Dark that I think no one else has managed to solve in any meaningful way. (I&#x27;ll concede that we haven&#x27;t solved a lot of other problems had still need to be solved to be usable and delightful though).<p>[1] <a href="https:&#x2F;&#x2F;blog.darklang.com&#x2F;how-dark-deploys-code-in-50ms&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blog.darklang.com&#x2F;how-dark-deploys-code-in-50ms&#x2F;</a>
评论 #26871836 未加载
EdwardDiegoabout 4 years ago
&gt; The word cluster is an anachronism to an end-user in the cloud! I&#x27;m already running things in the cloud where there&#x27;s elastic resources available at any time. Why do I have to think about the underlying pool of resources? Just maintain it for me.<p>Because very often, software that runs on clusters, requires thought when resizing.<p>In fact, I&#x27;m trying to think of a distributed software product where resizing a cluster, doesn&#x27;t require a human in the loop making calculated decisions.<p>Even with things like Spark where you can easily add a bunch of worker nodes to a cluster in the cloud, there&#x27;s still core nodes maintaining a shared filesystem for when you need to spill to disk.
Throaway838921about 4 years ago
My biggest problem with modern infrastructure is how much resources they use for simple things. They scale upwards, but they don&#x27;t scale down.<p>I tried OpenFAAS in Kubernetes, to see if I could run simple lambda like loads. Default setup took north of 8 Gb of memory!<p>I just want efficient and simple microservices infrastructure, that doesn&#x27;t hog 8 Gb of memory to run a simple functions or small microservices.
评论 #26882687 未加载
lnspabout 4 years ago
I am currently working on a project attempting to achieve something like this called Valar (<a href="https:&#x2F;&#x2F;valar.dev" rel="nofollow">https:&#x2F;&#x2F;valar.dev</a>). It&#x27;s still quite experimental and in private beta, but feel free to take a look and put yourself on the waiting list. I&#x27;m targeting small, private projects so it&#x27;s not really suited for full-on production workloads yet.<p>The core of it is a serverless system that shrinks workload quotas while running them (similar to the Google Autopilot system). This way you don&#x27;t have to rewrite your entire codebase into lambdas and the end user can save a lot of costs by only specifying a resource cap (but probably using a lot less, therefore paying less).
asimabout 4 years ago
Been there. Dreamed that. Built my ideal experience -&gt; <a href="https:&#x2F;&#x2F;m3o.com" rel="nofollow">https:&#x2F;&#x2F;m3o.com</a><p>Honestly I&#x27;ve spent the better part of a decade talking about these things and if only someone would solve it or I had the resources to do it myself. I&#x27;m sure it&#x27;ll happen. It&#x27;s just going to look different than we thought. GitHub worked because it was collaborative and I think the next cloud won&#x27;t look like an AWS, it&#x27;ll look more like a social graph that just happens to be about building and running software. This graph only exists inside your company right now. In the future it&#x27;ll exist as a product.
max_about 4 years ago
&gt;Truly serverless<p>&gt;The beauty of this is that a lot of the configuration stuff goes away magically. The competitive advantage of most startups is to deliver business value through business logic, not capacity planning and capacity management!<p>Is this exactly what cloudflare&#x27;s workers is doing? [0]<p>I love the fact that I only need to think of the business logic.<p>Development without the need for VMs and obscure configuration scripts feels — and is in fact very productive. I don&#x27;t think I will want to use anything else for hosting my back ends.<p>[0]:<a href="https:&#x2F;&#x2F;workers.cloudflare.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;workers.cloudflare.com&#x2F;</a>
评论 #26874602 未加载
ramozabout 4 years ago
I think we assume too much about where infrastructure is headed. Serverless, containers... they&#x27;re fueling this notion of increased productivity but I don&#x27;t think they themselves are keeping up with where Software is headed. E.g. &quot;AI: --- in a lot of cases you&#x27;re going to be breaking through every level of abstraction with any *aaS above the physical cores and attached devices. Traditional CRUD simplified? -- sure, but I feel like these &quot;infrastructure&quot; dev opportunities will be eaten by digital platforms and cloud solutions in the coming years.
nonameiguessabout 4 years ago
This is a lot harder than the author wants to realize. Elastic infrastructure deployment in sub second latency is not likely to ever happen. The problem is simply a lot harder than serving http requests. It&#x27;s not receive some bytes of text, send back some bytes of text. VMs are just files and can be resized, but optimal resource allocation on multitenant systems is effectively solving the knapsack problem. It&#x27;s NP hard, and at least some of the time, it involves actually powering devices on and off and moving physical equipment around. There is still metal and silicon back there. In order to just be able to grow on demand, the infrastructure provider needs to overprovision for worst case, as the year of Covid should have taught us the entire idea of just in time logistics for electronics is a house of cards. Ships still need to cross oceans.<p>My wife was the QA lead for a data center provisioner for a US government agency a few years back and the prime contractor refused to eat into their own capital and overprovision, instead waiting for a contract to be approved before they would purchase anything. They somehow made it basically work through what may as well have been magic, but damn the horror stories she could tell. This is where Amazon is eating everyone else&#x27;s lunch by taking the risk and being right on every bet so far so if they build it, the customers will come.<p>But even so, after all of that to complain that deploying infrastructure changes takes more than a second, my god man! Do you have any idea how far we&#x27;ve come? Try setting up a basic homelab some time or go work in a legacy shop where every server is manually configured at enterprise scale, which is probably every company that wasn&#x27;t founded in the past 20 years. Contrast that with the current tooling for automated machine image builds, automated replicated server deployment, automated network provisioning, infrastructure as code. Try doing any of this by hand to see how hard it really is.<p>Modern data centers and networking infrastructure may as well be a 9th wonder of the world. It is unbelievable to see how underappreciated they are sometimes. Also, hardware is not software. Software is governed solely by math. It doesn&#x27;t exactly what it says it will do, every single time. Failures of software are entirely the fault of bad program logic. Hardware isn&#x27;t like that at all. It is governed by physics and it is guaranteed to fail. Changes in temperature and air pressure can change results or cause a system to shut down completely. Hiding that from application developers is absolutely the goal, but you&#x27;re never going to make a complex problem simple. It&#x27;s always going to be complex.<p>Remember my wife? Let me tell you one of her better stories. I can&#x27;t even name the responsible parties because of NDAs, but one day a while back an entire network segment just stopped working. Connectivity was lost for several applications considered &quot;critical&quot; the US defense industrial base, after they had done nothing but pre-provision reserved equipment for a program that hadn&#x27;t even gone into ops yet and wasn&#x27;t using the equipment. It turned there was some obscure bug in a particular model of switch that caused it to report a packet exchange as successful even though it wasn&#x27;t so that failover never happened, even though alternative routes were up and available. Nobody on site could tell why this was happening because the cause ended up being locked away in chip level debug logs that only the vendor could access. The vendor claimed this could only happen one a million times, so they didn&#x27;t consider it a bug. Guess how often one in a million times happens when you&#x27;re routing a hundred million packets a second? Maybe your little startup isn&#x27;t doing that, but the entire US military industrial complex or Amazon is absolutely doing that, and those are the problems they are concerned with addressing, not making the experience better for some one man shop paying a few bucks a month who think yaml dsls make software-defined infrastructure too complicated for his app that can plausibly run on a single laptop.
评论 #26871293 未加载
评论 #26882744 未加载
InsomniacLabout 4 years ago
A trainer said to me YAML is like JSON but easier to read, he then said count the whitespace on every line... Sure, An IDE makes it easier to see, but the same can be said about JSON.
zbyabout 4 years ago
I have been observing it at my work - the production systems were getting more and more complicated and it was harder and harder to set up dev and test environments. It also started to break the underlying system when you had to install old libs for the project - and then maybe you needed two versions of the libs for different branches of the project. So I started to develop in virtual machines. Then people started using containers for that. That felt like a step back, because it was a different abstraction - and you had to do things differently on the dev machine that on production. Then I learned that people use terraform or ansible to setup the production and I hoped that I could run the same scripts on my dev machine in a vm and have environment just like production. But no - when I encountered a project with terraform and ansible - the scripts contain lots of AWS related stuff, it is impossible to untangle it and run on dev machines. I have never learned kubernets, I don&#x27;t do much programming any more, with containers both in production and dev that would make sense - but I still don&#x27;t see scripts that would just spin off a dev environment. Maybe dev environments on a dev machine is really a dead end now - and what we need is a way to spin of dev envs in the cloud.
crypticaabout 4 years ago
&gt;&gt; Software infrastructure (by which I include everything ending with *aaS, or anything remotely similar to it) is an exciting field, in particular because (despite what the neo-luddites may say) it keeps getting better every year<p>The fact that many people think that software infrastructure is getting worse is a very bad sign in itself (it cannot be ignored). There has always been religious wars over software development practices, but never to the extent we have today.
tammerkabout 4 years ago
Literally author is asking for something in the cloud which is abstracted away, fast, easy to use and easy to debug. This is not possible imho. There are always trade-offs. You can&#x27;t get all of them for &quot;free&quot;. e.g serverless services will be slower than your own setup, like always. Debugging, I&#x27;m not sure but I don&#x27;t think it will be as easier as your own setup ever.
评论 #26875397 未加载
evoxmusicabout 4 years ago
Well written article. This exactly with this spirit - of making AWS, GCP, Azure accessible to any developer that Qovery has been built. The idea of Qovery is to build the future of the Cloud - making developers to deploy their apps on AWS in just a few seconds. No joke. 2200+ developers from 110+ countries are deploying hundreds of apps per day. And this is only the beginning. Thanks again for sharing this article.<p>You can give a try to Qovery here: <a href="https:&#x2F;&#x2F;www.qovery.com" rel="nofollow">https:&#x2F;&#x2F;www.qovery.com</a>
thihtabout 4 years ago
&gt; The word cluster is an anachronism to an end-user in the cloud! I&#x27;m already running things in the cloud where there&#x27;s elastic resources available at any time. Why do I have to think about the underlying pool of resources? Just maintain it for me.<p>You still need to know the geographic location of your physical cluster for multiple reasons though: legal (Cloud Act is a thing!), performance (you need closeness to your end users) and sometimes redundancy when talking about multi clusters architecture.
anonfunctionabout 4 years ago
&gt; I&#x27;m not asking for milliseconds! Just please at least get it to less than a second.<p>Is there a word for an oxymoron but instead of contradictory words it&#x27;s sentences?
kkapelonabout 4 years ago
Code not configuration<p>We have this already -&gt; <a href="https:&#x2F;&#x2F;www.pulumi.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.pulumi.com&#x2F;</a>
hendryabout 4 years ago
I encourage to follow developers like <a href="https:&#x2F;&#x2F;twitter.com&#x2F;tjholowaychuk&#x2F;" rel="nofollow">https:&#x2F;&#x2F;twitter.com&#x2F;tjholowaychuk&#x2F;</a> who are making the cloud &#x2F; infra far better from a Developer Experience perspective.
de6u99erabout 4 years ago
I&#x27;ve been doing this since many years. Just not serverless. Rollout to production, incl. build took max. 20 minutes for a fat-client relational-database application.<p>The author is mixing here two things that don&#x27;t depend on each other.
jillesvangurpabout 4 years ago
&gt; &quot;but there was nothing on the checklist to make sure the experience is delightful.&quot;<p>This is the key point.<p>AWS is alright once you wrap your head around it. But it seems it was &quot;designed&quot; &#x2F; gobbled together without any form of empathy for their poor users whatsoever. The best you can say about it that it works as documented. But you&#x27;ll be reading a lot that to figure out what and how or even why. Absolutely nothing is straightforward, ever. I&#x27;ve indeed had the pleasure of figuring out hosting a static website on AWS via https. Took me several attempts top get right.<p>Calling that process complicated does not do it justice. It&#x27;s basically a series of hacks to integrate components that were clearly not intended to be used like this. Think doing s3 redirects just to ensure www goes to the main domain. And then another set of redirects at the CDN level to ensure http goes to https. Make sure you name your resources just right or you will have a hard time pointing to them from route 53. (DNS). And of course you want auto renewing certificates to go with that. All possible. But it&#x27;s indeed a long process with many pitfalls, possible mistakes, gotchas, etc.<p>This lack of empathy is a common failing with engineers that typically lack the end to end perspective on what users&#x2F;customers actually need (they don&#x27;t care, or if they do lack key information) and are actually discouraged from thinking for themselves by managers that are not a whole lot better that report to boards populated by sociopaths who just want their minions to do whatever the hell it is they do. Exaggerating of course. But decision making in large companies is problematic at best. Sane results are almost accidental once you reach a certain size.<p>SAAS software in general has this problem. Usability stops being a concern once you&#x27;ve locked enough customers into paying you in perpetuity.
slverabout 4 years ago
My impressions TLDR:<p>1. &quot;Built for delight&quot; Author wants everyone to suddenly start making nicer things.<p>2. &quot;Truly serverless&quot; Author wants to throw code at cloud, without thinking about performance or resource usage.<p>3. &quot;Fast&quot; Author wants every AWS command to take less than a second.<p>4. &quot;Ephemeral resources&quot; Author wants to test in the cloud with less effort.<p>5. &quot;Code not configuration&quot; Author doesn&#x27;t like static config, everything should be an API.<p>6. &quot;Built for productivity&quot; Author wants everyone to be more productive.<p>All in all, reads a bit like the random musings of a frustrated cloud server user.
评论 #26870966 未加载
sullyj3about 4 years ago
The point about the AWS console being thoroughly un-delightful is well made, it&#x27;s a nightmare.
erhkabout 4 years ago
Google app engine was released in 2008...
henningabout 4 years ago
The desire to go &quot;truly serverless&quot; and pretend the computer does not actually exist is absolutely delusional.<p>The refusal to acknowledge that software will never be anything beyond executable data on some kind of computer, somewhere, is why most web-based software is so slow and shitty.<p>Having someone build the server and assign your code to run on it does not change that one (pun intended) bit.
评论 #26869612 未加载
评论 #26869689 未加载
评论 #26869558 未加载
评论 #26873532 未加载
throwaway823882about 4 years ago
There will not be a massive productivity boost in the next 10 years. We haven&#x27;t had a productivity boost in the past 20 years. In fact, we&#x27;re much less productive now. But I digress.<p>We&#x27;re still largely making and running software the same way we did 20 years ago. The only major differences are the principles that underpin the most modern best practices.<p>&quot;What the fuck does that mean,&quot; you say? It means that I can take a shitty tool and a shitty piece of infrastructure, and make it objectively more reliable, faster, and easier, by using modern practices. Conversely, I can take the latest tools, infrastructure, etc, and make them run like absolute dogshit, by using the practices of a decade ago.<p>Let&#x27;s take K8s for example. It&#x27;s like somebody decided to take the worst trends in software development and design-by-committee and churned out something that is simultaneously complicated and hard to use [correctly]. Setting it up correctly, and using it <i>correctly</i> (no, Mr. I&#x27;m A Javascript Developer, however you <i>think</i> you&#x27;re supposed to use it, you are wrong), for a medium-scale business, requires banging your head against a hodge-podge of poorly designed interfaces and bolting on add-on software for at least a month.<p>This is ridiculous, because what you actually needed was something whose <i>principles</i> match those of K8s. You want immutable infrastructure as code. You want scalable architecture. You want (in theory) loosely joined components. Do you need <i>K8s</i> to do that? No! K8s is literally the most complicated way that exists to do that.<p>Next let&#x27;s take Terraform. A clunky DSL that is slowly becoming sentient. Core functionality that defeats itself (running <i>terraform apply</i> is unpredictable, due to the nature of the design of the program, even though it was created with the opposite intention). Kludgy interfaces that are a chore to cobble together. Dependency hell. Actual runtime in the 10s of minutes (for the infra of a single product&#x2F;region&#x2F;AWS account). And no meaningful idea if the state of the infrastructure matches its state file matches the code that generated it all. To say nothing of continuous integration.<p>Do you need all of that to do infrastructure as code? Of course not. A shell script and <i>Make</i> could do the same thing.<p>So, you have a kludgy Configuration Management tool (terraform), and a kludgy Cluster Management tool (k8s), and all just to run your fucking Node.js webserver, make sure it restarts, and make sure a load-balancer is updated when you rotate in new webservers. Did you <i>need</i> all of this, really? No. The end result is functionally equivalent to a couple of shell scripts on some random VMs.<p>To get the best out of &quot;Software Infrastructure&quot; you don&#x27;t need to use anything fancy. You just need to use something <i>right</i>.<p>---<p>But there&#x27;s a different problem with infra, and it&#x27;s big. See, Cloud Infrastructure works like a server. Like a physical server, with a regular old OS. To manage it, first you &quot;spin up&quot; the physical server. Then you &quot;configure&quot; the server with some &quot;configuration management&quot; software. Then you &quot;copy some files to it&quot;. Then you &quot;run something on it&quot;. And while it&#x27;s running, you change it, live. This is how all Cloud Infra is managed. This is known as Mutable Infrastructure. Modern best practices have shown that this is really bad, because it leads to lots of problems and accidental-yet-necessary complexity.<p>So what is the solution? The solution is for cloud vendors to supply interfaces to manage their gear immutably. And that is a really big fucking problem.<p>Say I have an S3 bucket. Let&#x27;s say I have a bucket policy, lifecycle policy, ACLs, replication, object-level settings, versioning, etc. The whole 9 yards. Now let&#x27;s say I make one change to the bucket (a policy change, say). Production breaks. Can I &quot;back out&quot; that change in one swift command, without even thinking about it, and know that it will work? No.<p>Assuming an AWS API call even has versioning functionality (most don&#x27;t) I can use some API calls to query the previous version, apply the previous version as the current version, change some other things, and hope that fixes it. But there&#x27;s no semblance of <i>`rm S3-BUCKET ; cp -f S3-BUCKET-OLD S3-BUCKET`</i>. You have to just manually fix it &quot;live&quot;. Usually with some fucked up tool with a state file and a DSL that will randomly break on you.<p>There is literally no way to manage cloud infrastructure immutably. Cloud vendors will have to re-design literally <i>all of their interfaces</i> for a completely new paradigm. And that&#x27;s just interfaces. If trying to do the S3 bucket copy fails for &quot;mysterious reasons&quot; (AWS API calls fail all the time, kids), then your immutable change didn&#x27;t work, and you still have a broken system. So they actually have to change how they <i>run</i> their infrastructure, too, to use operations that are extremely unlikely to &quot;misbehave&quot;.<p>Do you know how much shit that covers? It took them like 20 years to make what we have now. It may take another 10 to 20 years to change it all.<p>Therefore, for a very, very long time to come, we will be stuck with shitty tools, trying to shittily manage our infrastructure, the way we used to manage web servers in the 90s. Even though we know for a fact that there is a better way. But we literally don&#x27;t have the time or resources to do that any time soon, because it&#x27;s all too big.
评论 #26870942 未加载
评论 #26870579 未加载
评论 #26873751 未加载
marcus_holmesabout 4 years ago
why does this rant start by talking about optimising things for the user, and then end up talking about optimising things for the developer?<p>I get that they&#x27;re talking about productivity tools for developers. But missing the point that optimising these tools for developers will mean they&#x27;re not optimised for the actual user. We&#x27;re not the customer. The stuff we write should be fast when run in production. Having it be nice to develop on is a bonus.<p>Having generated configuration that the developer doesn&#x27;t have to think about means that the system can&#x27;t be tweaked for the particular use case to make it faster in production. Yes, it&#x27;s easier. No, that&#x27;s not better.<p>Our job is to handle the complexity. To take &quot;simple&quot; business requirements and deal with all the complexity that is needed to make those work. That&#x27;s the gig.
justicezyxabout 4 years ago
Looks like someone who had not spend enough time to review modern computing history.<p>Heck, who voted up this article...<p>This article is like the NTF frenzy, it&#x27;s fine, but it&#x27;s going to be baseless because it&#x27;s looking too far in the future.
评论 #26869618 未加载
评论 #26869524 未加载