DEV Community

Cover image for Serverless is Ready, Developers Are Not

Serverless is Ready, Developers Are Not

Ibrahim Cesar on March 28, 2021

Inspired by Andrew Brown who outlined a course that he shared on Twitter and by an ongoing reflection on my own experiences with cloud and serverle...
Collapse
 
yaser profile image
Yaser Al-Najjar • Edited

I believe it's not the developers, but it's actually the serverless thing that is not ready yet.

Look, it's all about the developer experience && economics.

When you tell me that:

  • I have to signup in AWS ecosystem (though I really love it, but some might not).
  • Then you tell me I have to use all the tools they provide and switching in the future might not be a choice.
  • Further, things get even scarier: you can't have this whole serverless thing in a self-hosted solution.
  • Then you add: your bill follows "pay as you go" pattern, and you cannot have some flat simple pricing for your "simple" apps.
  • And guess what, building a simple CRUD app might take you days.

Then I would tell you: I DON'T BUY IT and good luck convincing other developers!


BTW, I tried the serverless thing to write a lambda function that creates backups and stores them in S3... that experience sucks.

I ended up writing a simpler solution with cron inside the db container then sending the backup to S3... works just fine and can be tested super easily.

Collapse
 
ibrahimcesar profile image
Ibrahim Cesar

I don't think any framework / app/ system is for everyone. I don't know in what point or what tools you used but with AWS Amplify you can literally create a CRUD app these days in less than half a hour with authentication. Sure, unpolished and you'll need more work, but the basics will be all set!

But no means I'm advocating "all things serverless". My point is serverless is mature but we need understanding how fits with our current mental models and team topologies.

Collapse
 
yaser profile image
Yaser Al-Najjar

Well, to understand how it fits we will need to see real world successful applications that are built on serverless model.

Would you please point me to any such examples?

Thread Thread
 
ibrahimcesar profile image
Ibrahim Cesar • Edited

Lego Group has adopted with much success: medium.com/lego-engineering/the-po...

...and there's lterally a page called AWS Serverless Customer Success: aws.amazon.com/serverless/customer... with all sorts of real world successful applications that are built on serverless model

Thread Thread
 
yaser profile image
Yaser Al-Najjar

Thank you so much!

I will read these and come back 😄

Thread Thread
 
ibrahimcesar profile image
Ibrahim Cesar

Found another high level use case, BBC: twitter.com/drewfirment/status/137...

Thread Thread
 
yaser profile image
Yaser Al-Najjar

Thanks again @ibrahimcesar
I've read the articles and from what I understood Lambda good use cases are for apps that have high/undetermined load.

And they're not for usual apps that we can spin in mins with Heroku.

Collapse
 
brpaz profile image
Bruno Paz • Edited

There are some good use cases for serverless for sure, but it's far from being an holy grail for everything.

Microservices had this hype before, but now some people are going back to a more monolith architecture.

IMO, the appeal of reduced complexity is only apparent. it just switch places from the application code to network layer. While not having to manage the underlying infrastructure is as a plus, you still have to manage the communication between functions. And that effort is offten undervalued. Good luck orchestrating hundreds of single functions together, managing network issues etc.

Why having this extra complexity for a Crud like App instead of building a more traditional application with A Mysql or Postgres db? You can use a managed solution like RDS if you really want to have less maintenance.

Instead of building your infrastructure to fit your application you now have to build your application to fit the infrastructure.

Again, it's a balance that everyone have to make for there projects.

And I won't talk about lock in, which is another big issue with many Serverless services.

A personal example: I was building a small app and tought firebase was a good idea as I really didn't want to worry about Apis and db. Until I discovered It doesn't allow a simple thing as "like" search. I have rebuilt everything with a simple Go API and a PostgresSQL db hosted in Hertzner Cloud. Much simpler and flexible.

In conclusion, Serverless has potential and there are definitely good use cases for it.
But you have to think well about it's trade-offs.

I like Cloud run and KNative for example, because they mitigate some of the problems I mentioned. You can run any Docker container in cloud run, so you are not locked in and don't need to change the application code if you want to deploy elsewhere.

As a Developer, give me a cluster where I can deploy containers with a single command, based on standards, that I could customize if I want, with persistence storage and long running processes support and I am all set. ;) That's the kind of serverless I want to see and we are definitely not there yet. DigitalOcean app platform comes close but still missing some features and dont like their pricing model.

Collapse
 
ibrahimcesar profile image
Ibrahim Cesar

Sure! This is my whole-point and couldn't agree more on "choose your own weapon"

Collapse
 
dvddpl profile image
Davide de Paolis

thanks for posting this.
I also believe that besides junior level, the separation between frontend and backend is meaningless (even though you might have some preference or want to specialize in one or the other), we all must be fullstack, and serverless devs!
Expecially i like the part about the cognitive (over)load, very interesting

Collapse
 
brianleroux profile image
xnoɹǝʃ uɐıɹq

Good read! 🙏 It's a fun topic. Would love your feedback on our take: arc.codes which, obviously biased, feel addresses most of the pain points you mentioned.

Collapse
 
ibrahimcesar profile image
Ibrahim Cesar

For sure! Is in my to do list for some time I must say :)