Serverless computing

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Serverless computing is a misnomer[1][2] referring to a cloud-computing execution model in which the cloud provider runs the server, and dynamically manages the allocation of machine resources. Pricing is based on the actual amount of resources consumed by an application, rather than on pre-purchased units of capacity.[3] It can be a form of utility computing.

Serverless computing can simplify the process of deploying code into production. Scaling, capacity planning and maintenance operations may be hidden from the developer or operator. Serverless code can be used in conjunction with code deployed in traditional styles, such as microservices. Alternatively, applications can be written to be purely serverless and use no provisioned servers at all.[4]

This should not be confused with computing or networking models that do not require an actual server to function, like Peer-to-peer (P2P).

Serverless Runtimes[edit]

Most, but not all, serverless vendors offer compute runtimes, also known as function as a service (FaaS) platforms, which execute application logic but do not store data. The first "pay as you go" code execution platform was Zimki, released in 2006, but it was not commercially successful.[5] In 2008, Google released Google App Engine, which featured metered billing for applications that used a custom Python framework, but could not execute arbitrary code.[6] PiCloud, released in 2010, offered FaaS support for Python.[7]

AWS Lambda, introduced by Amazon in 2014,[8] was the first public cloud infrastructure vendor with an abstract serverless computing offering.

Google Cloud Platform offers Google Cloud Functions since 2016.[9]

Oracle introduced Fn Project, an open source serverless computing framework offered on Oracle Cloud Platform and available on GitHub for deployment on other platforms.[10]

IBM has published OpenWhisk as an open-source serverless platform.[11][12] OpenWhisk includes native support for various programming languages, Node.js and supports more languages and runtimes via Docker containers.

Microsoft Azure offers Azure Functions and nuclio, offered both in the Azure public cloud or on-premises via Azure Stack.[13]

Serverless databases[edit]

Several serverless databases have emerged in the last few years. These systems extend the serverless execution model to the RDBMS, eliminating the need to provision or scale virtualized or physical database hardware.

Azure Data Lake is a highly scalable data storage and analytics service. The service is hosted in Azure, Microsoft's public cloud. Azure Data Lake Analytics provides a distributed infrastructure that can dynamically allocate or de-allocate resources so customers pay for only the services they use.

Google Cloud Datastore is an eventually-consistent document store. It offers the database component of Google App Engine as a standalone service. Firebase, also owned by Google,[14] includes a hierarchical database and is available via fixed and pay-as-you-go plans.[15]

FaunaDB Cloud is a serverless managed offering of FaunaDB in the cloud that can be accessed via a function-as-a-service provider. In FaunaDB Cloud, data is replicated across multiple datacenters running on Amazon Web Services, Google Cloud Platform, and, Microsoft Azure. [16]

Advantages[edit]

Cost[edit]

Serverless can be more cost-effective than renting or purchasing a fixed quantity of servers,[17] which generally involves significant periods of underutilization or idle time.[3] It can even be more cost-efficient than provisioning an autoscaling group, due to more efficient bin-packing of the underlying machine resources.

This can be described as pay-as-you-go computing[17] or bare-code[17] as you are charged based solely upon the time and memory allocated to run your code; without associated fees for idle time.[17]

Immediate cost benefits are related to the lack of operating systems costs, including: licences, installation, dependencies, maintenance, support, and patching.[17]

Elasticity versus scalability[edit]

In addition, a serverless architecture means that developers and operators do not need to spend time setting up and tuning autoscaling policies or systems; the cloud provider is responsible for scaling the capacity to the demand.[3][13][17]. As Google puts it: ‘from prototype to production to planet-scale.’[17]

As cloud native systems inherently scale down as well as up, these systems are known as elastic rather than scalable.

Small teams of developers are able to run code themselves without the dependence upon teams of infrastructure and support engineers; more developers are becoming DevOps skilled and distinctions between being a software developer or hardware engineer are blurring.[17]

Productivity[edit]

With function as a service, the units of code exposed to the outside world are simple functions. This means that typically, the programmer does not have to worry about multithreading or directly handling HTTP requests in their code, simplifying the task of back-end software development.

Disadvantages[edit]

Performance[edit]

Infrequently-used serverless code may suffer from greater response latency than code that is continuously running on a dedicated server, virtual machine, or container. This is because, unlike with autoscaling, the cloud provider typically "spins down" the serverless code completely when not in use. This means that if the runtime (for example, the Java runtime) requires a significant amount of time to start up, it will create additional latency.

Resource limits[edit]

Serverless computing is not suited to some computing workloads, such as high-performance computing, because of the resource limits imposed by cloud providers, and also because it would likely be cheaper to bulk-provision the number of servers believed to be required at any given point in time.

Monitoring and debugging[edit]

Diagnosing performance or excessive resource usage problems with serverless code may be more difficult than with traditional server code, because although entire functions can be timed,[4] there is typically no ability to dig into more detail by attaching profilers, debuggers or APM tools. Furthermore, the environment in which the code runs is typically not open source, so its performance characteristics cannot be precisely replicated in a local environment.

