Serverless formula

Slava Guzenko
4 min readJun 14, 2017

--

"There are only two hard problems in Computer Science: 
cache invalidation and naming things."

-- Phil Karlton

No, two major computing problems aren’t cache and naming, even though they are indeed tricky things. From the beginning of the computing era people have tried to solve two key problems that abacus couldn’t do for them:

  • Unlimited computational power
  • Availability of that power to anyone on the planet

The increased power of computers helps predict weather, decode DNA, and build artificial intelligence (AI) algorithms for other applications. Making this massive potential available to anyone has drastically increased usage rates of the internet, websites and mobile applications. From a software developer point of view it all comes down to being able to write a program that can leverage as much computing power as possible, while still being relatively cheap, and scale it to millions of users.

The obvious solution to the first problem is Cloud Computing, where anyone can deploy a program to a large data centre to leverage hundreds of thousands computers working on your task. The second problem requires delivery of the computational results to the end users where a Web or Mobile app is an obvious choice. It’s hard to serve millions of website, mobile phones, and other devices connected to your servers at the same time. Servers need to process millions of requests per second without delays. So, the two major problems programmers are solving today are the deployment of software to the cloud and making their solutions scalable.

History of Software Deployment and Scalability

1960s — Few large and expensive computers; not affordable by general public; HP 2116A.

1970s — Beginning of personal computing; designed for hobbyists MITS Altair 8800, Apple I, Apple II .

1980s — Affordable personal computers; Sinclair ZX80, IBM PC 80386, Apple Mac II . Hardware is still the king and most software comes bundled with the computers. Deployment and scaling issues don’t show up yet.

1990s — Rise of Intel Pentium, Microsoft Windows, the iMac, and the Internet. Software shipments exceed hardware and the software deployment problem begins. Developers need to bring their applications to the end user computers. Installations are required per platform: Windows, Mac, Unix; Installers, burning CDs, copy protection, and other issues to deal with. Software still scales easily by running on a personal computer only.

2000s — PC domination with Internet and Mobile interactions; server-client technology where client installation is required along with server-side component; same deployment issues for the client side plus server-side requirements for hosting; security; hard to scale; hosting providers; introduction of on-premises servers and ProdOps.

2010s — Web and Mobile domination; seamless updates; costly hosting; rise of Cloud Computing; DevOps; full-stack development; containers. Scaling is a major problem.

Today a software developer should be able to not only write a program, but also deploy it to one of the cloud computing platforms, and ensure it scales effectively performance and cost-wise to millions of users. Such developers are called full-stack developers and spend probably 30% of their time and effort on dealing with deployment and scaling problems. Can this percentage be minimized? How can programmers go back to what they love doing — writing code? Can we restore the productivity of the 1980s, when developers didn’t have to spend days on deployments and hosting management? The solution is coming!

Serverless computing

All major cloud vendors are working on the new paradigm called Function-as-a-Service (FaaS) or simply Serverless computing. It doesn’t mean that servers are not being used now. Servers still run the code, but the hosting provider makes sure that the management and scaling parts are taken care of automatically. Behind the scenes AWS Lambda, one of the building blocks of serverless approach on Amazon Cloud, is running in containers on real computers. However, as an AWS consumer, an application developer doesn’t need to know that. Multiple instances, high availability, up-to-date security patches, and other aspects of software deployment and scalability are all sorted out by Serverless Architectures. Developers write code, upload it to the cloud, and pay for usage only. All major cloud providers are competing for customers and lowering their fees, so if a serverless application is called million times a day, it would only cost a few dollars. And the best part is, it’s free if no one used it that day.

In the future software will be as readily available as electricity — everywhere, accessible from any device, mobile or not, all the time, with pay-per-use pricing. Serverless architecture is an evolutionary step in that direction because it ticks all the boxes, and frees the programmers to do what they enjoy most — writing code to solve problems. And if they do it passionately, they’re already on the right track to achieve success.

June 2017

--

--