Hacker News new | ask | show | jobs
by baobun 528 days ago
This misses the main factor, I think: Vendor lock-in.

There is no unification of APIs - every provider has their own bespoke abstractions typically requiring heavy integration into further vendor-specific services - moreso if you are to leverage USPs.

Testing and reproducing locally is usually a pipe-dream (or take significantly more effort than the production deploy). Migrating to a different cloud usually requires significant rewrites and sometimes rearchitecturing.

5 comments

This the reason I tend to not use a serverless solution in most cases.

I want my code to be written and executed on my machine in a way that can at least kind of resemble the production execution environment. I want a binary that gets run and some IO access, most of the time.

If I have a VM or a "serverless"-style compute like Fargate on ECS, I can define an entry point, some environment variables, and we're off to the races in a very similar environment to my local (thank god for containers and VMs).

The _idea_ of lambda and the similar services is awesome to me, but it's just such a PITA to deal with as a developer, at least in my experience.

Google cloud run and Azure container apps both let you run an arbitrary docker image without having to deal with custom setups. Both scale automatically so they are serverless. AWS has apprunner but it doesn't scale to zero.[0]

[0] https://github.com/aws/apprunner-roadmap/issues/9 (amusingly the issue OP posts on HN)

Lambda does as well. You can even use their runtime interface client to run your function within the same wrapped that Lambda uses irl
Can I upload my web server as a docker to Lambda and have it run forever there? I though Lambdas were supposed to be more short lived (like a couple hours), is that not the case? It's been a while since I actually looked at Lambda because GCP run is so clean.
If you're married to running your own Web server, you could use schedules to run your Lambda every 15 mins....but you might as well use Fargate at that point (easier and probably cheaper).

If you're not married to running your own Web server, you can use API gateway with your Lambda functions, which is the traditional approach. Your frontend and it's assets can be served from an S3 bucket with Lambdas powering your backend. Cold start times will be a concern with this approach, but there are "warm-up" strategies you can employ to prevent that.

There is also knative, which cloud run is based on
Example, Vercel and Nelify, both running on top of AWS, yet their serverless offering is a tiny subset of Lambda capabilites.
There are a few platform abstractions. Quarkus, a Java framework, has Funqy, an extension that abstracts the differences between something like aws Lambda and Knative triggers, and feels quite easy to use.

https://quarkus.io/guides/funqy

In python there is lithops, which provides nice Executor primitives that can run on a wide range of cloud services (AWS lambda, GCF etc.)

https://github.com/lithops-cloud/lithops

Omg the Python code examples are center aligned. But it looks sweet
That's extremely funny in the one language that cares about alignment.

(& the argument that I keep using against significant whitespace, which is that all sorts of other tools assume it can mess around with it with no downsides)

People should probably click before downvoting... this is what it looks like in the README:

  from lithops import FunctionExecutor

            def hello(name):
          return f'Hello {name}!'

   with FunctionExecutor() as fexec:
    f = fexec.call_async(hello, 'World')
             print(f.result())
If you copy/paste it the indentation is correct, it's just the display formatting for some reason.
I’m building a serverless platform with the familiar interface of Kubernetes: https://kapycluster.com. Does this fit your expectations?
It does look like it! Personally I'm off the k8s train and don't currently have a use-case but best of luck!

feedback: why make a clear distinction between "magic node" and "BYON"? Two new concepts to learn when I feel a value-prop for some users would be to not have think about these distinctions? (Just talking about wording and communication here - can you get the value prop across with less reification?)

Thanks for the feedback! I’ve been thinking about the wording too—and you might be right, perhaps highlighting the Magic Node as the mainstay vs BYON being a smaller, side feature might help sell the main value prop. I’ll try clearing that up!

Thanks again!

Cheers! What I meant was : Skip even naming/introducing the two words/concepts at all.

"Managed node" and "self-hosted nodes" are examples of more familiar concepts you can utilize to communicate.

Ah, I see! That helps a ton, thanks for the tip!