Characteristics of a Microservices Approach
Start course
2h 20m

Interested in microservices, and how they can be used for increased agility and scalability?

Microservices is an architectural style and pattern that structures an application as a collection of coherent services. Each service is highly maintainable, testable, loosely coupled, independently deployable, and precisely focused.

This course takes a hands-on look at microservices using Python, Flask, and Docker. You'll learn how Flask can be used to quickly prototype and build microservices, as well as how to use Docker to host and deploy them.

We start by looking at various problems associated with monolithic architectures and how microservices address them. We then move on to designing and building a basic shopping cart system, focusing on each of the microservices that make up the overall system.

If you have any feedback relating to this course, feel free to get in touch with us at

Learning Objectives

  • Obtain a solid understanding of microservices: the benefits, the challenges, and how using microservices differs from a monolithic approach
  • Learn how to design and build microservices using Python and Flask
  • Learn how to deploy microservices using Docker

Intended Audience

This course is intended for anyone who wants to build and deploy microservices using Python, Flask, and Docker.


Python 3.x programming experience is required to get the most out of this course. If you want to follow along with this course, you'll need Python 3.7, an IDE (PyCharm Community Edition - free), and Docker (Docker Desktop).


The complete source code for the project demonstrated within the course is located here:

The repository contains the following 4 projects:

  1. user-service
  2. product-service
  3. order-service
  4. frontend




Microservices architecture consists of a collection of small services. Each service is self-contained. It implements a single business function. It should do one thing only and do it well. They are small, independent, and loosely coupled. Each microservice is a separate code-base and can be managed by a small development team. Each one can be developed in the language of choice. This is referred to as Polyglot development. 

Microservices can be deployed independently and more frequently. A team can update a microservice without rebuilding or redeploying the entire system. Each microservice is responsible for persisting its own data. Whereas in a monolithic application, a separate data layer handles data persistence for the entire application.

Microservices communicate with each other by using well-defined APIs and this implementation is hidden from other microservices. Microservices don’t need to share the same technology stack, libraries, or frameworks. We take a quick break now and next we learn about the benefits of microservices.

About the Author

Saqib is a member of the content creation team at Cloud Academy. He has over 15 years of experience in IT as a Programmer, with experience in Linux and AWS admin. He's also had DevOps engineer experience in various startups and in the telecommunications sector. He loves developing Unity3D games and participating in Game Jams.