Book Image

Building Serverless Python Web Services with Zappa

By : Abdulwahid Abdulhaque Barguzar
Book Image

Building Serverless Python Web Services with Zappa

By: Abdulwahid Abdulhaque Barguzar

Overview of this book

Serverless applications are becoming very popular these days, not just because they save developers the trouble of managing the servers, but also because they provide several other benefits such as cutting heavy costs and improving the overall performance of the application. This book will help you build serverless applications in a quick and efficient way. We begin with an introduction to AWS and the API gateway, the environment for serverless development, and Zappa. We then look at building, testing, and deploying apps in AWS with three different frameworks--Flask, Django, and Pyramid. Setting up a custom domain along with SSL certificates and configuring them with Zappa is also covered. A few advanced Zappa settings are also covered along with securing Zappa with AWS VPC. By the end of the book you will have mastered using three frameworks to build robust and cost-efficient serverless apps in Python.
Table of Contents (20 chapters)
Title Page
Dedication
Packt Upsell
Contributors
Preface
Index

What is Zappa?


Zappa is an open source tool that was developed and designed by Rich Jones, founder/CTO of Gun.io (https://www.gun.io/). Zappa was mainly designed to build and deploy serverless Python applications on AWS Lambda and API Gateway.  

Zappa is great for deploying serverless Python microservices with frameworks such as Flask and Bottle for hosting large web applications and CMSes with Django. You can also deploy any Python WSGI application as well.

In the previous chapter, we implemented the basic hello world microservice, using AWS Lambda and API Gateway. Zappa automates all these manual processes and gives us a handy tool to build and deploy Python applications.

It's as easy as this:

$ pip install zappa
$ zappa init
$ zappa deploy

As we described earlier, the tradition of web hosting is where the server needs to be always online, listening to HTTP requests and processing the requests one by one. If the queue of incoming HTTP requests grows, then a timeout error will occur as the server...