This session will introduce the core concepts underlying distributed systems, including their architecture, design patterns, and key components. Armed with the basics, we will explore the challenges inherent in developing and managing these systems, such as data consistency, fault tolerance, latency issues, and scalability dilemmas. Building on this, we will navigate the strategies and technologies employed to address these challenges, highlighting distributed databases, consensus algorithms, synchronization techniques, and distributed file systems, citing Apache Kafka as a use case.
We will also delve into the evolving landscape of distributed systems, examining emerging trends such as microservices architectures, serverless computing, and edge computing. The presentation will also cover tooling and frameworks, including Kubernetes, and Terraform, that facilitate the development and monitoring of distributed systems.