
This is an overview of the course and gets into defining that attributes of an Eventing Architecture.
A brief introduction about myself.
An explanation of eventing in terms of comparing and contrasting it to pub/sub.
An explanation of CAP theorem and its relation to high availability.
A description of how ATMs are a good example of eventual consistency.
A comparison of CQRS to CRUD.
A description of Domain Driven Design and why it can become needed within an event driven architecture.
Pulls all the concepts so far and puts it in an architectural context.
Gets into the Kafka and Kafka-like options.
A deep-dive into the default round-robin partition strategy for Kafka topics and their partitions.
A deep-dive into custom partition strategies and reasoning for Kafka.
An explanation of how consumer groups works and how to manage them.
An overview of the Kafka architecture in terms of replication and balancing.
The options when it comes to receiving data from a third party source relative to an event-driven system.
The options when it comes to polling for data from a third party source relative to an event-driven system.
The options when it comes to sending data from an event-driven system into a third party system.
The options when it comes to sending data periodically from an event-driven system into a third party system.
Closing thoughts, and descriptions of references for next steps and further resources.
This course provides an in-depth exploration of event-driven architectures, particularly focusing on the principles and practices required for building large-scale, web-scale systems. The curriculum blends architectural theory with practical insights drawn from real-world implementations of event-driven systems.
Key Topics Covered:
Introduction to Event-Driven Architecture: Understanding the fundamentals of event-driven systems and how they differ from traditional publish-subscribe (pub/sub) models.
Core Concepts and Terminology: Detailed exploration of key concepts such as events, event streams, and event sourcing, and how they contribute to scalable architecture.
Asynchronous Communication: Examining the role of asynchronous communication in event-driven systems and its impact on system performance and reliability.
Persistence and Durability: Strategies for ensuring event persistence and durability, including an overview of technologies like Kafka.
Design Patterns and Best Practices: Practical guidance on architectural patterns and best practices for designing and implementing robust event-driven systems.
Real-World Case Studies: Analysis of successful implementations of event-driven architectures in large-scale environments, highlighting lessons learned and common pitfalls.
Hands-On Implementation: Practical exercises and projects that provide hands-on experience with building and deploying event-driven systems using modern tools and frameworks.
Learning Outcomes: By the end of this course, participants will:
Have a comprehensive understanding of event-driven architecture and its advantages for web-scale systems.
Be able to design and implement event-driven solutions that are scalable, reliable, and maintainable.
Gain proficiency in using event-streaming platforms like Kafka.
Understand best practices and design patterns that can be applied to real-world projects.
Be equipped to tackle the challenges associated with building and operating large-scale event-driven systems.
Target Audience: This course is designed for software architects, developers, and IT professionals who are involved in the design and implementation of large-scale, distributed systems and are looking to deepen their understanding of event-driven architecture.