Microservices

History
Late 90's: message oriented middleware >>> Mid 00's: Service Oriented Architecture (SOAP and WSDL) >>> Early 10's: API Platforms & Management (REST and JSON became standard, OAuth) >>> 2015+: Microservice Architecture
monolithic codebases end up having duplicate code, because of the large size, you missed out on reuse


Microservices Architecture


- Large Monoliths >>> small service processes
- services are for a single function
https://microservices.io/index.html
- should be based on one or more resources
- decentralized, usually manage their own databases
- resilient, if one fails another can replace it
- continuous integration, work well with systems that evolve over time
Microservice's purpose within an organization is to be redundant and highly available microservices
microservices and the trade-offs involved in using them. Microservices are smaller, independently deployable services that can be used to build large-scale applications. While they can offer benefits such as improved scalability and flexibility, they can also introduce complexity and overhead. The speaker argues that microservices should be considered technical debt, and that companies should carefully evaluate the costs and benefits before adopting them. He also suggests that there may be better ways to build large-scale applications than using microservices.
Entities: primary concepts of your business
Use Cases:
Adapters - Controllers, Gateways, Presenters

Frameworks and Drivers that we use to build the application - External Interfaces, DB, Devices, Web, UI POCO - Plain Old CLR Objects
URI - Uniform Resource API resource - serverless - endpoint - content expirations - resources stored in browser cache
Event Driven Programming - While traditional programming is linear and based on the flow of execution, with operations running for a fixed span or until reaching pre-written decision points, event-driven programming progresses as triggered by certain events (e.g., clicking on the mouse, pressing some keys on the keyboard, selecting an option from a drop-down menu). This type of programming is most common for programs with graphical user interfaces (GUIs).
Asynchronous programming and callbacks -
Timers -
Promises -
Async and Await -
Closures -
tunnelling proxy -
First Request
Return Visits
Tactical Forking
forking could potentially refer to a strategy where a team or an organization creates a separate version of a microservice to address specific requirements or to experiment with new functionality without affecting the existing production version. This can be done by duplicating the codebase of an existing microservice and making modifications to the duplicated version.
By tactically forking a microservice, teams can explore different approaches, experiment with new technologies, or implement specific changes without impacting the production environment. It allows for parallel development and testing of new features or improvements while maintaining the stability of the existing microservice.