Serverless computing

Serverless computing is a cloud computing execution model in which the cloud provider 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.[1] It is a form of utility computing.

Serverless computing still requires servers.[1] The name "serverless computing" is used because the server management and capacity planning decisions are completely 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 services at all.[2]

Serverless runtimes

Most 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.[3] 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.[4]

AWS Lambda, introduced by Amazon in 2014,[5] was the first public cloud vendor with an abstract serverless computing offering. AWS Lambda initially supported only Node.js.[5] It now supports Python, Java, and C#, and code written in other languages can be invoked indirectly via Node.js.[6]

Google Cloud Platform offers Google Cloud Functions,[7] which supports Node.js and other languages.[8]

IBM has published OpenWhisk as an open source serverless platform.[9][10] OpenWhisk includes native support for Node.js, Python, Java, and Swift, and supports other languages and runtime via Docker containers.

Microsoft Azure offers Azure Functions, which is offered both in the Azure public cloud or on-premises via Azure Stack.[11]

Serverless databases

Several serverless databases have been released. These systems extend the serverless execution model to the RDBMS, eliminating the need to provision or scale virtualized or physical database hardware.

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[12], includes a hierarchical database and is available via fixed and pay-as-you-go plans.[13]

FaunaDB is a globally distributed, transactional database, based on technology from Twitter.[14][15] It spans multiple public cloud providers with pay-as-you-go pricing, and is also available on-premises.[16]

Advantages

Cost

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

Operations

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 ensuring that the capacity always meets the demand.[1][11]

Productivity

In serverless computing, 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

Performance

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

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

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,[2] 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.

Serverless frameworks

Serverless frameworks are designed to make it easier to build, test, and deploy serverless applications. Some prominent ones are:

References

  1. 1 2 3 4 Miller, Ron (24 Nov 2015). "AWS Lambda Makes Serverless Applications A Reality". TechCrunch. Retrieved 10 July 2016.
  2. 1 2 MSV, Janakiram (16 July 2015). "PaaS Vendors, Watch Out! Amazon Is All Set To Disrupt the Market". Retrieved 10 July 2016.
  3. Williams, Christopher. "Fotango to smother Zimki on Christmas Eve". Retrieved 2017-06-11.
  4. "Python Runtime Environment  |  App Engine standard environment for Python  |  Google Cloud Platform". Google Cloud Platform. Retrieved 2017-06-11.
  5. 1 2 Miller, Ron (13 Nov 2014). "Amazon Launches Lambda, An Event-Driven Compute Service". TechCrunch. Retrieved 10 July 2016.
  6. Bailly, Arnaud (14 June 2016). "abailly/aws-lambda-haskell - Running Haskell code on AWS Lambda". GitHub. Retrieved 10 July 2016.
  7. Novet, Jordan (9 February 2016). "Google has quietly launched its answer to AWS Lambda". VentureBeat. Retrieved 10 July 2016.
  8. MSV, Janakiram (9 February 2016). "Google Brings Serverless Computing To Its Cloud Platform". Retrieved 10 July 2016.
  9. Zimmerman, Mike (23 February 2016). "IBM Unveils Fast, Open Alternative to Event-Driven Programming".
  10. Ryan, Fintan (29 February 2016). "Swift, OpenWhisk and APIs – Reflections on IBM InterConnect".
  11. 1 2 Miller, Ron (31 March 2016). "Microsoft answers AWS Lambda’s event-triggered serverless apps with Azure Functions". TechCrunch. Retrieved 10 July 2016.
  12. Lardinois, Frederic. "Google Acquires Firebase To Help Developers Build Better Real-Time Apps | TechCrunch". Retrieved 2017-06-11.
  13. 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.
  14. "FaunaDB Harnesses the Serverless Cloud - The New Stack". The New Stack. 2017-04-03. Retrieved 2017-06-11.
  15. "FaunaDB: A New Distributed Database from the Team That Scaled Twitter". InfoQ. Retrieved 2017-06-11.
  16. "Fauna Blog | Global multi-cloud replication in FaunaDB Serverless Cloud". Fauna. Retrieved 2017-06-11.

Further reading

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.