Latest curated articles from top engineering blogs
19 articles
This article compares three prominent messaging systems: RabbitMQ, Kafka, and Pulsar, highlighting their distinct architectural models and use cases in distributed systems. It emphasizes that the choice depends on how data should flow, its retention requirements, and consumption patterns, rather than just speed or popularity.
Docker Cagent introduces a new low-code, YAML-centric approach to building and running AI agents, simplifying their deployment and orchestration. It shifts from traditional programmatic agent frameworks to a declarative model, allowing developers to define agent personas and capabilities in portable YAML files. This platform is designed for rapid deployment and standardized tasks, integrating with various LLM providers and facilitating multi-agent workflows.
This article discusses Cloudflare's project, Vinext, a re-implementation of the Next.js API surface directly on Vite, aimed at improving deployment to serverless platforms like Cloudflare Workers. It highlights architectural challenges with traditional Next.js deployments in serverless environments and proposes a new approach leveraging Vite's ecosystem and AI for rapid development and optimized performance.
This article details Amazon Key's migration from a tightly coupled monolithic system to a resilient event-driven architecture using Amazon EventBridge. It highlights the challenges of the legacy system, including service coupling and inconsistent event management, and presents the design of a modern solution focusing on schema governance, client-side validation, and efficient multi-service integration.
This article explores Dependency Injection (DI) as a crucial technique for building scalable and maintainable large-scale applications, directly addressing the Dependency Inversion Principle (DIP). It highlights how proper DI goes beyond object creation, significantly impacting performance through careful lifecycle management and reducing memory pressure from excessive object instantiations. Understanding DI is key for designing modular and testable software architectures.
This article explores how early binding of dependencies via static imports undermines JavaScript's isomorphism, making modules platform-specific. It proposes using Dependency Injection (DI) at the module level to explicitly declare dependencies, allowing a composition root to provide concrete implementations based on the runtime environment (browser, Node.js, edge). This architectural pattern centralizes platform decisions and improves testability.
This article explains why traditional end-to-end (E2E) testing practices are ill-suited for microservice architectures, highlighting fundamental mismatches between centralized testing assumptions and distributed system realities. It explores challenges like non-determinism, environment complexity, and ownership issues, proposing alternative strategies focusing on layered verification and reduced E2E scope.
This article details Uber's architectural evolution from a LAMP stack monolith to a globally scaled microservices platform, addressing challenges in real-time data processing, concurrency, and data storage. It highlights key technological decisions and custom-built tools for managing complexity inherent in massive distributed systems.
Uber developed Charter, a centralized Attribute-Based Access Control (ABAC) system, to manage complex authorization decisions across its thousands of microservices. This system allows for granular control based on dynamic attributes like user location or time of day, addressing the limitations of traditional role-based access control in a large-scale, distributed environment. Charter leverages a policy distribution mechanism and a local evaluation library (authfx) to ensure high performance and consistency.
This article addresses the architectural challenge of integrating Swagger UI with modern Backend-for-Frontend (BFF) architectures that prioritize security by avoiding tokens in the browser. It introduces a Swagger UI plugin designed to enable native communication with the BFF, respecting HTTP sessions, HttpOnly cookies, and CSRF protection, thus allowing Swagger UI to function as a first-class frontend client without compromising security.
This article argues that internal platform teams should adopt a product-centric mindset to ensure their platforms are actually used and valuable. It highlights common pitfalls when platform teams focus solely on technical delivery without considering user needs, adoption strategies, and intentional friction. The core idea is that internal platforms are structurally products and require product management principles for successful system design and implementation within an organization.
Spotify's article discusses their multi-agent architecture to improve advertising relevance and efficiency. It hints at a structural solution involving multiple AI agents collaborating to achieve complex goals, rather than a single monolithic AI. This approach suggests distributed decision-making and specialized components, crucial aspects in system design for complex, data-driven applications.