Hi Qian,

There’s a deployment time process, where the user uploads their functions to 
the serverless platform. At that time, the system packages/containerizes the 
function code and stores the container (or lightweight VM) in a registry. From 
there, a serverless endpoint is setup and linked to your containerized 
function. This function upload step works very similar to how Heroku PaaS 
operates, where the service platform runs a build step before launching your 
application.

Since sending you the first email, I have since learned that AWS Lambda service 
uses something called Firecracker which is using a containerization technology 
that is closer to VMs than docker containers. Hence, the reference to 
lightweight VM above.

Kind regards,
John Siegrist

> On 12 Sep 2021, at 11:24 pm, Qian Zhang <zhq527...@gmail.com> wrote:
> 
> Thanks John for the detailed info which really helps me understand the
> requirements better.
> 
> For each request, the serverless runtime launches one copy of the
>> containerized function.
> 
> 
> Can you please elaborate a bit more on this? What did you mean for the
> `containerized function`? Is it just a normal function call inside the
> container which packages the supported language runtime and the function or
> an on-demand short-live container dedicatedly launched for each request?
> 
> 
> Regards,
> Qian Zhang
> 
> 
>> On Wed, Sep 8, 2021 at 9:30 PM John Siegrist <j...@complects.com> wrote:
>> 
>> Hi Qian,
>> 
>> After looking into the open source options for widely-used serverless
>> frameworks, I noted these five:
>> * Oracle-backed Fn: https://fnproject.io/
>> * Kubeless: https://kubeless.io/
>> * Fission: https://fission.io/
>> * OpenFaaS: https://www.openfaas.com/
>> * Apache OpenWhisk: https://openwhisk.apache.org/
>> 
>> Briefly looking at the OpenWhisk documentation, it says that Mesos is
>> already supported alongside Kubernetes and Docker Swarm. I haven’t studied
>> OpenWhisk so I don’t know if it works different than the mostly
>> Kubernetes-based projects in this space.
>> 
>> The way most of these ‘function as a service’ frameworks work is that you
>> provide the function in one of the supported languages, and the system then
>> packages your function with an appropriate runtime into a container. From
>> there, the serverless runtime waits for a request to come in on the service
>> endpoint. For each request, the serverless runtime launches one copy of the
>> containerized function. Functions are supposed to run for extremely short
>> durations, and the serverless runtime meters the running time. You’re
>> billed by the second or fraction of a second for function execution time.
>> For one of these services you are running on your own infrastructure, then
>> obviously there isn’t a billing component like exists with the cloud
>> providers.
>> 
>> None of the major cloud providers have a good solution for using
>> serverless functions that require persistent state. Each function
>> invocation terminates when it’s finished, so nothing persists. Any state
>> needs to be looked up or persisted to external storage. So far, I haven’t
>> seen any good solution proposed for how to do this better. When you’re
>> being charged by the second, you don’t really want your functions to have
>> to query and fetch state over the network before being able to respond to
>> inbound requests, but this is how it currently has to work.
>> 
>> Even if Mesos (and some new framework) doesn’t solve the stateful
>> serverless version of this problem, it is still beneficial if the workload
>> isolation between serverless functions is just as good/secure as is
>> available on Kubernetes but without the overheads for function
>> containerization and function container startup times for each inbound
>> request.
>> 
>> I understand what you said about some of the answer being in the
>> scheduling framework rather than in Mesos itself. This Mesos framework
>> would need to make a runtime decision about where to schedule the function
>> execution based on the inbound request and where the data accessed by the
>> function is distributed across the Mesos cluster. Of course, if the
>> function itself has to be transferred across the network as part of the
>> response, that just adds more to the function startup time.
>> 
>> Kind regards,
>> John
>> 
>>>> On 7 Sep 2021, at 10:50 pm, Qian Zhang <zhq527...@gmail.com> wrote:
>>> 
>>> Hi John,
>>> 
>>> Thanks for your suggestion!
>>> 
>>>> That is, how do you run serverless workloads that require access to
>>> persistent data and how do you schedule your serverless functions so that
>>> they execute with good data locality to ensure decent performance.
>>> 
>>> If you are talking about the workload scheduling, I think it should be
>>> handled by frameworks rather than Mesos. As we all know, Mesos has a
>>> two-level scheduling mechanism where Mesos master will do the resource
>>> scheduling for the frameworks running on top of it, and each framework
>> will
>>> do the workload scheduling after it receives the resources offers from
>>> Mesos master. Could you please elaborate a bit more on the specific
>>> requirements for Mesos to support serverless workload?
>>> 
>>> 
>>> Regards,
>>> Qian Zhang
>>> 
>>> 
>>>> On Tue, Sep 7, 2021 at 8:27 PM John Siegrist <j...@complects.com>
>> wrote:
>>>> 
>>>> Hello All,
>>>> 
>>>> In going through the mail archive before subscribing to this list, it
>>>> seems there have been a number of discussions around what Mesos should
>> do
>>>> as a project. One use case that might be worth considering is
>> ‘serverless’
>>>> workloads. This would be something where the Kubernetes containerization
>>>> doesn’t provide any advantages, and to some extent may actually be a
>>>> hindrance (slower function startup times as the container spins up).
>>>> 
>>>> In particular, there is an open problem having to do with supporting
>>>> stateful serverless workloads. That is, how do you run serverless
>> workloads
>>>> that require access to persistent data and how do you schedule your
>>>> serverless functions so that they execute with good data locality to
>> ensure
>>>> decent performance. A good serverless solution would increase the
>> relevance
>>>> of Mesos, and it is also a forward-looking direction that doesn’t try to
>>>> reclaim lost territory related to container orchestration. I don’t know
>> how
>>>> much work would be needed to build function-as-a-service on Mesos, but
>>>> since Mesos is already quite good at hosting data workloads it may not
>>>> actually be all that difficult?
>>>> 
>>>> Kind regards,
>>>> John Siegrist
>> 

Reply via email to