Spring, Functions, Serverless and You
Pivotal sponsored this post.
Serverless is so cool, but you already know that. Developers are all really excited about the possibilities — the raw potential that serverless has unleashed — and rightly so. The simplicity, the flexibility. It’s intoxicating. It’s liberating. I should use it for everything, right?
Well, actually, no. Probably not…
Serverless is just the latest in a long line of abstractions. IaaS, CaaS, PaaS and most recently FaaS have, in turn, elevated us further and further from the technical plumbing of application development. Each has moved the “value line” onwards and upwards and released us from the toil.
But, as is generally the case with early-stage technology, it’s important for us to stay grounded with regard to serverless. It’s important to remember that serverless is just one more option — a powerful one, granted — but it’s not for every workload.
The smartest among us are already asking: “Is serverless the right approach for me and my particular workload?”
In a video recorded recently at the SpringOne Platform conference, Nathaniel Schutta, developer advocate at Pivotal, takes us on a journey through recent history in order to answer this most pressing question.
Along the way, Schutta passes the staging posts laid down by IaaS, CaaS, PaaS and FaaS. He looks at the technologies that made all this possible and brings us up to date with the latest innovations in serverless (including Knative and riff). Finally, we discover how technologies like Kubernetes help us to “do serverless” anywhere where there’s a K8s dial tone — whether that’s on-premise or in the public cloud.
Below are some excerpts from Nathaniel Schutta’s talk on “Spring, Functions, Serverless and You.”
One Size Does Not Fit All
“The onus is on us to really try to understand when we should reach for each tool. IaaS, PaaS, FaaS, Serverless, etc.”
Delivery at Speed Is Everything Now
“I’ve done this long enough that I very distinctly remember when servers were this homegrown artifact. They were bespoke. They were artisanal. And while we really appreciate that in a sandwich, it’s probably not what we want in our infrastructure. I waited a year once for a development database. That’s not good. I had to fill out lots of forms, write emails, build support tickets, attend meetings, and then more follow-up, and eventually, I would finally have a server. These servers were so dear to us we’d give them pithy names after Simpsons characters. This took time. This cost a fortune. We really need to shorten this code to prod cycle.”
Platforms Are Great
“The beauty of [a Platform as a Service] is you don’t have to know everything that goes into it. My runtime can come from a buildpack. You can just push an app and it says “okay I know what kind of app that is.” Then it goes ahead and gets the proper buildpack for it and deploys your app into that buildpack, uploads it, and the router says “okay, I got room on this guy” plonks it out on that server and away you go!”
One Paradigm Does Not Fit All
“Life moves pretty fast. We have gone from IaaS to CaaS to PaaS now we’ve got serverless and FaaS. I actually had somebody come up to me a couple of months ago and said: “we’re gonna refactor our entire application as a set of functions”. I bite my tongue to keep from chuckling. It’s probably not a good idea.”
It’s All About Latency Sensitivity
“A lot of people like to say we can’t use Java in a serverless environment because a cold start hurts too much. That’s not relevant. If you’re worried about cold start the problem isn’t the language you chose the problem is the fact that you tried to do it as a function. You have to take a step back and ask yourself “is this particular use case gonna be latency sensitive or not?” If it is, it’s probably not the right choice. You should find another solution. You’ve got other abstractions to pick from and you should choose one of those instead.”
Feature image via Pixabay.