Skip to content
This repository has been archived by the owner on Oct 4, 2022. It is now read-only.

Showcase Microservices backend architecture #422

Open
galmail opened this issue Nov 19, 2019 · 2 comments
Open

Showcase Microservices backend architecture #422

galmail opened this issue Nov 19, 2019 · 2 comments

Comments

@galmail
Copy link
Contributor

galmail commented Nov 19, 2019

This can include how to quickly create a new microservice running on Node, then dockerize it and publish it. Also we could add a Message Broker or Message Queue (for AWS, GCP, Azure,...)

@mcdonnelldean
Copy link
Contributor

We can do this now that the migrations are split. @mcollina Any ideas on a good default second backend service that is tiny but useful for most starter projects? As much as I wanted to avoid it, Udaru is the only one that comes to my mind.

@mcdonnelldean mcdonnelldean changed the title Showcase MicroServices backend architecture Showcase Microservices backend architecture Jan 21, 2020
@mcollina
Copy link
Contributor

Having a single microservice is quite useless. Microservices solves two needs: a) independent scalability of various part of the application b) having multiple teams working on the same application.

I would stress the second part, IMHO microservices are not a good architecture for a small solution team that NearForm deploys. That being said, microservices is a buzzword that would be good for sales purposes. Note that without having multiple teams we are falling in the case of a "distributed monolith".

I would leverage one of the key principles of Fastify: it is extremely easy to write a set of routes as a module that can be spin up on its own or as a part of the monolith. I would recommend to follow this path, as it clearly fits NearForm patterns of building a monolith first.

249D7FD6-9BE6-462E-A28A-0825E10345EE

That's a target architecture, possibly with the addition of some microservices to share functionality.

Note that a very important concern in microservices system is traceability, so I would add some support for OpenTracing headers - a client might not use it, but it's a very good demo.

I think it would be good to have:

  1. a service sitting behind a queue (AWS SQS?) for non-realtime computations. Maybe the generation of a PDF or of a report. These come up more often than not, and having some boilerplate done would speed up development.
  2. a service providing live update via websockets. Not sure how often this happen in our projects.
  3. Udaru as a reusable component.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants