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
37 changes: 16 additions & 21 deletions content/en/function-as-a-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,25 @@ category: Technology
tags: ["infrastructure", "", ""]
---

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 cloud computing model that provides a platform for executing event-triggered functions, allowing for automatic scaling without manual intervention.
At its essence, FaaS enables the deployment of individual functions that are activated by specific events, operate on a short-term basis, and then shut down, ensuring resources are not wasted.
This model supports an [autoscaling](/auto-scaling/) feature, enabling a function instance to be initiated per request and terminated post-execution, emphasizing its stateless nature.
Consequently, FaaS platforms can implement a true pay-as-you-go billing approach, eliminating costs when functions are dormant, distinguishing it from other models like [Platform as a Service (PaaS)](/platform-as-a-service/), which require continuous resource availability.

## 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.
The cloud infrastructure necessary to run an app is active even when the app isn’t being used.
Traditionally, businesses have relied on maintaining on-premises data centers, necessitating substantial investment in hardware, software, and personnel.
This setup demands resources to be scaled to peak demand, resulting in underutilized assets during downtime.
Moreover, rapid business growth can overwhelm IT capabilities, leading to operational inefficiencies.
In contrast, [Infrastructure-as-a-Service (IaaS)](/infrastructure-as-a-service/) models, while offering cloud-based solutions, still place the onus of scaling resources on the user, requiring payment for continuous server availability irrespective of actual usage.

## 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/).
Billing is based on computation time alone, which means businesses do not have to pay when the functions are not in use.
FaaS gives developers an [abstraction](/abstraction/) for running web applications in response to events, eliminating the need to manage server infrastructure.
For example, an action such as uploading a file could trigger custom code that transcodes the file into various formats.
The FaaS infrastructure automatically adjusts resources to match demand, freeing developers from the complexities of coding for [scalability](/scalability/).
Charges apply solely for the duration of computation, ensuring no costs accrue when functions are inactive.

For more information, refer to the [Serverless](/serverless/) glossary entry.
Although "serverless" and "FaaS" are often used as interchangeable terms, they embody distinct concepts.
39 changes: 19 additions & 20 deletions content/en/serverless.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,28 @@ Category: Technology
tags: ["architecture", "", ""]
---

Serverless is a cloud native development model that allows developers to
build and run applications without having to manage servers.
While servers do still exist within the serverless paradigm, they are [abstracted](/abstraction/) away from the application development process.
A cloud provider handles the routine work of provisioning, maintaining, and [scaling](/scalability/) the server infrastructure.
Developers can conveniently package their code into [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.
Consequently, when a serverless function is in an idle state, there are no associated costs.

Serverless Computing [abstracts](/abstraction/) servers away from the user.
Operational management falls to the service provider, including handling physical machines and VM provisioning.
Service providers can be public cloud entities or internal IT departments serving their development teams.
These providers offer user interfaces such as SDKs, CLIs, or OCI-compliant runtimes, focusing on code and deployment tasks.
Charges are based on a pay-per-use model.
[Scaling](/scalability/) and resource provisioning for computing, storage, or networking are automatically adjusted based on application demand without user intervention.
A serverless platform provider consolidates resources to serve multiple users on a single physical machine, ensuring isolation through virtualization, especially with [VMs](/virtual-machine/).

Serverless is a comprehensive term encompassing services with these attributes, extending from [Platform-as-a-Service (PaaS)](/platform-as-a-service/) to [Software-as-a-Service (SaaS)](/software-as-a-service/).

## 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.
The cloud infrastructure required to operate an application remains active even when the application is not in use.
In traditional [Infrastructure-as-a-Service (IaaS)](/infrastructure-as-a-service/) [cloud computing](/cloud-computing/) models, users commit to a predefined capacity, resulting in charges for continuous server availability regardless of actual use.
Responsibility for adjusting server capacity to meet fluctuating demands falls on the user, maintaining active infrastructure even during idle periods.

## How it helps

Contrasting with traditional approaches, the serverless architecture launches applications only when they are 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.
Serverless architecture introduces a more efficient approach, activating services solely upon demand.
This model ensures dynamic resource allocation by a cloud provider, eliminating costs for unused services.
Beyond financial and operational efficiencies, serverless technology relieves developers of the burdens of scaling applications and managing server infrastructure.
Tasks such as operating system maintenance, security updates, load balancing, capacity planning, and monitoring are delegated to the cloud provider, streamlining the development process.

Refer to the [Function-as-a-Service (FaaS)](/function-as-a-service/) glossary entry for more information.
Although "serverless" and "FaaS" are often used as interchangeable terms, they embody distinct concepts.
4 changes: 4 additions & 0 deletions wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -233,3 +233,7 @@ TCP
TCP/IP
UDP
HTTP/3
CLI
CLIs
SDK
SDKs