Book Image

Docker for Serverless Applications

By : Chanwit Kaewkasi
Book Image

Docker for Serverless Applications

By: Chanwit Kaewkasi

Overview of this book

Serverless applications have gained a lot of popularity among developers and are currently the buzzwords in the tech market. Docker and serverless are two terms that go hand-in-hand. This book will start by explaining serverless and Function-as-a-Service (FaaS) concepts, and why they are important. Then, it will introduce the concepts of containerization and how Docker fits into the Serverless ideology. It will explore the architectures and components of three major Docker-based FaaS platforms, how to deploy and how to use their CLI. Then, this book will discuss how to set up and operate a production-grade Docker cluster. We will cover all concepts of FaaS frameworks with practical use cases, followed by deploying and orchestrating these serverless systems using Docker. Finally, we will also explore advanced topics and prototypes for FaaS architectures in the last chapter. By the end of this book, you will be in a position to build and deploy your own FaaS platform using Docker.
Table of Contents (15 chapters)
Title Page
Packt Upsell
Contributors
Preface
Index

Components and architecture


In this section, we discuss the architecture and components of OpenWhisk. OpenWhisk is designed to be a rock-solid FaaS platform as it is powering IBM Cloud Function, one of the FaaS production systems already launched by IBM. The key of this rock-solid architecture is Kafka. OpenWhisk cleverly uses Kafka as its backbone to guarantee that every single function request accepted by Kafka will be delivered to the invoker layer. Let's start by looking its overall architecture.

Architecture

The following diagram in Figure 6.2 shows the overall architecture of OpenWhisk:

Figure 6.2: The overview architecture of OpenWhisk.

The edge component is the API gateway built on top of NGINX and OpenResty. The API gateway optionally uses Redis for caching. The API gateway sits in front of one or more controllers. The controller stores all configuration in a CouchDB cluster. Behind the controller, there is a Kafka cluster coordinated by a ZooKeeper quorum. The Kafka cluster is very...