Files
ObsidianJournal/Work/Training/Advanced Distributed Systems/Advanced Distributed Systems Design - Homework 1 Overview.md

5 lines
2.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
System = unit of deployment
Service = logical unit Mistake we've made as an industry: team, project, code base are all one. Services can be reused across systems.  In the room availability service for a hotel, components could be reused in the website, guest kiosks and front desk rich clients.  But, the component that searches the room availability in each system is all in the same service. _Branding Service_
This service can have view models that collect the service components into a view to display in the chosen UI technology. Anything that's communicating the look and feel of a UI is part of the branding service. _IT/Ops Integration Service_
Responsible for integration with third parties (credit card providers, etc).  It is a technocratic component.  It should do the integration, but not be responsible for "now the credit card should be charged".  There is the act of charging the card and the act of deciding now is the time to charge it. This is the ONLY type of service that is allowed to ask other services for information. This type of integration service deals with the how and not the why or when. Lots of events passing data back and forth between services can be an indication that your service boundaries are wrong--especially if they are passing data that goes beyond identifiers. Finding service boundaries is all about identifying the volatility of the domain.  Encapsulate things that will change into service boundaries. **IT/Ops Integration**
Integration needs calling out to third-party systems or when third-party systems are going to be calling us.  Purpose is to collect data from various services to surface that up as a query to a third-party. Recommend doing such integration without remote calls.  We take DLLs from the various services and deploy them in together in the IT/Ops integration thing. IT/Ops integration is for integration with something you _don't_ control. IT/Ops integration also owns authentication, authorization, etc. Rarely does pub/sub with other services.  It _could_ subscribe to something like an HR service that hires/fires employees so that it would know to add or remove a user's access. The place to make remote calls within a service boundary and NOT between service boundaries.