Best of MicroservicesJanuary 2025

  1. 1
    Article
    Avatar of systemdesigncodexSystem Design Codex·1y

    8 Must-Know Distributed System Design Patterns

    Distributed systems are crucial for scalability, fault tolerance, and high availability but pose challenges such as state management, failure handling, and communication. Key design patterns like Ambassador Pattern, Circuit Breaker Pattern, CQRS, Sharding, Sidecar Pattern, Pub/Sub Pattern, Leader Election, and Event Sourcing help address these challenges by offloading tasks, preventing cascading failures, separating read/writes, partitioning data, decoupling concerns, enabling async communication, managing shared resources, and capturing state changes as events.

  2. 2
    Article
    Avatar of medium_jsMedium·1y

    HTTP Client in C#: Best Practices for Experts

    This guide explores advanced best practices for using `HttpClient` in C#. It covers the creation of `HttpClient` instances using various methods like constructors, static instances, `IHttpClientFactory`, named, typed, and generated clients. The article also discusses middleware techniques, resilient handling of HTTP requests using timeout, retries, and circuit-breakers, and efficient ways to issue requests and handle responses while optimizing performance to avoid common pitfalls like port exhaustion and DNS changes.

  3. 3
    Article
    Avatar of tdsTowards Data Science·1y

    Designing, Building & Deploying an AI Chat App from Scratch (Part 1)

    Learn how to design, build, and deploy an AI-powered chat application from scratch with a focus on modern, scalable web applications. This guide covers microservices architecture, setting up various backend services with Docker containers, building REST APIs with FastAPI, and creating a simple user interface. Key components include a language model API, PostgreSQL database, private Docker network, and Nginx reverse proxy. The project emphasizes engineering and cloud deployment over using commercial platforms, providing a deeper understanding of real-world systems.

  4. 4
    Article
    Avatar of cncfCNCF·1y

    What is observability 2.0?

    Observability 2.0 is designed for modern, distributed systems like Kubernetes and microservices, addressing the limitations of traditional monitoring tools. It unifies telemetry data, uses AI for real-time anomaly detection, and links technical metrics to business outcomes. Organizations can achieve faster incident resolution, better system performance, and improved user satisfaction by adopting Observability 2.0 practices.

  5. 5
    Article
    Avatar of faunFaun·1y

    Introduction Guide to RPC in Golang

    RPC (Remote Procedure Call) simplifies communication between services by allowing a procedure to be executed on a remote machine as if it was a local function. This guide explains the need for RPC in place of traditional API calls in distributed systems, provides an example of a key-value store implementation, and outlines server and client design in Golang using the rpc package. It also covers the structure of RPC functions and the practical steps to run both the server and client.

  6. 6
    Article
    Avatar of netguruNetguru·1y

    Java Microservices: Essential Strategies for Scalable Application Architecture

    Java microservices provide flexibility and speed for modern applications, allowing developers to create standalone services that communicate independently. Tools like Spring Boot and Spring Cloud simplify the creation and management of microservices. Java's ecosystem supports microservices with libraries for service discovery, load balancing, and fault tolerance. Key strategies for setting up Java microservices include using Spring Initializr for project setup, Docker and Kubernetes for containerization and orchestration, and tools like Eureka and Ribbon for service discovery and load balancing. Comprehensive monitoring, secure communication, and continuous deployment practices are essential for maintaining robust microservices architecture.

  7. 7
    Article
    Avatar of materializeMaterialize·1y

    How to Simplify Microservices with a Shared Database and Materialized Views

    Microservices architecture simplifies application development by breaking it into smaller, independent services. However, isolated databases in microservices complicate data sharing. Introducing a central database with technologies like materialized views can mitigate these challenges by enabling efficient, consistent data sharing. This approach offers benefits such as simplified system design and reduced implementation effort but also introduces issues like coupling and resource contention. Solutions involve using stable interfaces with database views, optimizing data access with materialized views, and isolating workloads through shared storage.

  8. 8
    Article
    Avatar of microservicesioMicroservices.io·1y

    Microservices rules #1: Practice continuous delivery

    The post discusses the importance of practicing continuous delivery in a microservices architecture, emphasizing its role in ensuring smooth deployment pipelines and overall system reliability. It is part of a series on best practices for microservices.

  9. 9
    Article
    Avatar of communityCommunity Picks·1y

    Micro And Macro Software Architectures, Why You Need Both

    Micro and macro software architectures both play essential roles in effective software development. Macro architecture involves overarching decisions that impact the entire system, such as technology choices for data lakes or logging infrastructure. Micro architecture focuses on decisions specific to individual microservices, like programming languages and frameworks. Balancing standards with flexibility enables engineers to innovate while ensuring system coherence and scalability.

  10. 10
    Article
    Avatar of communityCommunity Picks·1y

    solo-io/gloo: The Cloud-Native API Gateway and AI Gateway

    Gloo Gateway is now fully conformant with the Kubernetes Gateway API, offering robust ingress control, API gateway features, and support for hybrid applications involving legacy apps, microservices, and serverless. Built on Envoy proxy, it provides function-level routing, integrates with various open-source projects, and features automated discovery for rapid deployment and updates.