Live data from Hacker News

Back to the '70s with Serverless

evrl.com

51–60 of 310 posts

Re: Back to the '70s with Serverless

#51
post #18

> XML, however, was universally rejected in favour of things like JSON, Yaml, HCL, Toml - all free of structure, with zero indication whether a computer would find your prose gibberish or the next Shakespeare play until you actually pushed your code to some test cluster. There are a few fundamental differences between these languages, but it's just plain wrong to say that any of them are not "structured." Did OP mean…

I'd say that JSON is "structured", and probably HCL as far as I know, but the others have problems.

I haven't worked with an API that uses XML in a long time, but does it express the difference between "0123" and 123 well? I think that it either doesn't, or you add some really awkward schema language with XML namespaces ...

I just translated my .travis.yml to JSON, and I learned that

    deploy:
      on:
        branch: master
gets translated to {"deploy": {"true": {"branch": "master"}}} because "on" is a synonym for true. I'd call that unstructured. It also has problems with keys that start with -, etc.

Also, all of the languages are often used with say Go templates, which makes them more unstructured. They're no longer statically parsable, which is "table stakes" for doing anything else (validation or static analysis).

I took some pains to make shell statically parsable [2], and I think it's now a better foundation than these config languages, per my other comment here: https://news.ycombinator.com/item?id=25483270

I think HCL is probably a lot better, but it also seems to be the least used! It's structured, and has its own mechanism for expressing duplication that's not the equivalent of a 70's-style #include.

[1] https://github.com/oilshell/oil/blob/master/.travis.yml

[2] http://www.oilshell.org/blog/2019/02/07.html

Re: Back to the '70s with Serverless

#52
post #18

> XML, however, was universally rejected in favour of things like JSON, Yaml, HCL, Toml - all free of structure, with zero indication whether a computer would find your prose gibberish or the next Shakespeare play until you actually pushed your code to some test cluster. There are a few fundamental differences between these languages, but it's just plain wrong to say that any of them are not "structured." Did OP mean…

> There are a few fundamental differences between these languages, but it's just plain wrong to say that any of them are not "structured." Did OP mean "schema-less" instead?

I read him as referencing what people would have called "structured programming" in the 1980s, and pointing out that we have these settings/metadata/control files in languages that have no capacity for "structure" in the sense that, say, Pascal or C would have over BASIC or assembly, that is, thin-to-no factoring or abstraction capacity. Hence the contrast with "Configuration as Code."

Now, depending on your personality and experience, you might find the idea of using a complete language as config an opportunity for someone to do something non-obvious or horrifying, and the closer to the "settings" end of the setting/metadata/control spectrum you're on the more plausible that position is. When you get to a level of complexity that's the other end I'm not so sure and horizontally scaling systems might well be arriving there.

Re: Back to the '70s with Serverless

#53
post #2

So in the 70s you could pay per request billed to millisecond precision? Wow times haven’t changed at all. He has some good points on poor configuration languages and bad architecture, but it’s lost in the rant.

Mainframes were (and still are) billed by fractional second of CPU usage, total storage, bandwidth between storage and compute, bandwidth off box, total number of jobs scheduled, and per-use fees for third party tools such as sort, RPC servers, and such. So times literally have not changed in this regard.

I just tried NearlyFreeSpeech, which uses FreeBSD and jails, and it has resource billing, although a little more coarse grained:

https://faq.nearlyfreespeech.net/q/ResourceAccountUnit

So basically if your website doesn't get any hits, you don't get charged.

Re: Back to the '70s with Serverless

#54
post #17

My company is migrating a huge monolith to microservices. One of the proposed benefits is that it makes end to end testing easier because each service only interacts with a couple other services, so each service will be easier to write integration tests for. But in the monolith, those services communicate over interfaces, and are currently tested as unit tests! So we're replacing unit tests with integration tests and…

> So we're replacing unit tests with integration tests

Nit: those were always integration tests.

Re: Back to the '70s with Serverless

#55
> Split your codebase, split your teams, create a lot of opportunities for mediocre coders to grow into mediocre engineering managers, everybody was happy.

This is the best description of modern software development I have ever seen.

> It seems that, contrary to what everybody is saying, software developers are in plentiful and cheap supply so wasting a lot of their talent makes economic sense over the perceived cost of adapting more powerful programming systems.

> but we just throw more bodies at the problem because Gartner tells us this is the future.

This last part is the real reason for it: executives are blind morons who have no idea how to run technology-dependent companies, and their poor leadership bleeds down because hierarchical organization.

I used to blame executives because it seemed like they were making terrible decisions that everybody knew were terrible. But now I realize that the reason they're making the terrible decisions is they just have absolutely no concept of how the organization should run. They don't understand the customer, the employee, or the product, but they have generic ideas of how to make generic things, so they just do that and hope the people under them will fix everything.

So of course we're managing everything as tiny little components that get glued together. They're "Fordisming". And "Globalizing" is already here too. Many companies already have one microservice made in India, another in Romania, a third in Spain. Who cares if they barely talk? Who cares if they reinvent the wheel and use conflicting technology? It's all just a game of "reduce cost and increase profit".

