Serverless architecture is a way to build and run applications and services without having to manage infrastructure. They refer to applications that heavily depend on third-party services (Backend as a Service “BaaS”), on custom code that’s run in ephemeral containers (Function as a Service “FaaS”), on a service model that delivers computer infrastructure on an outsourced basis to support enterprise operations (Infrastructure as a service “Iaas”), on a cloud computing model in which a third-party provider delivers hardware and software tools (Platform as a Service “Paas”) or on a cloud computing service model that provides users with some form of access to a database without the need for setting up physical hardware, installing software or configuring for performance (Database as a service “DBaaS”). In short, your application still runs on servers, but all the server management is done by a cloud provider.
A Brief History
“You have to know the past to understand the present.” ― Carl Sagan
If we need to know more about serverless architecture, we need to know a brief history of the internet and web hosting. Founded in 1989 by Sir Tim Berners Lee, the internet soon gained popularity. Web hosting came into being in 1991. The client-server architecture was used to request the services hosted on a server machine. And then came the serverless architecture.
How it evolved
What Helped it evolve:
Server Virtualization
Server virtualization is a virtualization technique that involves partitioning a physical server into several small, virtual servers with the help of virtualization software. The virtual environments are sometimes called virtual private servers. They are also known as guests, instances, containers or emulations. The best example of server virtualization is VMWare ESXi.
Docker
Docker is an open-source software platform to create, deploy and manage virtualized application containers on a common operating system (OS) provided with an ecosystem of allied tools. Docker uses OS-level virtualization to deliver software in packages called containers. Kubernetes, Swarm, Nomad, CoreOs are major Docker providers.
How it all went:
Software as a Service (SaaS)
Software as a service (SaaS) is a software distribution model in which a third-party provider hosts applications and makes them available to customers over the Internet. In SaaS, the provider hosts the customer’s software and delivers it to approved end-users over the internet. The major SaaS providers are Salesforce, Oracle, SAP and Microsoft Azure.
Infrastructure as a service
Infrastructure as a service (IaaS) is a service model that delivers computer infrastructure on an outsourced basis to support enterprise operations. IaaS provides hardware, storage, servers and data centre space or network components. This may include software too. instead of paying for the device outright, users need to pay only per their use or utility. Major providers of Iaas are AWS and Azure.
Platform as a Service
Platform as a service (PaaS) is a cloud computing model in which a third-party provider delivers hardware and software tool, usually those needed for application development, to users over the internet. A PaaS provider hosts the hardware and software on its infrastructure. Heroku is an ideal example of a PaaS provider.
Database as a service
Database as a service (DBaaS) is a cloud computing service model that provides users with some form of access to a database without the need for setting up physical hardware, installing software or configuring for performance. The administrative tasks and maintenance are taken care of by the service provider. Envolve/Firebase is an example of DBaaS provider.
Backend as a Service
Backend as a service (BaaS) is a cloud computing service model. It serves as the middleware providing developers with ways to connect their Web and mobile applications to cloud services via application programming interfaces (API) and software developers’ kit (SDK). Firebase, Kumulos and Kinvey are major BaaS providers.
Function as a service
Function as a service (FaaS) is a category of cloud computing services that provides a platform allowing customers to develop, run, and manage application functionalities. FaaS removes the complexity of building and maintaining the infrastructure typically associated with developing and launching an app. Major FaaS providers are AWS Lambda, Microsoft Azure, Google Cloud functions and IBM.
Advantages of Serverless Architecture
- No server management
- Flexible scaling
- High availability
- Never pay for idle
- Code can run closer to the end user, decreasing latency
Disadvantages of Serverless Architecture
- Proprietary services that are unique to specific cloud providers – Vendor Lock-in
- Testing and debugging become more challenging
- Serverless computing introduces new security concerns
- Serverless architectures are not built for long-running processes