What's exactly a "serverless application"?

Relating to the “#DecentralizeTheWeb Challenge”:

Develop a demo or concept for a decentralized serverless application that could be built using blockstack.js, and then submit an explanation along with a proof of concept for the application.


What’s exactly a “serverless application”? I mean at some point every application on top of Blockstack uses servers.

For example, storage providers are servers which get used, although they get used “the Blockstack way” (using multiple at once, encrypted and signed, …).

What’s exactly a “serverless application”? I mean at some point every application on top of Blockstack uses servers.

The application itself should not run application-specific functionality on a server. All of its functionality should run on end-points. However, the application may use non-app-specific servers with the caveat that they must not be part of the trusted computing base. This is the case with storage systems like Amazon S3 and Dropbox, for example, because Blockstack’s data is signed and verified end-to-end (so the storage systems are not trusted to serve data).

We’re looking for a better way to say this than “serverless.” We’re open to suggestions :slight_smile:

1 Like

Thought a bit about alternatives but didn’t found a good replacement.
Maybe “providerless”, but that’s less a marketing word as “serverless”.

While I understand that this ‘serverless design’ is a criteria for the challenge, what would keep production, closed-source web applications in Blockstack’s future from running server code that writes its users’ Blockstack ID data into a db?

While I understand that this ‘serverless design’ is a criteria for the challenge, what would keep production, closed-source web applications in Blockstack’s future from running server code that writes its users’ Blockstack ID data into a db?

Blockstack-powered applications send their writes to the user’s storage providers via the locally-running Blockstack daemon. Even if the application client interacts with proprietary server code, the users still own the data they generate and can take it with them to other applications.

“Unhosted”

https://unhosted.org/

1 Like

What about “Self-Hosted”?

What about “Client End Applications” or CEAs

Every user computer can store the data?no need for MySQL ,PostgreSQL these stuff?presuming I wanna upload Pictures or videos on blockstack,may be 5 images and six videos,and 1 billion nodes,where are the images and videos? Which nodes can store these 5 images and six videos? And why ?

You as a Blockstack user are able to define where you want to store your data (which may be encrypted and/or signed). There are so called storage providers which are 3rd party providers (like AWS, Dropbox, an own server, …) on which Blockstack could upload data.

I think the three diagrams below “Unhosted architecture” are helpful with that: https://remotestorage.io

1 Like

Here is a good article describing serverless architectures by Mike Roberts:

One definition Mike uses is:

Serverless can also mean applications where some amount of server-side logic is still written by the application developer but unlike traditional architectures is run in stateless compute containers that are event-triggered, ephemeral (may only last for one invocation)

I’d like to focus on the stateless part i.e., removing server-side state is key here. At Blockstack, we’re going a step further and saying that we need to not only remove the server-side state but we should not trust any server-side infrastructure at all as well. So in our definition of “serverless”, not trusting the remote infrastructure is an additional requirement that’s very important.

According to serverless architecture, while the user interface will still remain a part of the native mobile app, user authentication and management will be handled by a BaaS service like AWS Cognito. These services can be called directly from the mobile app to handle user-facing tasks like registration and authentication.

Moreover, the same BaaS can be used by other backend components to execute user management and authentication. Each distinct operation can be encapsulated in a function. A FaaS platform such as AWS Lambda takes each of these functions and runs them in parallel ‘containers’ that can be monitored and scaled separately.

Source: A Comprehensive Guide to Serverless Architecture.