The Art of Immutable Architecture: Theory and Practice of Data Management in Distributed Systems

October 31, 2020
The Art of Immutable Architecture: Theory and Practice of Data Management in Distributed Systems

BenefitsTeaches you to design software that never destroysinformationShows you how to scale beyond the data center, while honoringthe limitations of distributed systemsPresents material based on mathematics, and tested over severalenterprise projectsSummaryThis book teaches you how to evaluate a distributed system fromthe perspective of immutable objects. You will understand theproblems in existing designs, know how to make small modificationsto correct those problems, and learn to apply the principles ofimmutable architecture to your tools.Most software components focus on the state of objects. Theystore the current state of a row in a relational database. Theytrack changes to state over time, making several basic assumptions:there is a single latest version of each object, the state of anobject changes sequentially, and a system of record exists.This is a challenge when it comes to building distributedsystems. Whether dealing with autonomous microservices ordisconnected mobile apps, many of the problems we try to solve comedown to synchronizing an ever-changing state between isolatedcomponents. Distributed systems would be a lot easier to build ifobjects could not change.After reading The Art of ImmutableArchitecture, you will come away with anunderstanding of the benefits of using immutable objects in yourown distributed systems. You will learn a set of rules foridentifying and exchanging immutable objects, and see a collectionof useful theorems that emerges and ensures that the distributedsystems we build are eventually consistent. Using patterns, youwill find where the truth converges, see how changes areassociative, rather than sequential, and come to feel comfortableunderstanding that there is no longer a single source of truth.Practical hands-on examples reinforce how to build software usingthe described patterns, techniques, and tools. By the end, you willpossess the language and resources needed to analyze and constructdistributed systems with confidence.The assumptions of the past were sufficient for buildingsingle-user, single-computer systems. But as we expand to multipledevices, shared experiences, and cloud computing, they work againstus. It is time for a new set of assumptions. Start with immutableobjects, and build better distributed systems.What You Will LearnEvaluate a distributed system from the perspective of immutableobjects Recognize the problems in existing designs, and make smallmodifications to correct themStart a new system from scratch, applying patternsApply the principles of immutable architecture to your tools,including SQL databases, message queues, and the network protocolsthat you already use * Discover new tools that natively applythese principles Who This Book Is ForSoftware architects and senior developers. It contains examplesin SQL and languages such as JavaScript and C#. Past experiencewith distributed computing, data modeling, or business analysis ishelpful.Table of ContentsWhy Immutable ArchitectureForms of Immutable ArchitectureHow to Read a Historical ModelLocation IndependenceAnalysisState TransitionsSecurityPatternsQuery InversesSQL DatabasesCommunicationGenerated BehaviorsAuthorsMichael L. Perry has built upon the worksof mathematicians such as Bertrand Meyer, Leslie Lamport, andDonald Knuth to develop a mathematical system for softwaredevelopment. He has captured this system in a set of open sourceprojects. Michael often presents on math and software at events andonline. You can find out more at qedcode.com.