1 Introduction
Amazon Web Services (AWS) is a subsidiary by Amazon.com, Inc., the leading online commerce company based in Seattle, Washington, USA. Initially established in 2006, AWS has quickly made Amazon the world’s largest cloud service provider. Currently, AWS offers over 90 IT infrastructure services including compute, storage, networking, database, mobile and analytics, as well as application development and IoT device management tools, provided globally with data centers in 16 separate geographic regions around the world and millions of customers from nearly every country.
With a huge amount of computing power, a broad portfolio of services ranging from low level Infrastructure-as-a-Service (IaaS) to high-level Software-as-a-Service (SaaS), a large global partner network and very aggressive pricing, AWS has long established itself as the first choice for many companies looking to reduce their IT costs and overcome scalability limits. For many current and potential customers, AWS has become synonymous with “the Cloud”.
Rapid adoption of cloud services has profoundly changed the IT industry not just from the end user perspective. Just like businesses are eager to adopt cloud services because they promise to increase flexibility, simplify administration and reduce costs, developers are also keen on using the cloud to deliver their applications to the market faster, benefit from cloud infrastructure’s scalability and elasticity and, last but not least, focus on their core business functionality by offloading commodity services like authentication or messaging to existing services offered by cloud providers as a part of their platform.
However, after moving their applications from a physical data center into the cloud, developers still have to manage their infrastructures: provision and configure virtual machines, protect virtual networks and so on. While adding another level of isolation like Docker containers helps simplify application deployment, a more radical approach towards application development has emerged recently, which does away with infrastructure management completely and lets developers focus on writing their code in terms of independent services or functions that communicate only over standard APIs. In this paradigm, it’s the cloud service provider’s responsibility to provision and manage necessary computing resources, and customers are only paying for actual requests served by their code.
This serverless computing approach, also known as Function as a Service (FaaS) provides multiple benefits for developers, allowing them to focus solely on business functionality and not on infrastructure management, as well as potentially offering substantial savings because the needed resources are scaled automatically on a much more fine-grained level (down to milliseconds). Also, this development style helps reduce software complexity, works well with agile development and modern architectures like microservices, and does not require dedicated system administrators.
AWS Lambda, first introduced in 2014, was the first serverless computing offering from a major cloud provider, and the company has been expanding and improving it ever since. Although the service is still being actively developed (currently available utilities and monitoring tools still leave a lot to be desired), with its wide range of supported languages and tight integration with numerous other AWS services, Lambda already provides a revolutionary way to develop new applications and APIs in a more time- and cost-efficient manner than ever before.