Best of Distributed Systems โ€” July 2024

  1. 1
    Article
    Avatar of systemdesigncodexSystem Design Codexยท2y

    8 Strategies for Reducing Latency

    High latency can render an application unusable, frustrating users and negatively impacting business outcomes. Developers need to understand low-latency strategies such as caching, using Content Delivery Networks (CDNs), load balancing, asynchronous processing, database indexing, data compression, pre-caching, and utilizing keep-alive connections to mitigate these issues and improve performance.

  2. 2
    Article
    Avatar of medium_jsMediumยท2y

    40 Must-Read White Papers to Learn System Design and Software Architecture

    This post lists 40 essential white papers for learning system design and software architecture. It is geared towards those preparing for system design interviews or aiming to understand complex system architectures. Each white paper provides in-depth technical insights from industry leaders like Google and AWS, covering topics from distributed file systems to data processing models and consensus algorithms.

  3. 3
    Article
    Avatar of javarevisitedJavarevisitedยท2y

    Most-Used Distributed System Design Patterns

    Distributed system design patterns offer architectural solutions and best practices for developing distributed applications. This post discusses widely-used patterns like Ambassador for proxy tasks, Circuit Breaker to prevent cascading failures, CQRS for separating read and write databases, Event Sourcing for recording events, Sidecar for managing cross-cutting concerns, Leader Selection for electing a single node leader, Publisher/Subscriber for asynchronous communication, Sharding for data distribution, Bulkhead to isolate system components, and Cache-Aside for optimized caching strategies. Examples of tools and implementations for each pattern are provided to illustrate their applications and benefits.

  4. 4
    Article
    Avatar of medium_jsMediumยท2y

    System Design: Load Balancer

    Load balancers are essential in distributing workloads effectively across multiple servers in distributed applications. They can operate at various application layers and employ static or dynamic algorithms to manage requests. Static algorithms depend on predefined parameters while dynamic ones use real-time system state data. Popular load balancing strategies include Round Robin (and its variations), Least Connections, Least Response Time, IP Hashing, and URL Hashing. The choice of strategy depends on specific system needs and configurations to ensure optimal performance.

  5. 5
    Article
    Avatar of javarevisitedJavarevisitedยท2y

    System Design Basics โ€” Rate Limiter

    A rate limiter is a mechanism used in software systems and network communications to control the rate at which requests or operations are performed. It helps maintain system stability, prevent resource overuse, and ensure fair usage among users. Rate limiters are critical in high-traffic, distributed architectures. Common rate limiting algorithms include Token Bucket, Leaky Bucket, and Sliding Window. Understanding rate limiting is important for system design interviews, where it is often discussed alongside concepts like API gateways and load balancers.

  6. 6
    Article
    Avatar of communityCommunity Picksยท2y

    9 Software Architecture Patterns for Distributed Systems

    In modern software development, distributed systems require efficient design to manage data and communication between components. Key architectural patterns like Peer-to-Peer, API Gateway, Pub-Sub, Request-Response, Event Sourcing, ETL, Batching, Streaming Processing, and Orchestration offer solutions for reliability, scalability, and maintainability. These patterns are essential not only for system robustness but also for system design interviews, providing a deep understanding of their strengths and trade-offs.

  7. 7
    Article
    Avatar of hnHacker Newsยท2y

    taubyte/tau: Open source distributed Platform as a Service (PaaS). A self-hosted Vercel / Netlify / Cloudflare alternative.

    Tau is an open-source, distributed Platform as a Service (PaaS) designed to compete with major providers like Vercel, Netlify, and Cloudflare. It's a developer-friendly framework focused on minimal configuration, auto-discovery, and peer-to-peer networking. Using Git for infrastructure management, Tau emphasizes local development and seamless production deployment. Features include WebAssembly support, content-addressed storage, and a plugin system for extensibility.

  8. 8
    Article
    Avatar of communityCommunity Picksยท2y

    Microservices Architecture, The Hard Parts : Trap of Distributed Monolith

    Seasoned Senior Software Engineers often encounter significant challenges when implementing Microservices Architecture. Initial enthusiasm can give way to difficulties, particularly when releasing new features or managing performance and latency due to service interdependencies. Identifying and addressing issues such as inadequate service boundaries, excessive synchronous communication, overly fine-grained services, service coupling, and shared code without versioning are critical to preventing the creation of a Distributed Monolith.

  9. 9
    Video
    Avatar of communityCommunity Picksยท2y

    7 Must-know Strategies to Scale Your Database

    Understanding when and why to scale your database is essential to maintain optimal performance as your application grows. Key strategies include indexing for quick data retrieval, using materialized views for pre-computed snapshots of data, and implementing denormalization to simplify complex queries. Vertical scaling, adding resources to a single server, and caching frequently accessed data in a fast storage layer can enhance responsiveness. Replication bolsters availability and fault tolerance by creating database copies on multiple servers. Sharding, which involves splitting a database into smaller sections, enables horizontal scaling and manages large data loads efficiently.

  10. 10
    Article
    Avatar of hnHacker Newsยท2y

    exo-explore/exo: Run your own AI cluster at home with everyday devices ๐Ÿ“ฑ๐Ÿ’ป ๐Ÿ–ฅ๏ธโŒš

    Run an AI cluster at home using exo, a software that unifies everyday devices into a powerful GPU. It supports LLaMA and other popular models, and uses a peer-to-peer connection without a master-worker architecture. Install it from source with Python>=3.12.0 and access models via a ChatGPT-compatible API endpoint.

  11. 11
    Article
    Avatar of quastorQuastor Dailyยท2y

    How Booking.com scaled their Customer Review System

    Booking.com scaled their customer review system by sharding data across multiple servers and using the Jump Consistent Hash algorithm. This minimizes the number of keys that need to be remapped when adding or removing shards. Andrew Huberman offers tips on improving focus, including the use of Binaural Beats and working in 90-minute sessions. WorkOS migrated from Heroku to AWS Elastic Kubernetes Service for better uptime and security, building a platform called Terrace for autoscaling and faster deployments.

  12. 12
    Article
    Avatar of communityCommunity Picksยท2y

    How Meta Achieves 99.99999999% Cache Consistency ๐ŸŽฏ

    Meta has developed a system to achieve 99.99999999% cache consistency, essential for scaling distributed systems. They use an observability solution featuring Polaris to monitor and detect cache inconsistencies and a tracing library to log data changes during race conditions. This approach allows querying the database at controlled intervals to prevent overload and find inconsistencies quickly. These techniques ensure only 1 out of 10 billion cache writes become inconsistent.

  13. 13
    Article
    Avatar of awegoAwesome Goยท2y

    EchoVault: Embeddable Redis Alternative in Go

    EchoVault is an open-source, embeddable in-memory datastore designed for Go applications, offering a RESP-compatible interface over TCP. It aims to replace traditional in-memory data stores like Redis, eliminating the overhead of separate management and deployment. Key features include TLS support, RAFT-based replication, various data structures, and access control. EchoVault supports both standalone and clustered deployments, making it suitable for use cases like in-memory caching, service discovery, session management, real-time analytics, and more.

  14. 14
    Video
    Avatar of codeheimcodeHeimยท2y

    #44 Golang - Mastering Kafka with Golang: A Beginner's Guide

    Learn how to use Apache Kafka with Golang by building a coffee order and brewing system. The guide covers setting up a Kafka producer to send coffee orders and a consumer to process these orders. It uses the Sarama library for Kafka integration, demonstrating how to handle HTTP requests, serialize data to JSON, and manage Kafka messages in a Golang application.