Lately, I’ve been working on a serverless development kit for Go. The goal is to make the serverless development experience as smooth as the local. Write, build, run - that’s all.<p>While working on it, we found these things the hardest in serverless:
* complex setup and deployment procedures
* hard to debug
* need to change thinking about the system architecture
* management tools (AWS console) made for admins, instead developers<p>Have you been playing with serverless? How was your experience? What’s been hardest?
Hard to say.<p>I've mainly written simple Lambdas in Python and for that it is easy to "get things done" with the AWS Management Console.<p>In some sense, when things "get hard" with Lambdas you probably shouldn't be using Lambdas anymore. The tough issues you address can best be addressed by having opinionated answers to them, but if those opinions don't jive with the rest of the systems somebody uses you can take your tool out of the running for some users.<p>Perhaps the most central idea in AWS architecture is how you keep track of connection information. (e.g. credentials to talk to Dynamo DB or SES or whatever) Life can be sweet if you have a good answer for this, but if you don't you are going to suffer, get hacked, etc.
I often use Lambda in an unintended way with a whole Python based website for each Lambda. It works surprising well, is secure, and totally removes server (i.e. EC2) management effort.<p>Using the API Gateway is optional now but is was a pain to configure for simple cases.<p>AWS in general is painful to manually configure for simple project. Automation improves the situation but again is a waste of time for very simple projects.
i found a lot difficult, like:<p><pre><code> - how to structure my code, esp wrt callbacks/ step functions
- are there any conventions? like, what should my handler be called?
- uploading libraries (into/via layers) was stupid
- no ability to decomission lambdas -- you just gotta delete 'em
- finding lambdas was painful; the console was slow
- linking them to api gateways and configuring was painful
</code></pre>
i'm still a fan of the general concept, but once i got past 'hello, world', the dev cycle slowed down tremendously.