Serverless grows beyond Amazon
First, it’s important to understand first what “serverless” means. It doesn’t actually mean computing without servers; instead, it’s function-as-a-service (FaaS), platform-as-a-service (PaaS) or even container-as-a-service (CaaS).
In its most skeletal form, a customer specifies a function — what is the product of three and five, for instance — and leaves all the details of implementation to the FaaS provider. That includes the kind of operating system used, the particular hardware, where that hardware runs, and so on; the customers only cares about specifying their problem clearly so they receive a correct answer.
The promise of FaaS is that the customer can leave all of computing’s chores to the provider’s experts, apart from the central value of expression of the function. Customers benefit from focusing on the unique value of their function, and they can save expenses through a contract that charges only for the essential computation when it is executed: In principle, there’s no need to maintain infrastructure during all the time the computation isn’t needed. Any server is only involved and amortized on demand.
AWS’s Lambda was the pioneer in large-scale FaaS. The market increasingly regards FaaS as a commodity, though, and competitors Azure and Google Cloud, among others, are gaining on Amazon. That’s the first important trend to know: It has become perfectly reasonable to buy serverless from someone other than AWS.
AWS isn’t standing still, though: late in 2017, it introduced its CaaS offering, Fargate.
Will CaaS replace FaaS? I don’t expect that at all: FaaS will continue to be the right choice for far more cloud customers for at least a few years. At the same time, CaaS is sufficiently important that most cloud providers will offer some form of it soon. In evaluating and testing serverless designs, make sure everyone has the same kind of serverless in mind.
However, a little tuning makes it possible for Java to fly just as high as its usual competitors. “Serverless Java” can be a great technical solution, and organizations will choose it more and more in coming years. A huge backlog of Java-coded enterprise applications deserve migration to serverless.
One complication to the serverless Java story is the remarkable growth in the use of Go since its release at the beginning of the year. Will Go turn out to be a better Java than Java itself for serverless? It’ll be a few years more before we can fairly judge this question.
Functional languages in serverless deployment
Most commercial work I know to this point has been done in F#, Haskell, and Scala. Elixir and other functional languages are just now gaining the tools they need to make serverless work well for them.
One consistent signal from industry surveys is that the biggest challenges when it comes to serverless are monitoring and debugging, which can be seen as aspects of testing. How to test and monitor serverless applications is an active area for research and development, and the next couple of years will be particularly exciting.
Data management and serverless computing
Perhaps most crucial of all are questions about how to handle databases in a PaaS architecture. Languages are arguably fungible, cloud markets might change but they won’t disappear, and clever people will eventually come up with tolerable container licensing schemes. Database management, though, has to be right for serverless to take off properly. And it’s not there yet.
Azure argues for its Cosmos, and other providers have their own recommendations. None of them have yet proven themselves ready, though, to be safe stores for the trillions of dollars of value that corporate and governmental databases represent. Businesses have demonstrated that algorithms and even employees can be traded out; customer records, process recipes, and all other trade secrets, however, are irreplaceable.
Databases must be managed with care, and the stateless-serverless world is only now starting to understand how to handle transactional persistence. The next few years will matter the most for putting the framework of this answer in place.
Serverless’s explosive growth makes it hard to predict specific outcomes, but the broad outlines of serverless are clear by now: Rapid growth will continue, and solutions to testing and database management problems are so vital that some winners will soon emerge.