Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EN] update FaaS & Serverless #2217

Merged
merged 12 commits into from
Mar 26, 2024
48 changes: 29 additions & 19 deletions content/en/function-as-a-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,40 @@ tags: ["infrastructure", "", ""]

## What it is

Function as a Service (FaaS) is a type of [serverless](/serverless/) [cloud computing](/cloud-computing/) [service](/service/)
that allows executing code in response to events
without maintaining the complex infrastructure
typically associated with building and launching [microservices](/microservices/) applications.
With FaaS, users manage only functions and data while the cloud provider manages the application.
This allows developers to get the functions they need without paying for services when code isn’t running.
"Function as a Service (FaaS) is a compute service model in line with other as a Service offerings.
The core of this concept are event-triggered, single-scoped functions, i.e. cloud functions, which scale up and
down on demand without user interaction.
This [autoscaling](/auto-scaling/) property is one of the unique characteristics of FaaS.
Such platforms conceptually start a single function instance for each request and tear this instance down again
after the function is executed. Therefore,
cloud functions are inherently stateless.
Which means that platform providers are able to offer a genuine pay as-you-go billing model where users are only
charged when the cloud function is running as instances scaled
to zero results in no idling costs.
Other comparable computing models like [Platform as a Service (PaaS)](/platform-as-a-service/) based offerings always
have at least a single instance running to serve requests." [(Manner 2023, p.521)](https://doi.org/10.1109/CLOUD60044.2023.00068)

iamNoah1 marked this conversation as resolved.
Show resolved Hide resolved

## Problem it addresses

In a traditional on-premises scenario, a business manages and maintains its own data center.
The business must invest in servers, storage, software, and other technologies
and potentially hire an IT staff or contractors to purchase, manage, and upgrade all the equipment and licenses.
The data center has to be built to meet peak demand, even when workloads decline and those resources stand idle.
Conversely, if the business grows quickly, the IT department might struggle to keep up.
Under a standard [Infrastructure-as-a-Service (IaaS)](/infrastructure-as-a-service/) cloud computing model,
users pre-purchase capacity units, meaning you pay a public cloud provider for always-on server components to run your apps.
It’s the user’s responsibility to scale up server capacity during times of high demand
and scale down when that capacity is no longer needed.
In a traditional on-premise scenario, a business manages and maintains its own data center.
johannes-manner marked this conversation as resolved.
Show resolved Hide resolved
The business must invest in servers, storage, software, and other technologies
and potentially hire IT staff or contractors to purchase, manage, and upgrade all the equipment and licenses.
The data center has to be built to meet peak demand, even when workloads decline and those resources stand idle.
Conversely, if the business grows quickly, the IT department might struggle to keep up.
Under a standard [Infrastructure-as-a-Service (IaaS)](/infrastructure-as-a-service/) cloud computing model,
users pre-purchase capacity units, meaning you pay a public cloud provider for always-on server components to run your apps.
It’s the user’s responsibility to scale up server capacity during times of high demand
and scale down when that capacity is no longer needed.
The cloud infrastructure necessary to run an app is active even when the app isn’t being used.

## How it helps

FaaS gives developers an [abstraction](/abstraction/) for running web applications in response to events without managing servers.
For example, uploading a file could trigger custom code that transcodes the file into various formats.
FaaS infrastructure will auto-scale the code for heavy use,
and the developer does not have to spend any time or resources building the code for [scalability](/scalability/).
FaaS gives developers an [abstraction](/abstraction/) for running web applications in response to events without managing servers.
For example, uploading a file could trigger custom code that transcodes the file into various formats.
FaaS infrastructure will auto-scale the code for heavy use,
and the developer does not have to spend any time or resources building the code for [scalability](/scalability/).
Billing is based on computation time alone, which means businesses do not have to pay when the functions are not in use.

See also the glossary for [Serverless](/serverless/).
Serverless and FaaS are often used as synonyms, but there is a difference.
iamNoah1 marked this conversation as resolved.
Show resolved Hide resolved
45 changes: 26 additions & 19 deletions content/en/serverless.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

