Making a reliable centralized application is hard enough, but distributed systems require some extra consideration. This course will teach you the important concepts and basic patterns of reliable distributed systems.
Distributed systems are hard to build, complicated to run, and difficult to understand. If you need one, then it’s because a centralized application just won't do. In this course, Fundamentals of Distributed Systems, you’ll learn to build and operate complex systems made of loosely connected services. First, you’ll explore the properties of a reliable service. Next, you’ll discover how to connect services together using messages and APIs. Finally, you’ll learn how to apply patterns to tackle hard collaborative problems. When you’re finished with this course, you’ll have the skills and knowledge of distributed systems needed to design and operate software at a global scale.
Mathematician and software developer, Michael L Perry applies formal proof to creating reliable software. He has developed a method starting from the works of the greats (Meyer, Rumbaugh, Knuth), and embodied it in his open-source frameworks (Update Controls and Correspondence).
Course Overview Hello, I'm Michael L. Perry. Welcome to Fundamentals of Distributed Systems. I'm a software mathematician, meaning that I apply the rigor of mathematics to produce quality software for my clients at Improving. A lot of that software has been in the form of distributed systems. The tools have evolved over the years, but the fundamentals remain the same. Synchronization, message, passing, eventual consistency, conflict detection and mitigation, these are the issues that arise when data is persisted in two or more loosely integrated applications. But the software is just the beginning. Distributed systems evolve from cross‑functional teams solving complex business problems. To be successful, you have to assemble those teams and align your IT strategy with your organization's business objectives. In this course, we'll navigate the complexities of building distributed systems to deliver business value. Some of the ideas that we'll explore include immutable databases, idempotent and commutative messages, Conway's law, and sagas. And by the end of this course, you'll understand how to build autonomous technology teams that work together to construct reliable, consistent, and valuable distributed systems. We will evolve a distributed system throughout the course. To get the most out of the example, begin with some familiarity with C#, ASP.NET Core, and Entity Framework Core. From here, you'll want to dive even deeper into distributed architectures with courses on CQRS, Event Storming, and Microservices. I hope you'll begin your journey toward building software at scale with me and Fundamentals of Distributed Systems at Pluralsight.