Reactive Architecture: Building Scalable Systems
Building Reactive Systems requires a balance between Consistency and Availability. This course will explain why that balance exists. We will discuss the CAP theorem as well as the Laws of Scalability that dictate what is possible to achieve when we build distributed systems. We will also introduce some techniques we can use to strike the right balance. All of this will be grounded in a discussion which starts first in the real world.
What will I get after passing this course?
You will receive a completion certificate.
Course Syllabus
Consistency, Availability, and Scalability
Definitions for Consistency, Availability, and Scalability.
A discussion of the difference between Performance and Scalability.
Consistency in Distributed Systems
An indepth discussion of how physics impacts our ability to provide consistency in a distributed system.
A definition, and discussion, of Eventual Consistency.
A definition, and discussion, of Strong Consistency.
Laws of Scalability
Contention in Distributed Systems.
Amdahl’s Law.
Coherency in Distributed Systems./li>
Gunther’s Law of Universal Scalability
CAP Theorem
Defining Partition Tolerance.
Discussing the balance between Consistency and Availability.
Sharding
Using Sharding for Consistency.
Explanation of how Sharding works.
Advantages/Disadvantages of Sharding.
Conflict-Free Replicated Data Types (CRDTs)
Using CRDTs for Availability.
Explanation of how CRDTs work.
Advantages/Disadvantages of CRDTs.
Consistency or Availability
How do we decide which one to pick?
General Information
It is self-paced.
It can be taken at any time.
It can be taken as many times as you wish.
Recommended skills prior to taking this course
Experience in the design of software systems.
Grading scheme
The minimum passing mark for the course is 75%, where the review questions are worth 40%, the case study exercises are worth 30% and the final exam is worth 30% of the course mark.
You have 1 attempt to take the final exam with multiple attempts per question.
Requirements
Reactive Architecture: Introduction to Reactive Systems, Reactive Architecture: Domain Driven Design and Reactive Architecture: Reactive Microservices.