Best of MicroservicesSeptember 2024

  1. 1
    Article
    Avatar of communityCommunity Picks·2y

    Top 50 System Design Terminologies You Must Know

    Master key system design terminologies essential for acing interviews with practical examples and additional learning resources. Concepts covered include scalability, load balancing, microservices, CAP theorem, sharding, latency, throughput, and many more crucial for building efficient and scalable systems.

  2. 2
    Video
    Avatar of youtubeYouTube·2y

    Complete Backend Engineering Course in Go

    This post introduces a comprehensive backend engineering course in Go, designed to take learners from basic to advanced topics. The course aims to teach how to build RESTful APIs and other backend systems, applying the knowledge to microservices as well. The curriculum includes 21 modules, covering areas such as TCP and HTTP server development, routing, clean layered architecture, database management using the repository pattern, CRUD operations, user authentication and authorization, caching, performance optimization, and CI/CD deployment workflows. The course materials and code are available on GitHub, and the instructor emphasizes understanding concepts over mere code replication.

  3. 3
    Article
    Avatar of medium_jsMedium·2y

    Backend for Frontend (BFF) Architecture

    Backend for Frontend (BFF) architecture is a design pattern that creates a dedicated backend for each frontend interface, addressing specific performance, data, and interaction needs. This approach enhances user experiences by tailoring backends to individual client requirements, simplifies complexity, improves performance, speeds up development, and enhances security. It is particularly beneficial for multi-platform applications, microservice orchestration, and optimizing legacy APIs but also introduces challenges like increased maintenance and potential performance bottlenecks.

  4. 4
    Article
    Avatar of francofernandoThe Polymathic Engineer·2y

    How to design a system for scale

    Scalability is essential for software engineers as applications grow. Three key techniques for scaling systems are adding server clones, functional partitioning, and data partitioning. Adding server clones involves creating interchangeable copies of existing servers to distribute loads. Functional partitioning breaks down the system into smaller, independent components each handling specific tasks. Data partitioning divides datasets across multiple machines to speed up processing and storage. Each technique has its pros and cons and requires careful consideration for effective implementation.

  5. 5
    Article
    Avatar of devtoDEV·2y

    How to implement a Distributed Lock using Redis

    Running multiple instances of an application can create issues with concurrent database writes, potentially leading to inconsistent states. Distributed locking, particularly using Redis, provides a solution by ensuring only one instance can perform critical operations at a time. The Redlock algorithm is an effective method for implementing distributed locks across multiple Redis instances, ensuring consistency even if some instances fail.

  6. 6
    Article
    Avatar of bytebytegoByteByteGo·2y

    Millions of Requests Per Hour: SoundCloud’s Microservices Evolution

    SoundCloud evolved from a monolithic architecture to a sophisticated multi-tier microservices setup to handle millions of requests per hour. By implementing Backends-for-Frontends (BFF), Value-Added Services (VAS), and Domain Gateways, SoundCloud optimized its system for better client-specific responses, reduced operational risk, and improved development speed. BFFs provide tailored API gateways for different clients, while VAS centralize business logic to minimize code duplication. Domain Gateways further segregate business concerns, enhancing scalability and autonomy within the system.

  7. 7
    Article
    Avatar of communityCommunity Picks·2y

    Optimizing Docker Image Sizes: Advanced Techniques and Tools

    Optimizing Docker image sizes can greatly enhance your containerized applications' performance, deployment speed, and security while reducing costs. Techniques like using minimal base images (e.g., Alpine, distroless), multi-stage builds, layer optimization, and the `.dockerignore` file help achieve smaller images. Additionally, leveraging Docker BuildKit and language-specific optimizations can further streamline the build process. Regular auditing and updating of images ensure ongoing efficiency and security. These strategies are vital for effective cloud-native and microservices architectures.

  8. 8
    Article
    Avatar of lobstersLobsters·2y

    gRPC: 5 Years Later, Is It Still Worth It?

    The post reflects on the decision to use gRPC and Protobuf instead of OpenAPI/Swagger for Torq's technology stack, highlighting the enhanced backward compatibility, enforceable standards, and streamlined development process it provided. It covers advancements in code generation with tools like buf.build, improved module dependency management with Buf Schema Registry (BSR), and discusses the benefits and challenges of using gRPC-web for frontend development. The author affirms gRPC as their preferred protocol, bolstered by robust tool support and the use of service meshes like linkerd for better load balancing and security.

  9. 9
    Article
    Avatar of communityCommunity Picks·2y

    Building Microservices Architecture with CQRS Pattern Using Kafka and NestJS: A Step-by-Step Guide

    This guide explains how to build a sample blog application using microservices architecture with CQRS pattern, Kafka, and NestJS. It covers setting up the project structure, configuring Kafka with Docker Compose, and developing microservices for user authentication, blog article creation, and event sourcing for reliable communication between services.

  10. 10
    Video
    Avatar of codeheimcodeHeim·2y

    #55 Golang - Get Started with gRPC in Golang – Server & Client

    Explore how gRPC, a high-performance RPC framework, allows seamless communication between services in Golang. Learn about its benefits over REST, how to set up gRPC and protocol buffers in a Go project, and see an example project structure implementing CRUD operations with gRPC.

  11. 11
    Article
    Avatar of javarevisitedJavarevisited·2y

    6 Best Udemy Courses to Learn Spring Boot 3 in 2024

    The post highlights the best Udemy courses to learn Spring Boot 3 in 2024. It emphasizes the importance of learning Spring Boot for Java developers, explaining how it simplifies the development process by removing setup and configuration hurdles. The post provides detailed descriptions and links to six highly recommended Udemy courses, each teaching Spring Boot along with related technologies like Spring Framework, Hibernate, Docker, and Microservices. It encourages learners to also have a foundational understanding of the Spring Framework for a better grasp of Spring Boot.

  12. 12
    Article
    Avatar of materializedviewMaterialized View·2y

    Modular Monoliths Are a Good Idea, Actually

    The post argues in favor of modular monoliths as an alternative to microservices for achieving high cohesion and low coupling in software architecture. It highlights the challenges associated with scaling monoliths and migrating to microservices, such as increased complexity and the need for extensive tooling. The author suggests that modular monolithic applications, which include tooling for incremental build systems, testing, branch management, and database isolation, offer a balanced solution. This approach can extend the life of a monolith and make transitioning to a service-based architecture more manageable.

  13. 13
    Video
    Avatar of youtubeYouTube·2y

    Microservices Gone Wrong at DoorDash

    DoorDash switched from a monolith to microservices architecture to handle increased traffic during the 2020 pandemic. They faced significant issues such as cascading failures, retry storms, and death spirals. Critical countermeasures included load shedding, circuit breakers, and predictive autoscaling to improve system resilience and fault tolerance.

  14. 14
    Article
    Avatar of joindevopsDevOps·2y

    Projects for newbie

    An excellent resource for beginners to learn DevOps through hands-on projects, focusing on building an advanced automated CI/CD pipeline using AWS. Includes infrastructure as code, microservices, service mesh, and monitoring.