37081 (4) [Avatar] Offline
#1
After reading the book thus far, I was left with some questions that have yet to be answered:

1. Are microservices better targeted to centrally managed enterprise web applications? How would you manage a microservices infrastructure as an ISV with thousands of clients running local copies of your software on disparate hardware/software platforms?

2. How are cross-cutting concerns like logging, tracing, telemetry, and security addressed in a microservices architecture?

3. I’m not clear on ways to recompose microservice data that can generate business value? Take a doctor visit for example; items used need to be logged for billing, inventory, and patient history. The architecture suggests that each of these should be handled by a different microservice, but should the data be stored separately? How do you prevent massive accumulation of what equates to roughly the same data when passing messages between services? How do you coordinate when a change occurs after initial entry, such as an incorrect item or quantity? How do microservices fit into the overall picture when attempting to solve these problems?
Richard Rodger (27) [Avatar] Offline
#2
Very good questions indeed.

I'm using Chapter 9 as a practical case study to show the solution to some of these. Still in production, and needs README work, but start here: https://github.com/nodezoo/nodezoo-workshop

To hint at answers:

1. Yes. You could "freeze" systems for on-premise installation. But certainly, the idea is to have maximum flexibility for continuous delivery.

2. See Chapters 5 and 6 for discussion on this topic. Chapter 9 also gives practical examples. Spoiler: containers, Zipkin, ELK, etc. In more general terms, you'll want your infrastructure to do a lot of heavy lifting here, and you'll need to do some work to make that happen - no free lunch.

General cross-cutting concerns can also be addressed by message interception and translation - also some examples of that in Ch6. Caching services are a good specific example from chapter 1: https://github.com/senecajs/ramanujan See entry-cache service.

3. Chapter 9 makes this trade-off very explicit - yes, you do end up with multiple copies, and yes, you do have to deal with consistency issues. I try to be very clear about these kinds of trade-offs in the book - microservices are not perfect solution. They let you build faster, but you pay for it in latency and disk space. And in many cases it's better to get to market first, even with flaws.