Best of Distributed Systems2023

  1. 1
    Article
    Avatar of earthlyEarthly·3y

    Kafka vs RabbitMQ: What Are the Differences?

    Apache Kafka and RabbitMQ are popular distributed messaging systems with functionalities for real-time data processing, analytics, event-driven architectures, and more. Kafka is a distributed streaming platform with high throughput, low latency, and a publish-subscribe model. RabbitMQ is a message broker with support for multiple protocols and flexible routing capabilities. Kafka excels in real-time data processing, event sourcing, and log aggregation, while RabbitMQ is suitable for asynchronous communication, microservices communication, and IoT data ingestion.

  2. 2
    Article
    Avatar of bytebytegoByteByteGo·2y

    6 More Microservices Interview Questions

    Explore microservices interview questions including API Gateway, differences between REST and RPC, and more.

  3. 3
    Article
    Avatar of pointerPointer·3y

    DovAmir/awesome-design-patterns: A curated list of software and architecture related design patterns.

    Software design pattern- A general, reusable solution to a commonly occurring problem within a given context in software design. It is a description or template for how to solve a problem that can be used in many different situations. This website accompanies the book Reactive Design Patterns by Roland Kuhn.

  4. 4
    Article
    Avatar of itnextITNEXT·3y

    Microservices can be simple — if we let them

    Microservices can be simple - if we let them. We’ll explain how our new data platform can both be seamless and radically improved by rethinking the way these services can be provided. In transactional, distributed systems, transactions are ordered internally and they serve both reads and writes from their internal storage.

  5. 5
    Article
    Avatar of pragmaticengineerThe Pragmatic Engineer·3y

    The Roots of Today's Modern Backend Engineering Practices

    The article explores the evolution of modern backend engineering practices by discussing the roots of these practices. It covers topics such as the challenges faced in early backend development, the birth of ARPANET and its influence on distributed systems, and the rise of the internet and web-based computing. The article emphasizes the importance of learning from the past to understand current backend engineering practices.

  6. 6
    Article
    Avatar of geekcultureGeek Culture·3y

    System Design Basics: 5 Common Caching Misunderstandings Explained

    There's a cloud of misconceptions floating around caching, leading many engineers astray. Some believe caching is a ‘set-it-and-forget-it’ deal, others think it’s a magical solution to all performance issues. Caching is an art, a strategic approach to improve system performance.

  7. 7
    Article
    Avatar of mafoMartin Fowler·2y

    Patterns of Distributed Systems

    A senior developer in India observed colleagues struggling with core distributed systems concepts and developed a code-centric approach to teach them. This approach led to the development of a series of patterns in distributed system design, which are included in a book containing thirty patterns with explanatory text, sequence diagrams, and code samples.

  8. 8
    Article
    Avatar of gcgitconnected·3y

    How Discord Stores Trillions of Messages — Curious Case of System Design

    Discord’s Cassandra cluster exhibited serious performance issues that required increasing amounts of effort to just maintain, not improve. In 2017, the Discord team ran 12 Cassandra nodes, storing billions of messages. They migrated their data to ScyllaDB because they were looking for a database that was scalable and fault-tolerant.

  9. 9
    Article
    Avatar of towardsdevTowards Dev·3y

    Event Streaming v.s Event Sourcing

    Event streaming and event sourcing are two related but distinct concepts in the world of event-driven architecture. Event streaming is the process of continuously capturing and storing events as they occur in a system. These events can then be processed and analyzed in real-time or stored for later analysis.

  10. 10
    Article
    Avatar of cloudnativedailyCloud Native Daily·3y

    Best Observability Tools for Microservices

    Microservices architecture has become popular among developers due to its scalability and flexibility. Helios Helios is an observability tool that offers comprehensive monitoring and analytics solutions for microservices and distributed applications. Lightstep Lightstep is a leading observability platform that helps to gain deep insights into the performance and behavior of microservices architectures.

  11. 11
    Article
    Avatar of cloudnativedailyCloud Native Daily·3y

    Microservices Patterns: The Saga Pattern

    This blog will give the reader some insights into ACID Transactions, 2PC Pattern and finally the Saga Pattern. The primary objective is to give an overview of how Saga Pattern operates and how it can solve real-world distributed transactional issues. The blog was written with some background reading on multiple literature resources mentioned under the References.

  12. 12
    Article
    Avatar of hackernoonHacker Noon·3y

    Design of a Scraping Platform

    Design of a Scraping Platform can be split into 2 categories that require different infrastructure and techniques. The system only has one functional requirement: it must be able to execute arbitrary scrapers on schedule. Scrapyd deploy eggified Python packages Packages may include dependencies in the egg file and different scrapers may use different versions.

  13. 13
    Article
    Avatar of freecodecampfreeCodeCamp·3y

    How Message Queues Work in Distributed Systems

    This post explores the limitations of the monolithic architecture and the benefits of adopting a microservices architecture. It also discusses how asynchronous communication can be implemented using message queues in a distributed system.

  14. 14
    Article
    Avatar of freecodecampfreeCodeCamp·3y

    The Apache Kafka Handbook – How to Get Started Using Kafka

    Apache Kafka is an open-source event streaming platform used by companies like LinkedIn, Uber, and Netflix to process trillions of events and petabytes of data each day. It allows users to publish and subscribe to streams of events, store events in the order they happened, and process events in real time. Kafka is distributed, fault-tolerant, and optimized for high throughput. This post provides an introduction to Kafka, explains its core concepts, and guides readers on how to install and use Kafka using the command line interface (CLI) and Java.

  15. 15
    Article
    Avatar of devgeniusDev Genius·2y

    Kafka Multiple Partitions with Spring Boot and Kubernetes

    This article discusses the concepts of Kafka partitions, scalability, fault tolerance, messaging ordering, and consumer parallelism. It also provides instructions on deploying Kafka, Spring Boot applications, and Kafdrop on Kubernetes. Additionally, it demonstrates how to set up a Spring Boot producer and consumer application for Kafka.

  16. 16
    Article
    Avatar of substackSubstack·2y

    What is Microservice Architecture?

    Microservice architecture is about breaking down an application into small, loosely coupled services. It offers benefits such as scalability, flexibility, and resilience. The CAP theorem states that a distributed system can't simultaneously provide consistency, availability, and partition tolerance. Self-contained Systems (SCS) are a software architecture approach that prioritizes the decentralization of applications into independent systems.

  17. 17
    Article
    Avatar of communityCommunity Picks·3y

    Where did Microservices go

    The post discusses the reflection on microservices and the emergence of new technologies. It highlights the costs of pursuing microservices, the reasons to start with a monolith first, and the scalability of a monolithic architecture. The post also mentions serverless computing as an evolution of microservices and discusses the complexity of the data layer.

  18. 18
    Article
    Avatar of gcgitconnected·2y

    Why Is It Hard to Horizontally Scale SQL Databases

    Learn about the challenges of horizontally scaling SQL databases, including maintaining ACID properties, handling distributed joins, and managing transactions across shards.

  19. 19
    Article
    Avatar of infoqInfoQ·3y

    The False Dichotomy of Monolith vs. Microservices

    Microservices are not the cause of complexity, but the cure to it. They come with costs and benefits, and the fear of microservices may stem from hype and perceived complexity. Microservices can help manage complexity by breaking it into smaller, more manageable parts. The choice between monolith and microservices is not binary, but rather a spectrum of possibilities. It's important to find the right-sized services for your situation and be open to change and experimentation.

  20. 20
    Article
    Avatar of codemazeCode Maze·2y

    What Is Service Discovery in .NET and How to Use It?

    Service Discovery in .NET allows developers to use logical names instead of IP addresses and ports to refer to external services in a networked environment. It simplifies the process of locating and interacting with services, especially in dynamic and distributed systems.

  21. 21
    Article
    Avatar of cloudnativedailyCloud Native Daily·3y

    3 Ways to Reproduce Issues in Microservices

    The first thing we want to be able to do is reproduce errors and issues. By reproducing errors, we can confirm it’s a recurring issue, rather than a sporadic one, and that it requires a fix to ensure that our product is working properly. We will show how to reproduce issues in three different ways.

  22. 22
    Article
    Avatar of devgeniusDev Genius·2y

    Retry Mechanism in Spring Boot(@Retryable and @Recover)

    This article discusses the Retry Mechanism in Spring Boot using the @Retryable and @Recover annotations. It explains what the Retry Mechanism is, scenarios where it can be used, and provides an implementation example using Spring Boot.

  23. 23
    Article
    Avatar of cloudnativedailyCloud Native Daily·3y

    Microservices Concept Using the .NET Core Framework

    .NET Core Framework is a free and open-source platform for building cross-platform applications.NETCore is designed to be modular, lightweight, and fast. It also has built-in support for developing and deploying microservices using Docker containers. You can run multiple containers on a single machine or across a cluster of machines.

  24. 24
    Article
    Avatar of gcgitconnected·3y

    System Design Basics: Strategies for Achieving High-Availability in Distributed Systems.

    System Design Basics: Strategies for Achieving High- availability in Distributed Systems. High availability refers to the ability of a system to remain operational and accessible even in the face of failures or disruptions. The consequences of system downtime can range from lost revenue and damaged reputation to even potential safety risks.

  25. 25
    Article
    Avatar of btrprogBetter Programming·3y

    Building a Distributed MapReduce System in Go

    Building a Distributed MapReduce System in Go would allow application developers to use it for building Map Reduce applications. The paper was authored by two engineers from Google, Jeff Dean and Sanjaya Ghemawat. The main purpose here is to learn about distributed systems by actually building one.