---
Title: Serverless
Status: Completed
Expand All @@ -7,29 +8,35 @@ tags: ["architecture", "", ""]

## What it is

Serverless is a cloud native development model that allows developers to
build and run applications without having to manage servers.
There are still servers in serverless, but they are [abstracted](/abstraction/) away from app development.
A cloud provider handles the routine work of provisioning, maintaining, and [scaling](/scalability/) the server infrastructure.
Developers can simply package their code in [containers](/container/) for deployment.
Once deployed, serverless apps respond to demand and automatically scale up and down as needed.
Serverless offerings from public cloud providers are usually metered on-demand through an event-driven execution model.
As a result, when a serverless function is sitting idle, it doesn’t cost anything.
"Serverless Computing is a generic computing approach where servers are [abstracted](/abstraction/) from the user.
All operational aspects like managing physical machines and providing VMs are tasks of the service provider.
A service provider is typically a public cloud provider but also in-house IT departments can act as service providers for their own development teams.
They offer interfaces for service users like SDKs, CLIs or OCI compliant runtimes where the focus is on code, configuration options or deploying/uploading artifacts.
All offerings are pay-per-use.
[Scaling](/scalability/) and provisioning of additional computing, storage or network resources happens without user interference based on the demand of the deployed applications and ecosystem services like data storage.
A provider of a serverless platform pools resources and serves multiple users on the same physical machine.
Tenants are isolated via virtualization approaches in particular [VMs](/virtual-machine/)." [(Manner 2023, p.520)](https://doi.org/10.1109/CLOUD60044.2023.00068)

Serverless is therefore an umbrella term for all services with these characteristics.
Serverless offerings range from [Platform-as-a-Service (PaaS)](/platform-as-a-service/) until [Software-as-a-Service (SaaS)](/software-as-a-service/).
iamNoah1 marked this conversation as resolved.
Show resolved Hide resolved

## Problem it addresses

Under a standard [Infrastructure-as-a-Service (IaaS)](/infrastructure-as-a-service/) [cloud computing](/cloud-computing/) model,
users pre-purchase units of capacity, meaning you pay a public cloud provider for always-on server components to run your apps.
It’s the user’s responsibility to scale up server capacity during times of high demand and
to scale down when that capacity is no longer needed.
Under a standard [Infrastructure-as-a-Service (IaaS)](/infrastructure-as-a-service/) [cloud computing](/cloud-computing/) model,
users pre-purchase units of capacity, meaning you pay a public cloud provider for always-on server components to run your services.
It’s the user’s responsibility to scale up server capacity during times of high demand and
to scale down when that capacity is no longer needed.
The cloud infrastructure necessary to run an app is active even when the app isn’t being used.
iamNoah1 marked this conversation as resolved.
Show resolved Hide resolved

## How it helps

With serverless architecture, by contrast, apps are launched only as needed.
When an event triggers app code to run, the public cloud provider dynamically allocates resources for that code.
The user stops paying when the code finishes executing.
In addition to the cost and efficiency benefits,
serverless frees developers from routine and menial tasks associated with app scaling and server provisioning.
With serverless, routine tasks such as managing the operating system and file system, security patches,
load balancing, capacity management, scaling, logging, and monitoring are all offloaded to a cloud services provider.
With serverless architecture, by contrast, services are launched only as needed.
A public cloud provider dynamically allocates resources for these services.
The user does not have to pay when the service does not run.
In addition to the cost and efficiency benefits,
serverless frees developers from routine and menial tasks associated with app scaling and server provisioning.
With serverless, routine tasks such as managing the operating system and file system, security patches,
load balancing, capacity management, scaling, logging, and monitoring are all outsourced to a cloud services provider.

See also the glossary for [Function-as-a-Service (FaaS)](/function-as-a-service/).
Serverless and FaaS are often used as synonyms, but there is a difference.
iamNoah1 marked this conversation as resolved.
Show resolved Hide resolved