We may earn an affiliate commission when you visit our partners.
Lukasz Antoniak

Significant percentage of large scale enterprises that I have been working with, admitted experiencing performance issues with their business critical applications. Most of production systems have been built on top of legacy, monolith technologies. Recent popularity of micro-services will not fulfill its promise of decoupled, scalable and fault-tolerant systems, unless "done right". While entering the world of micro-services, engineers start building distributed applications, where robust remote procedure calls and cluster coordination are a must.

Read more

Significant percentage of large scale enterprises that I have been working with, admitted experiencing performance issues with their business critical applications. Most of production systems have been built on top of legacy, monolith technologies. Recent popularity of micro-services will not fulfill its promise of decoupled, scalable and fault-tolerant systems, unless "done right". While entering the world of micro-services, engineers start building distributed applications, where robust remote procedure calls and cluster coordination are a must.

In this course you will learn about common challenges that appear while designing and implementing large scale distributed systems, and how Big-Tech companies solve those problems.

Technologies, algorithms and design patterns covered in this course:

  • Service Registry and Discovery, Service Mesh

  • Apache Cassandra

  • ETCD (coordinator managing Kubernetes clusters)

  • Apache Kafka

  • Idempotent service design, retry logic

  • Sharding and Consistent Hashing

  • Client-side Load Balancing, Distributed Tracing, Canary Deployment, Sidecar Pattern, Circuit Breaker

Course will teach you the principles of various distributed systems design, for example master-less vs. with leaders, poll-based vs. push-based, immediate vs. eventual consistency. After completing the course, learning new distributed database technology would be easier, because you will know the common re-used techniques, including their pros and cons.

My intention is to keep course content very practical, with lots of code examples and applied best practices. For example, I will cover Service Registry and Discovery to the detail, that you will know how to implement your own framework on top of ETCD. Throughout the course, we are going to build distributed URL shorten service.

The course may be a good recap for people preparing for systems design interview.

Enroll now

What's inside

Learning objectives

  • Design and implement globally-distributed, scalable and fault-tolerant applications
  • Understanding of common algorithms and techniques used in majority of nosql databases and streaming platforms
  • In-depth knowledge of apache cassandra, apache kafka and etcd
  • Build distributed url-shorten service

Syllabus

Traditional RDBMS systems vs. NoSQL
Data sharding and consistent hashing
Concepts of Distributed Systems
Evolution of computer system’s architecture
Read more
Challenges of distributed computing
Use-case of course application
Practice 1
Remote Procedure Call
The need of communication
Message transport and format
Synchronous and asynchronous communication patterns
Traditional load balancers
Service Registry and Discovery
Service meshes
Idempotent service design
Practice 2
Distributed Databases
CAP theorem
Short introduction to Apache Cassandra
Practice 3
Cluster Coordination
The need of cluster-wide coordination
RAFT consensus algorithm
Short introduction to Etcd
Implementation of distributed mutex
Leader election design pattern
Deployment requirements for strongly consistent distributed systems
ACID properties in distributed system
Practice 4
Distributed Messaging Systems
Asynchronous communication pattern and message-oriented middleware
Short introduction to Apache Kafka
Apache Kafka as a distributed system
Event-driven architecture
Practice 5

Save this course

Save Building Modern Distributed Systems with Java to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Building Modern Distributed Systems with Java with these activities:
Review Distributed Systems Fundamentals
Solidify your understanding of core distributed systems principles before diving into the course's specific technologies.
Browse courses on Distributed Computing
Show steps
  • Review basic concepts like CAP theorem and consistency models.
  • Study common distributed system architectures.
  • Practice with simple distributed system examples.
Read 'Designing Data-Intensive Applications'
Gain a deeper understanding of the principles behind distributed systems and data management.
Show steps
  • Read the chapters relevant to the course topics.
  • Take notes on key concepts and design patterns.
  • Relate the book's content to the course material.
Implement Consistent Hashing
Reinforce your understanding of consistent hashing by implementing it in Java.
Show steps
  • Choose a suitable hash function.
  • Implement the consistent hashing algorithm.
  • Test the implementation with different data sets.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Write a Blog Post on Service Mesh
Solidify your understanding of service meshes by explaining the concept in a blog post.
Show steps
  • Research different service mesh implementations.
  • Explain the benefits and drawbacks of using a service mesh.
  • Publish the blog post on a platform like Medium or personal blog.
Build a Simple Distributed Key-Value Store
Apply the concepts learned in the course by building a practical distributed system.
Show steps
  • Design the architecture of the key-value store.
  • Implement the core functionalities, including data replication and consistency.
  • Test the system for scalability and fault tolerance.
Read 'Kafka: The Definitive Guide'
Deepen your knowledge of Apache Kafka and its role in distributed systems.
Show steps
  • Focus on the chapters related to Kafka's architecture and use cases.
  • Experiment with the code examples provided in the book.
  • Consider how Kafka can be integrated into the distributed URL shortener project.
Contribute to an Open-Source Cassandra Project
Gain practical experience with Apache Cassandra by contributing to an open-source project.
Show steps
  • Find an open-source project that uses Cassandra.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Building Modern Distributed Systems with Java will develop knowledge and skills that may be useful to these careers:

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Building Modern Distributed Systems with Java.
Provides a comprehensive overview of the challenges and solutions in building reliable, scalable, and maintainable data systems. It covers many of the topics discussed in the course, such as data storage, replication, consistency, and distributed transactions. It serves as an excellent reference for understanding the underlying principles behind the technologies covered in the course. This book is commonly used as a textbook at academic institutions.
Provides a comprehensive guide to Apache Kafka, covering its architecture, design principles, and use cases. It is particularly useful for understanding the distributed messaging systems aspect of the course. It provides practical examples and best practices for using Kafka in real-world applications. This book is commonly used by industry professionals.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser