Cover image from Bond Project

Bond Project

January 10, 2021

While looking at various microservice patterns I found I wanted a playground for playing with components of a microservice based system in isolation.

Coincidentally, in the halcyon days of winter 2019 I got an idea to binge all the James Bond films. Over the years I had seen them all. I generally watched them on television but never in any order and usually having missed the start. After having re-watched one of the movies I wrote down a very short hot take on each film.

I then decided to merge these two threads and build a system with the requirement to allow reviews for Bond movies to be modified and merged with third party metadata about the movie. These imported reviews would then be reflected in a database and rendered for the end user.

This allowed me to create a system (outlined in the image below) that included some of the most common components of micro-service architecture;

  • Queue
  • Cache
  • DatabaseREST API
  • UI

Over time then I can test various components or technologies using the very simple system below.

Conponent Diagram for the bond project

Currently the system is implemented with the following components;

  • REST API (Bond Movie API)
    • Node.js 12 + koa + aws-sdk + DynamoDB
    • Spring Boot + Spring Data DynamoDB + aws-sdk + DynamoDB
    • Spring Boot + Hibernate + PostgreSQL
  • Cache (Movie Metadata API)
    • Node.js 12 + koa + Redis 6.0
  • Queue (Process Queue)
    • Node.js 12 + koa + kafkajs + kafka + zookeeper
    • Node.js 12 + koa + kafka-node + kafka + zookeeper (deprecated)
  • Review Watcher (Watch Reviews)
    • Node.js 12 + glob-watcher
  • UI
    • Vanilla JS
    • React JS (In Progress)

Next on the list is a Spring Boot implementation of the cache layer. I also want to add a pub-sub component.

Interesting Links: