Develop, deploy, and test micro-services using Chalice on Jupyter notebooks

9 min readSep 25, 2021

The best of three worlds, Micro-service for system architecture, Chalice for DevOps, and Jupyter Notebook for IDE, is the most effective combination I know today. This post will go over a couple of examples of using the above triple to simplify the otherwise complicated flow of API development, including software development, system deployment, and functionality testing.

Why Micro-services?

Let’s start with the easy decision. Digital systems have become more and more complex and complicated in time. There are tons (if printed) of open source libraries to use, thousands of machine learning models to train or fine-tune, hundreds of cloud-based API and SaaS services to integrate. Today, every modern digital system uses many of the above resources while developing missing pieces to accomplish the functionality it is built to solve. The most popular system architecture today is to use REST APIs and micro-services design. The micro-services design breaks monolithic systems into smaller units of development, deployment, testing, and operation.

Why Chalice?

There are a few options for micro-services management that started with the launch of AWS Lambda in 2015. Since then, other cloud providers added their version with Azure Functions and GCP Cloud Functions, and the various framework matured with them. The main reason for the growing success of serverless services such as Lambda is their simplicity. As you will see below, Chalice provides a similar level of simplicity to AWS Lambda. Similar solutions such as Serverless are offering additional providers, and you are welcome to test them out in a similar fashion if you need multi-cloud support.

Why Jupyter notebook?

The last decision is the most controversial of the three. Every professional software developer that I meet has a favorite IDE (Integrated Development Environment). I used in the past old editors such as ISPF (IBM mainframe) and Emacs (which I continue to use today). I also used modern ones such as Eclipse, IntelliJ, PyCharm, Visual Studio Code (VSC), and even the brilliant combination of VSC into GitHub web interface with Codespaces. I can appreciate the productivity boost that a good IDE can give, and I also spent hours tweaking my IDE to do more with fewer efforts. Then why choose Jupyter Notebook as the IDE to develop REST APIs instead of the…


Guy Ernest is the co-founder and CTO of @aiOla, a promising AI startup that closes the loop between knowledge, people & systems. He is also an AWS ML Hero.