- Monolithic Architecture: where the UI, business logic, and data layer are all deployed as a single unit.
- Service-oriented Architecture (SOA):
- Microservices Architecture:
- Domain Driven Design: categorizing your application by logical components rather than data entities.
- Ex. A school's domains could be
- Finance domain: treats students as entities with status and tuition attributes
- Teacher domain: treats students as entities with grades and assignments attributes
- Instead of trying to model a "student" entity for the entire school application.
- Synchronous communication: Service A needs something from service B, but has to wait until B responds to continue executing.
- Asynchronous communication: Service A requests from Service B, and is able to keep executing while B send back the data.
- This requires an "event bus" that uses the pub/sub pattern.
- Service A would subscribe to the bus and B would publish to the bus.
- The bus is responsible for managing all the messages to all services that pub/sub to it.