Enterprise icon indicating copy to clipboard operation
Enterprise copied to clipboard

Adopting the distributed architecture

Open SleeperSmith opened this issue 4 years ago • 1 comments

Businesses nowadays have begun to understand the importance of "Service Oriented Architecture(TM)" and "Micro Services(TM)". Netflix does micro services, so clearly enterprise nowadays must have it to be profitable.

There are a few key attributes to "distributed architecture"

  • All services must call into all other services. This is what's called a "service mesh"
  • Any one service going down would cause all other depending services to go down. Thus it is critically important to ensure the failure of health check immediately triggers a company wide email alert.
  • Because the database is shared across multiple services (clearly), the data access code for the database should be packaged as a library and referenced in all services.
  • Service endpoints must be versioned and put into /v1 /v2 /v3 paths. This automatically guarantees backward compatibility and thus the API can be modified at will.
  • Since it's called "micro" services. Most services must not have more than 5 classes and no more than 10 lines of code per class. However enterprise patterns still requires a lot of lines of code (factories, managers, but to name a few) so a few selected, ideally 1, central service(s) will have all the rest that's required. It is not uncommon for this one central service to have 10s if not 100s of thousands of lines of code. This is what's required to ensure services are "micro". Special points for services with less than 10 lines of code. The bleeding edge paradigm of nano services is just 'round the corner.

This is a complex paradigm and I have barely scratched the surface, but I'm sure everyone understand no enterprise can be as disruptive and innovative as FANNG without micro services / distributed architecture.

SleeperSmith avatar Feb 12 '20 13:02 SleeperSmith

That's a GREAT idea. I'm not sure about the need for versioning in the APIs, given Enterprise™ is non-deterministic – and therefore ready for whatever laypeople understand quantum computing to be. Also, I wanna understand how is this compatible with CORBA.

joaomilho avatar Feb 17 '20 10:02 joaomilho