Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bookings
kong
movies
showtimes
users
README.md
docker-compose.yml
nginx.conf

README.md

Cinema 3 - (Extremely Simplified) Example of Microservices in Python

Overview

Cinema 3 is an example project which demonstrates the use of microservices for a fictional movie theater. The Cinema 3 backend is powered by 4 microservices, all of which happen to be written in Python using Flask.

  • Movie Service: Provides information like movie ratings, title, etc.
  • Show Times Service: Provides show times information.
  • Booking Service: Provides booking information.
  • Users Service: Provides movie suggestions for users by communicating with other services.

Install

Install docker-compose for your platform.

Starting and Stopping Services

Run docker-compose up

APIs and Documentation

Movie Service (port 5001)

This service is used to get information about a movie. It provides the movie title, rating on a 1-10 scale, director and other information.

To lookup all movies in the database, hit: http://127.0.0.1:8080/movies

GET /movies
Returns a list of all movies.

{
    "267eedb8-0f5d-42d5-8f43-72426b9fb3e6": {
        "director": "Ryan Coogler",
        "id": "267eedb8-0f5d-42d5-8f43-72426b9fb3e6",
        "rating": 8.8,
        "title": "Creed"
},
...... output truncated ......

To lookup a movie by its id:

GET /movies/7daf7208-be4d-4944-a3ae-c1c2f516f3e6
Returns the specified movie.

{
    "director": "Paul McGuigan",
    "id": "7daf7208-be4d-4944-a3ae-c1c2f516f3e6",
    "rating": 6.4,
    "title": "Victor Frankenstein",
    "uri": "/movies/7daf7208-be4d-4944-a3ae-c1c2f516f3e6"
}

Showtimes Service (port 5002)

This service is used get a list of movies playing on a certain date.

To lookup all showtimes, hit: http://127.0.0.1:8080/showtimes

GET /showtimes
Returns a list of all showtimes by date.

{
"20151130": [
    "720d006c-3a57-4b6a-b18f-9b713b073f3c",
    "a8034f44-aee4-44cf-b32c-74cf452aaaae",
    "39ab85e5-5e8e-4dc5-afea-65dc368bd7ab"
],
...... output truncated ......

To get movies playing on a certain date:

GET /showtimes/20151201
Returns all movies playing on the date.

[
    "267eedb8-0f5d-42d5-8f43-72426b9fb3e6",
    "7daf7208-be4d-4944-a3ae-c1c2f516f3e6",
    "39ab85e5-5e8e-4dc5-afea-65dc368bd7ab",
    "a8034f44-aee4-44cf-b32c-74cf452aaaae"
]

Booking Service (port 5003)

Used to lookup booking information for users.

To get all bookings by all users in the system, hit: http://127.0.0.1:8080/bookings

GET /bookings
Returns a list of booking information for all bookings in the database.

{
    "chris_rivers": {
        "20151201": [
            "267eedb8-0f5d-42d5-8f43-72426b9fb3e6"
        ]
    },
    ...... output truncated ......

To lookup booking information for a user:

GET /bookings/dwight_schrute

    {
        "20151201": [
            "7daf7208-be4d-4944-a3ae-c1c2f516f3e6",
            "267eedb8-0f5d-42d5-8f43-72426b9fb3e6"
        ],
        "20151205": [
            "a8034f44-aee4-44cf-b32c-74cf452aaaae",
            "276c79ec-a26a-40a6-b3d3-fb242a5947b6"
        ]
    }

User Service (port 5000)

This service returns information about the users of Cinema 3 and also provides movie suggestions to the users. It communicates with other services to retrieve booking or movie information.

To get a list of all the users in the system, hit: http://127.0.0.1:8080/users

GET /users
Returns a list of all users in the database.

{
    "chris_rivers": {
        "id": "chris_rivers",
        "last_active": 1360031010,
        "name": "Chris Rivers"
    },
    ...... output truncated ......

To lookup information about a user:

GET /users/michael_scott
{
    "id": "michael_scott",
    "last_active": 1360031625,
    "name": "Michael Scott"
}

To get suggested movies for a user:

GET /users/michael_scott/suggested
You can’t perform that action at this time.