Security[edit]

Serverless is sometimes mistakenly considered as more secure than traditional architectures. While this is true to some extent because OS vulnerabilities are taken care of by the cloud provider, the total attack surface is significantly larger as there are many more components to the application compared to traditional architectures and each component is an entry point to the serverless application. Moreover, the security solutions customers used to have to protect their cloud workloads become irrelevant as customers cannot control and install anything on the endpoint and network level such as an intrusion detection/prevention system (IDS/IPS). [18]

This is intensified by the mono-culture properties of the entire server network. (A single flaw can be applied globally.)

Privacy[edit]

Many serverless function environments are based on proprietary public cloud environments. Here, some privacy implications have to be considered, such as shared resources and access by external employees. However, serverless computing can also be done on private cloud environment or even on-premises, using for example the Kubernetes platform. This gives companies full control over privacy mechanisms, just as with hosting in traditional server setups.

Standards[edit]

Serverless computing is covered by IDCA (International Data Center Authority in their Framework AE360) However, the part related to portability can be an issue when moving business logic from one public cloud to another for which the Docker solution was created. Cloud Native Computing Foundation (CNCF) is also working on developing a specification with Oracle.[19]

Serverless frameworks[edit]

Serverless frameworks are designed to make it easier to build, test, and deploy serverless applications. Some of these frameworks include:

  • Fn Project, an open-source and container-native serverless platform that can be run on cloud environments or on-premise.[20]
  • Nuclio, an open-source platform that runs over Docker or Kubernetes, or as a cloud service from iguazio.[21]
  • Serverless Framework, for creating serverless applications deployed to AWS Lambda, Azure Functions, or GCP Cloud Functions with Node.js and Python.
  • AWS Serverless Application Model (AWS SAM), prescribes rules for expressing Serverless applications on AWS.

See also[edit]

References[edit]

  1. ^ Chan, Mike (2017-03-13). "Serverless Architectures: Everything You Need to Know". Thorn Technologies. Retrieved 2019-02-06.
  2. ^ Knorr, Eric (2016-07-11). "What serverless computing really means". InfoWorld. Retrieved 2019-02-06.
  3. ^ a b c Miller, Ron (24 Nov 2015). "AWS Lambda Makes Serverless Applications A Reality". TechCrunch. Retrieved 10 July 2016.
  4. ^ a b MSV, Janakiram (16 July 2015). "PaaS Vendors, Watch Out! Amazon Is All Set To Disrupt the Market". Retrieved 10 July 2016.
  5. ^ Williams, Christopher. "Fotango to smother Zimki on Christmas Eve". Retrieved 2017-06-11.
  6. ^ "Python Runtime Environment | App Engine standard environment for Python | Google Cloud Platform". Google Cloud Platform. Retrieved 2017-06-11.
  7. ^ "PiCloud Launches Serverless Computing Platform To The Public". TechCrunch. Retrieved 2018-12-17.
  8. ^ Miller, Ron (13 Nov 2014). "Amazon Launches Lambda, An Event-Driven Compute Service". TechCrunch. Retrieved 10 July 2016.
  9. ^ Novet, Jordan (9 February 2016). "Google has quietly launched its answer to AWS Lambda". VentureBeat. Retrieved 10 July 2016.
  10. ^ "Announcing Fn–An Open Source Serverless Functions Platform". 2 October 2017. Retrieved 4 July 2018.
  11. ^ Zimmerman, Mike (23 February 2016). "IBM Unveils Fast, Open Alternative to Event-Driven Programming".
  12. ^ Ryan, Fintan (29 February 2016). "Swift, OpenWhisk and APIs – Reflections on IBM InterConnect".
  13. ^ a b Miller, Ron (31 March 2016). "Microsoft answers AWS Lambda's event-triggered serverless apps with Azure Functions". TechCrunch. Retrieved 10 July 2016.
  14. ^ Lardinois, Frederic. "Google Acquires Firebase To Help Developers Build Better Real-Time Apps | TechCrunch". Retrieved 2017-06-11.
  15. ^ Darrow, Barb (2013-06-20). "Firebase gets $5.6M to launch its paid product and fire up its base". gigaom.com. Retrieved 2017-06-11.
  16. ^ Ramel, David (2017-03-16). "FaunaDB takes First Serverless Database to the cloud". adtmag.com. Retrieved 2019-01-14.
  17. ^ a b c d e f g h Jamieson, Frazer (4 September 2017). "Losing the server? Everybody is talking about serverless architecture".
  18. ^ https://www.puresec.io/hubfs/SAS-Top10-2018/PureSec%20-%20SAS%20Top%2010%20-%202018.pdf?t=1522565694924
  19. ^ "CNCF, Oracle Boost Serverless Standardization Efforts". SDxCentral. Retrieved 2018-11-24.
  20. ^ "Oracle Joins Serverless Race with Open Source Fn Project". InfoQ. Retrieved 2018-01-18.
  21. ^ Haviv, Yaron (31 October 2017). "Nuclio and the Future of Serverless Computing". The New Stack.

Further reading[edit]