Best of Microservices2024

  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
    Article
    Avatar of amigoscodeAmigoscode·2y

    Microservices Roadmap

    An overview of the critical components needed for a successful microservices architecture. Highlights include programming languages, databases, containers, message brokers, CI/CD, cloud infrastructure, monitoring, and security practices.

  3. 3
    Article
    Avatar of communityCommunity Picks·2y

    19 Microservices Patterns for System Design Interviews

    The post provides an overview of 19 essential microservices design patterns that are crucial for system design interviews. These patterns address various challenges like scalability, fault tolerance, and data consistency in microservices architectures. Patterns discussed include Circuit Breaker, API Gateway, Saga, Event Sourcing, and more. The post also highlights the importance of these patterns in demonstrating problem-solving abilities in technical interviews and offers resources for preparing system design interviews.

  4. 4
    Article
    Avatar of bytebytegoByteByteGo·2y

    How Netflix Manages 238 Million Memberships?

    Netflix manages 238 million memberships through a microservices architecture that ensures high availability and scalability. The platform includes stages like signup, plan changes, renewals, and payment issues, with core components using databases like CockroachDB and Cassandra. The use of Change Data Capture (CDC) patterns helps in tracking historical data for debugging and analytics, ensuring robustness and resilience. The architecture supports large volumes of data and requests, crucial for handling the global scale and diverse offerings of Netflix.

  5. 5
    Article
    Avatar of freecodecampfreeCodeCamp·2y

    How to Implement Message Queues in Your Backend Applications

    Message queuing is essential for backend development to address scalability issues and ensure orderly communication among services. This post explains the concept of message queues, its use cases in industries like fintech and healthcare, and popular tools such as RabbitMQ and Apache Kafka. A demo project using RabbitMQ with Node.js is also provided, illustrating how to build a message publisher and consumer for seamless communication.

  6. 6
    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.

  7. 7
    Article
    Avatar of devtoDEV·2y

    Part 1: What is Clean Architecture?

    Clean Architecture, introduced by Robert C. Martin, aims to create systems that are easy to understand, flexible, and maintainable by emphasizing separation of concerns. It organizes code into concentric circles, where dependencies only flow inward, ensuring modularity and testability. The architecture allows for improved testability, flexibility, maintainability, reusability, and scalability by keeping business logic decoupled from external dependencies like frameworks and databases.

  8. 8
    Article
    Avatar of devtoDEV·2y

    Dockerfile Best Practices: How to Create Efficient Containers

    In the era of microservices and cloud computing, optimizing Dockerfiles is essential for building lightweight, fast, and secure containers. Key practices include using minimal base images like Alpine or Scratch, reducing layers by combining commands, optimizing layer caching, installing dependencies wisely, managing secrets carefully, using a '.dockerignore' file, employing multi-stage builds, avoiding running containers as the root user, scanning for vulnerabilities, and directing logs to standard output. Regular updates and using specific version pins also enhance security and reproducibility.

  9. 9
    Article
    Avatar of communityCommunity Picks·2y

    Writing A Microservice Using Node.js

    The post discusses the benefits of using Node.js for web services development and explains how to build a microservice using Node.js. It covers topics such as the tech stack, database choice, web framework, validation, configuration, static analysis, testing, logging, metrics, monitoring stack, local infrastructure with Docker, and continuous integration. The code examples and explanations provide valuable insights for Node.js web developers.

  10. 10
    Article
    Avatar of devtoDEV·2y

    Understanding event driven architecture

    Event-Driven Architecture (EDA) is a dynamic and responsive design paradigm embraced by leading companies like Netflix, Twitter, and Amazon to enhance real-time data processing, system flexibility, and user engagement.

  11. 11
    Article
    Avatar of baeldungBaeldung·2y

    Apache Kafka Tutorial Series

    This tutorial series covers essential topics about Apache Kafka, including its basics, how to integrate it with Spring Boot, configuring Kafka SSL, and setting up Kafka using Docker. It also explores Kafka consumer groups, retry mechanisms, and message ordering strategies, providing practical guidance for both newcomers and experienced developers.

  12. 12
    Article
    Avatar of bytebytegoByteByteGo·2y

    EP106: How Does JavaScript Work?

    Learn about the important characteristics of JavaScript and best practices for building microservices.

  13. 13
    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.

  14. 14
    Article
    Avatar of bytebytegoByteByteGo·2y

    EP121: 9 Essential Components of a Production Microservice Application

    Explore the nine essential components for a production microservice application, which include API Gateway, Service Registry, Service Layer, Authorization Server, Data Storage, Distributed Caching, Async Microservices Communication, Metrics Visualization, and Log Aggregation and Visualization. Each component has a specific function crucial for the microservices architecture's efficiency, performance, and security.

  15. 15
    Article
    Avatar of communityCommunity Picks·2y

    Building Microservices with nodejs nestjs #series

    The video series covers building microservices for enterprise applications using the Node.js ecosystem. It includes topics like Express/NestJS with TypeScript, deploying services with AWS CDK, and various microservice architectures such as event-driven and serverless. The series provides practical insights into deploying with AWS ECS or Lambda and discusses best practices for different microservice patterns.

  16. 16
    Article
    Avatar of ardalisArdalis·2y

    From Microservices to Modular Monoliths

    Struggling with the complexity of microservices? Consider migrating to a modular monolith. This approach maintains the gains from breaking up a legacy system without dealing with the issues of a massively distributed system. A modular monolith can simplify management, reduce latency, and keep communication efficient among well-defined modules. However, such a migration needs careful planning and execution.

  17. 17
    Video
    Avatar of awegoAwesome Go·2y

    Complete Backend Engineering Course in Go

    This course offers a comprehensive guide to backend engineering in Go, covering the creation of a RESTful API from scratch to deployment. It spans from basic concepts like creating a low-level TCP server to advanced topics like authentication, authorization, caching, logging, CI/CD, and deployment to Google Cloud. The course emphasizes understanding core principles, design patterns, and best practices for API development, including the repository pattern, clean architecture, optimistic concurrency control, and more. A free, initial module is available, along with a GitHub repository for further exploration.

  18. 18
    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.

  19. 19
    Article
    Avatar of systemdesigncodexSystem Design Codex·2y

    How LinkedIn Authorizes 10 Million API Calls Per Second

    LinkedIn utilizes Access Control Lists (ACLs) to manage access control at scale, facing challenges such as quick authorization checks, prompt ACL changes delivery, managing a large number of ACLs, and monitoring ACL data. They handle these challenges by running an authorization client module on every service, periodically refreshing ACL data, storing ACLs in a database with a cache, and logging authorization checks for monitoring purposes.

  20. 20
    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.

  21. 21
    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.

  22. 22
    Article
    Avatar of bytebytegoByteByteGo·2y

    EP99: What is the best way to learn SQL?

    Learn the best way to learn SQL and understand the concept of gRPC.

  23. 23
    Article
    Avatar of communityCommunity Picks·2y

    Composable Software Architectures are Trending: Here’s Why

    Composable software architectures are redefining software development standards, offering enhanced flexibility, scalability, maintainability, innovation, and better dependency management. They differ from monolithic architectures by utilizing independent, reusable components. Advanced tools like Bit can support the implementation of a composable architecture.

  24. 24
    Article
    Avatar of communityCommunity Picks·2y

    Mastering Microservices in NestJS: Powerful Design Patterns for Flexibility, Resilience, and Scalability

    Microservices architecture offers flexibility, resilience, and scalability for modern applications. Key design patterns like Gateway, Service Registry, Circuit Breaker, SAGA, CQRS, Bulkhead, Sidecar, API Composition, Event-Driven Architecture, Database per Service, Retry, and Configuration Externalization significantly enhance NestJS microservices. These patterns ensure better service management and inter-service communication.

  25. 25
    Article
    Avatar of communityCommunity Picks·2y

    10 Spring Boot Performance Best Practices

    Spring Boot, a popular framework in the Java ecosystem, simplifies application development but sometimes needs optimization for performance. Key practices to enhance performance include using the latest versions of Spring Boot and JVM, enabling virtual threads, leveraging Spring AOT with GraalVM Native Image for faster startup times and reduced memory usage, and employing JVM features like Checkpoint Restore and Class Data Sharing. Configuring threads efficiently for both MVC and database access layers, using effective caching strategies, adopting resiliency patterns like circuit breakers, and incorporating thorough monitoring and profiling are also critical. Tools like Digma can further help by providing performance insights during development.