Product: CMS API
Sprint Summary

Daily Objectives

  1. Draw out more infrastructure diagrams lmao
  2. Figure out what kind of business rules I can include
  3. Figure out the actual data design and models
  4. Get a node + express test application going
  5. Figure out deployment
  6. Figure out distribution or whatever it’s called

Notes

Lmao this is uh a bonus sprint day!
What did I accomplish from yesterday so that I don’t repeat things?

  1. We’re definitely going with a Microservices architecture whether it’s the best decision or not
  2. :)

First, I think for now we can ignore monitoring and logging. I should definitely consider getting a minimum viable project going lol.

Next, Business Rules? The question is, how will business rules affect the API’s at least? They have software already arranged for handling business rules, so let’s start by looking at those.
OpenRules is an open source “Business Rules and Decision Management System (BRDMS).” Maybe rather than “Business Rules” I just focus on a system for roles and permissions.

Business Rules Roles and Permissions:
I want to figure out first if Roles and Permissions deserve to be their own microservice. “Backend service does not do jwt validation - it just trusts the gateway to send only valid requests.” This implies that the interface needs to go through a gateway that checks the permissions.
Can try to assume that every call to an internal service will originate from another service.

Ok so we want to differentiate, the ‘Microservices’ from the ‘User Interfaces’. The more I read about microservices architecture, the more I feel like this isn’t the right thing to do :) Use an API Gateway as a ‘single entry point to the rest of the microservices’.
Interprocess Communication (IPC) styles: One-to-one, One-to-many, synchronous, asynchronous, messaged-based, pub/sub, REST,

chart

“May I ask why would you bother build a distributed system when you are not going to distribute it at all ?” LOL I’m getting called out so hard
Ignoring this, want to remember I’ll be using a ‘SHARED DATABASE’ between different microservices. I want to give the option of separating the databases. For now the different databases would be for ‘content/schemas’, ‘users/roles/permissions’, ‘site repos/web hosting’.

Wait, so how would web hosting work? Also should I just have an API gateway for handling everything? I’m completely defeating the purpose of a microservices architecture by trying to not even make it distributed. I don’t want to completely abandon the idea though so let’s brainstorm what I can do. It’s gonna be an open source project, so the ideal is to make it plug and play for the most part, but I also want to make sure it’s scalable for others if they want it as a microservice architecture. So to reiterate, let’s assume the project is two services and an API gateway? The API gateway process requests and sends them to the correct area.

chart

How can I host subdomains? How can I dynamically create new subdomains?

Objectives Completed

Lessons Learned

Plans for Tomorrow