Just-in-time Architecture • Macklin Hartley • YOW! 2022

Discover the pros and cons of event-driven architecture and microservices, including event-carried state transfer, transactions logs, and scalability considerations.

Key takeaways
  • Event-driven architecture can be very effective, but not perfect, and might not be ideal always.
  • MVC can be a good choice, but can lead to a complex system if not designed carefully.
  • An example of a cafe can help illustrate the conversation.
  • In a microservices architecture, each service needs to be designed to handle failures independently.
  • Orchestrator handles the workflow, but commands are used by the orchestrator to communicate between services.
  • Event-carried state transfer is a way to transfer state between microservices, avoiding the need for a central store.
  • Transactions logs are a good way to keep track of events, but can be slow to query.
  • Event sourcing can be used to build a read-only log of events.
  • To properly test microservices, each service needs to be tested independently, which can be challenging.
  • Designing for scalability can be a critical aspect of building a successful system.
  • Event-driven architecture can be used to handle concurrent requests and events, making it more efficient.
  • Choreography and orchestration are both ways to coordinate workflows using events.
  • Using a message broker can help handle events and workflows.
  • Event-driven architecture can help provide a high level of observability, making it easier to understand the system.
  • To properly design for microservices, one needs to think about boundaries, scalability, and the costs of communication between services.
  • A monolithic architecture can be good for small teams, but can become limiting as the team grows.
  • Using an event-driven architecture can help avoid the problems of tightly coupling services.
  • Orchestrator handles the workflow, but commands are used by the orchestrator to communicate between services.
  • To properly implement event-driven architecture, one needs to consider the trade-offs between scalability, complexity, and consistency.
  • Commands can be used by services to request operations, and events are used to notify services of changes.
  • Events can be used to implement a form of eventual consistency, where changes are eventually reflected across the system.
  • In an event-driven architecture, each service is responsible for its own consistency, making it easier to scale and manage the system.
  • Services can be designed to handle failures independently, making it easier to add or remove services as needed.
  • Event-driven architecture can be used to handle concurrent requests and events, making it more efficient.