The next big hotness is going to be the API-gateway-service-mesh-distributed-tracing monolith that every service will be plugged into. Developers will be given more power to turn on and off things that are connected to this monolithic service frontend. They will thus be able to have faster feedback, but nobody will be coordinating the changes they are making, so actually things will break more often due to conflicting changes.

Finally, some time after that, the developers will figure out that it would be better if, instead of depending on all the external Infrastructure/Configuration-as-Code, they should be using frameworks that have everything built into them, and have their application tell the framework what to do, so a dedicated person won't need to write it all using external tools and weird DSLs. This will persist as a sort of "Java framework for Kubernetes-native Applications", although it'll extend into all the thousands of shitty extension apps that plug all the holes in K8s. And then we'll truly have a new monolith, but a distributed one.

Re: Back to the '70s with Serverless

#56
post #51
post #18

> XML, however, was universally rejected in favour of things like JSON, Yaml, HCL, Toml - all free of structure, with zero indication whether a computer would find your prose gibberish or the next Shakespeare play until you actually pushed your code to some test cluster. There are a few fundamental differences between these languages, but it's just plain wrong to say that any of them are not "structured." Did OP mean…

I'd say that JSON is "structured", and probably HCL as far as I know, but the others have problems. I haven't worked with an API that uses XML in a long time, but does it express the difference between "0123" and 123 well? I think that it either doesn't, or you add some really awkward schema language with XML namespaces ... I just translated my .travis.yml to JSON, and I learned that deploy: on: branch: master gets t…

> "on" is a synonym for true

And "no" is a synonym for false, hence "the Norway problem."

https://hitchdev.com/strictyaml/why/implicit-typing-removed/

Re: Back to the '70s with Serverless

#57
For all its flaws in design or philosophy, cloud computing has a sweet spot.

As an indie, lone dev, I can run my site, email and a basic web app for about 10 USD a month and, if my app kicks off, I can scale it to a million users without breaking a sweat.

To me, that is the true power of the modern cloud computing paradigm. An influx of great apps and services enabled by cheap scalable and sweet competitive cloud services.

Was this even possible in 2000?

Re: Back to the '70s with Serverless

#58

For all its flaws in design or philosophy, cloud computing has a sweet spot. As an indie, lone dev, I can run my site, email and a basic web app for about 10 USD a month and, if my app kicks off, I can scale it to a million users without breaking a sweat. To me, that is the true power of the modern cloud computing paradigm. An influx of great apps and services enabled by cheap scalable and sweet competitive cloud ser…

Properly scaling a site is more than just clicking a button. Your architecture needs to have been built from the ground up in a way that actually can scale horizontally, for starters.

Re: Back to the '70s with Serverless

#59

For all its flaws in design or philosophy, cloud computing has a sweet spot. As an indie, lone dev, I can run my site, email and a basic web app for about 10 USD a month and, if my app kicks off, I can scale it to a million users without breaking a sweat. To me, that is the true power of the modern cloud computing paradigm. An influx of great apps and services enabled by cheap scalable and sweet competitive cloud ser…

Properly scaling a site is more than just clicking a button. Your architecture needs to have been built from the ground up in a way that actually can scale horizontally, for starters.

True. I made an assumption that the app is built that way. Of course, if te app architecture inherently unscalable, no amount of computing power or private servers is going to help.

Re: Back to the '70s with Serverless

#60

> You deploy individual stateless functions. But not inside a Java monolith, that is old, but on top of a distributed system. You would have been laughed out of the door if you had proposed that in 2000, and you should be laughed out of the door right now, but such is the power of marketing. I’m sorry but this absurd and blatantly ignores the reasons why people choose serverless. No mention of scale to zero, virtuall…

> You’d have to pay engineers to build the same systems provided by serverless if you want smooth deployments and high availability. Also, imagine if you wanted to start operations outside of the continental United States. You’d need to find a data center provider, buy machines, pay someone to install them (and hope they do it correctly), and then, when ever you have a technical problem, you need to email the datacenter team to have someone plug in a KVM with 5 seconds of lag so your engineers can debug, and then you have to pay admins to constantly maintain the servers, and consistently pay for their rack space even if they aren’t being fully utilized. None of this is a problem on a fully managed serverless platform.

What are you even talking about dude? You don't have to build a rack in a colo to run a non-Serverless app. There's this thing called The Cloud now, and Virtual Machines, and other fancy new technologies from 15 years ago.

"Serverless" as in Lambda is a joke. "Serverless" as in Fargate is legitimately great at lowering ops overhead. But "zero operational overhead" is absolute bullshit. Even Lambda has operational overhead.

Serverless is just the abstraction of a function into a compute unit. There's like 20 other things you need for a functioning product, many of which literally cannot be replaced by Serverless-anything. And the severe limitations of many Serverless technologies make it very unwieldy to use.

Give it 10 years and it may morph into something more like a monolith whose functions become "Serverless", like a Beowulf cluster where forks are executed on remote nodes and there's some ugly glue to tie it all together. That seems a lot more seamless and useful than trying to architect 100 tiny pieces together with crappy custom integrations everywhere.

Post reply on HN