When I first heard the term NoSQL, I was mad as hell.
I’m a database guy, making my living with Microsoft SQL Server. I love it dearly, despite some faults here and there. Hearing the term “NoSQL” angered me because removing the SQL language wasn’t the solution to tough development problems.
At first, the NoSQL movement literally meant no SQL language: developers dumped all their data into key/value stores and did all joins in the application. Good for a laugh, but obviously that can’t last too long.
NoSQL later got translated into Not Only SQL, which makes more sense because bigger applications usually need a mix of relational data, key-value stores, cache layers, etc. A lot of stuff gets dumped into the NoSQL bucket, and I’m a big fan of it. After all, not everything belongs in a relational database.
Today, in 2016, I don’t take the term NoSQL to be a personal insult, or an arrow to the heart of the technology I know and love. It’s just a term – albeit a crappy one – to describe a lot of great ideas.
The “serverless” name is NoSQL all over again.
I’d been following AWS Lambda with interest for a while. In theory – write code, upload, workload.
Oh, there are most definitely servers, but you don’t manage:
- What hardware the servers are running
- How servers are networked together
- Security and permissions on servers
- Deployment of code across servers
- The quantity of servers
- The rate at which the servers are spun up & down
(Before you leave an angry comment, read those bullet points carefully. You still manage all of that stuff indirectly, you just don’t manage it on servers.)
You just pay Amazon or Google or Microsoft, and in theory, they do a decent job of all this for you. Do they do as good of a job as you or I might do? Well, that’s a tricky question, and it depends on the amount of time you have available per day to do those things – and I’ve got a lot of stuff to do.
The term “serverless” refers to jobs, not apps.
Over the years, I’ve been a manager, then a sysadmin, then developer, then a DBA. (I’m skipping stuff too – it’s been a long, meandering ride.) I love so many of those roles so much – I really enjoy unboxing server parts and putting ’em together.
But today, I’m a small business owner, and I wanna get some fun stuff to market as quickly and inexpensively as I can. There’s a lot of work involved:
Serverless architecture does not mean a reduction in overall costs.
It just means a change in allocation. You spend less time managing servers, and more time managing processes. If anything, the building and supporting parts skyrockets right now because serverless platforms and tools involve tougher hiring and training. There’s no free lunch, and everything’s a tradeoff.
Bringing stuff to life is a really fun game that involves a few questions:
- What do you want to bring to life?
- How much money & time do you think each of those steps will take?
- How much money do you need to squirrel away in order to do it?
- What shortcuts would you be willing to take to go live faster?
For example, how could I build something asynchronous where the server response times don’t matter? Could I take a task that used to take human beings hours, do it asynchronously, and deliver it via email in minutes, and seem blazing fast in comparison?
Sure, in a perfect world, I’d get VC funding for everything, build it on the Microsoft stack that I know and love, hosted on real physical servers in my own data center. It’s fun building a little empire of flashing lights and whirring fans. I’m not being sarcastic there: I really enjoy that.
But as a small business owner, I can’t afford to do that, and I have to get creative. Serverless architecture isn’t the solution – it’s just a part of some solutions. Like NoSQL, you have to understand where it makes sense.