Summary
In this chapter, we discussed the foundational patterns of reactive, cloud-native systems. We learned how leveraging fully managed cloud-native databases and event streaming empowers self-sufficient, full-stack teams to rapidly, continuously, and confidently deliver global scale systems by delegating the complexity of operating these services to the cloud provider so that they can focus on the value proposition of their components. With Event Sourcing, we communicate state changes between components as a series of atomically produced immutable events and the data lake collects, stores, and indexes all events in perpetuity with complete fidelity and high durability. These events act as the source of record and support the replay and resubmission of events, to repair existing components, populate new components, and support data science activities. The Stream Circuit Breaker pattern leverages functional reactive programming to control the flow of events in stream processors and achieves fault tolerance by delegating unrecoverable errors for resolution so that failures do not inappropriately disrupt throughput. Finally, in the Trilateral API pattern, we discussed the need to publish multiple interfaces for each component, which highlights that cloud-native components have more than just synchronous APIs and facilitates understanding of the system as a whole.