Fn project - first impressions
October 4, 2017
Oracle just announced and published (open sourced!) a new project at this years JavaOne conference:
a supposed-to-be serverless, er, platform? framework? whatever. It’s about functions, as the name already assumes, so it’s just (another) FaaS.
Of course, Oracle praises this as the new, one and only reasonable and sustainable Function-as-a-Server, or serverless solution of all already available. Oracle also means, that their “cloud” is much better than all the others. Whoever believes that?
So, I had a first look at Fn project.
It’s based on Docker. And you need Docker to develop your functions.
No Docker, no functions, no Fn project.
Basically, Fn project is just a framework to create Docker images, which then have to be deployed and run in a Docker cluster (e.g. Kubernetes, Mesosphere, Docker Swarm). So, why do you call it serverless framework then? Docker image creation framework would meet it more.
Hey, I really like Docker.
But in the serverless world, there is no need for Docker for developers.
I just want to code a function, deploy it into a runtime and execute it.
However this runtime works and lives in, I don’t care.
I don’t WANT to care.
I don’t NEED to care.
It’s called serverLESS!
So, Fn project can’t be serverless, because I have to care about containers.
Let’s compare Fn project against some thesis of the Serverless Manifesto:
No machines, VMs, or containers visible in the programming model.
As mentioned already, I DO have to care about a container.
Scales per request. Users cannot over- or under-provision capacity.
I don’t see anything, that Fn project scales per request. I don’t see anything how Fn project scales at all. Again, I have to care myself, or, at least, I have to configure the Docker cluster to scale. But I have to do it on my own.
Never pay for idle (no cold servers/containers or their costs).
As Fn project is based on Docker, you need a Docker cluster (see above) to run it. This cluster has to run, has an uptime. This cluster has to be managed. And you have to pay for running and managing this cluster (and not only for the energy, you also need manpower for managing it, and serverless is about NOT to manage servers/containers).
Implicitly fault-tolerant because functions can run anywhere.
The term anywhere means, that there are a bunch of alternative execution environments, where my function can be executed, when the defaul/desired environment isn’t available. Even more: there is no default execution environment. With Fn project you have to run and manage, as already said multiple times, your own Docker cluster as an execution environment. What do you do if this cluster isn’t available? Because it crashed? Because you mis-managed it? Because everything fails, all the time? Do you run and manage a standby-cluster? Which you have to pay for (see above item)?
So, there are at least(!) four items that violates the basic principles of serverless computing.
And you think you are serverless, Fn? Seriously?
IMHO, it’s just a Docker image creation framework.
Perhaps I’m completely wrong. If so, please correct me and tell me, how Fn is serverless below in the comments.
If you want to know more about Serverless Computing, what it is and what it means, just buy my (german) book at Amazon!
As Chad Arimura (Oracle) says in the comments below, there will be managed service coming up later. This might change one or two points, at least. Also, we first have to check/test what Oracle understands by a managed service.
When? Where? That’s always a surprise when dealing with Oracle products…