Best of ArchitectureApril 2025

  1. 1
    Article
    Avatar of threedotslabsThree Dots Labs·1y

    Is Clean Architecture Overengineering?

    Discussing whether Clean Architecture is overengineering or a best practice for organizing code, highlighting its benefits for complex projects and larger teams. Emphasizes separation of concerns for maintainable code, and suggests starting simple and evolving the architecture based on project needs. Related patterns like Hexagonal and Onion Architecture are also mentioned.

  2. 2
    Article
    Avatar of medium_jsMedium·1y

    Software Architecture for Developers

    Software architecture involves more than layers and patterns; it's about systems thinking, where architecture is seen as a dynamic, interconnected system. This approach emphasizes fluidity, adaptability, and the role of each developer in shaping the system. Different developers - from junior to senior, including frontend, backend, and platform engineers - benefit from understanding architecture through interactions, message moderation, and bindable components. This shift leads to clearer data flows, greater autonomy, and a more collaborative, resilient system.

  3. 3
    Article
    Avatar of milanjovanovicMilan Jovanović·1y

    Understanding Microservices: Core Concepts and Benefits

    Microservices are independently deployable services centered around business domains, offering flexibility, adaptability, and targeted scaling. They enable parallel development, technology diversity, and organizational alignment but introduce challenges like distributed system complexity, operational overhead, and data consistency issues. Effective microservices adoption often starts small and evolves over time, focusing on the most beneficial parts of the existing architecture.

  4. 4
    Article
    Avatar of itnextITNEXT·1y

    The heart of architecture: deconstructing patterns

    Explore the fundamental concepts of software architecture focusing on cohesion and decoupling. Learn about SOLID principles and how they influence design patterns, understand various Gang of Four patterns, and delve into architectural metapatterns for effective software design.

  5. 5
    Article
    Avatar of theburningmonktheburningmonk.com·1y

    Bye bye schema coupling, hello semantic coupling

    The post introduces the concept of semantic coupling as an innovative method to manage schema evolution in event-driven architectures, replacing traditional schema coupling. By using semantic tags instead of versioning or altering event schemas, it allows consumers to focus on the meaning of data rather than its representation. This approach prevents breaking changes and eliminates the need for event versioning, encouraging smoother schema transitions. Tools like Orbital and Taxi can facilitate these transformations by decoupling the data representation from consumers.

  6. 6
    Article
    Avatar of swizecswizec.com·1y

    Say no to abstract code

    Writing highly abstracted code can initially seem advantageous, but it often results in complex, hard-to-understand codebases full of exceptions. This complexity hinders collaboration and maintenance, leading to a 'rickety pile of abstractions' over time. Keeping related code close and minimizing context boundaries can help maintain clarity and functionality in your code.

  7. 7
    Article
    Avatar of devtoDEV·1y

    📍The Art of Choosing the Right Database

    Choosing the right database involves understanding the underlying storage engines and transaction protocols. This post explores the differences between SQL and NoSQL databases, focusing on B-Trees and LSM Trees. It discusses the strengths and use cases for databases like MySQL, MongoDB, Cassandra, and PostgreSQL, and highlights the importance of considering read vs. write-heavy workloads and transaction requirements.

  8. 8
    Article
    Avatar of javarevisitedJavarevisited·1y

    System Design Interview Cheat Sheet (2025 Edition) — Key Concepts, Books, Courses & Resources

    This post provides a comprehensive cheat sheet for cracking system design interviews, covering essential concepts such as load balancing, caching, databases, networking, data storage, and scaling patterns. It also lists recommended books, courses, and free resources to help candidates prepare for interviews at top tech companies like Google and Amazon.

  9. 9
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Understanding concepts in Event Driven Architectures (EDA)

    Event Driven Architecture (EDA) is a popular choice for developing highly scalable distributed systems, where components communicate by sending and reacting to events asynchronously. Key components include event producers, message brokers, and event consumers. Common technologies used are Kafka, RabbitMQ, AWS SNS/SQS, and Google Pub/Sub. EDA offers advantages such as scalability, flexibility, and resilience, but also has challenges like eventual consistency and complex debugging.

  10. 10
    Article
    Avatar of syscolabsslSysco LABS Sri Lanka·1y

    Event-Driven Architecture: How Enterprises Manage Billions of Events

    Event-Driven Architecture (EDA) is a software design pattern gaining popularity for managing Big Data, microservices, and real-time processing. EDA decouples services, enhancing scalability, resilience, and efficiency. It facilitates asynchronous communication through events, enabling systems to handle real-time data effectively. The post covers the benefits of EDA, its key components, real-world applications in companies like Sysco and Uber, and compares EDA with service mesh architecture. It also highlights the scalability, flexibility, and potential challenges of implementing EDA.

  11. 11
    Article
    Avatar of theburningmonktheburningmonk.com·1y

    Event versioning strategies for event-driven architectures

    The post discusses various strategies for versioning event schemas in event-driven architectures, including adding versions in event names, event payloads, separate streams, and using schema registries. It evaluates the pros and cons of each method and suggests alternative approaches to avoid breaking changes. The author emphasizes the importance of supporting backward compatibility and recommends always adding new fields instead of breaking existing schemas.

  12. 12
    Article
    Avatar of alvaroduranThe PayEng Playbook·1y

    5 Common Antipatterns in Payment Systems Design

    Good payment engineers focus on business logic rather than performance or clean code. Common antipatterns in payment system designs include relying solely on synchronous responses from PSPs, confusing payments with money transfers, building on a card-first design, using incorrect state machines, and sticking to early database decisions. Addressing these issues can lead to more robust and maintainable payment systems.

  13. 13
    Article
    Avatar of confConfluent Blog·1y

    The Future of AI Agents is Event-Driven

    AI agents are poised to transform enterprise operations by adopting event-driven architecture. This architectural approach addresses interoperability challenges and enhances scalability. EDA allows agents to operate independently, integrate seamlessly, and adapt workflows dynamically, overcoming the limitations of fixed workflows and tightly coupled systems. It ensures agents can effectively handle complex, interconnected tasks, thereby unlocking their full potential. The article highlights the importance of EDA in creating resilient, scalable AI systems and warns against the risks of outdated architecture in the evolving AI landscape.

  14. 14
    Article
    Avatar of itnextITNEXT·1y

    Choose your own architecture

    Choosing the right software architecture depends on several factors, such as project size, domain features, team structure, and non-functional requirements like performance and fault tolerance. Different projects may require different architectural styles, including monolithic, layered, services, SOA, and more. It's essential to understand the domain characteristics and tailor the architecture to meet specific needs efficiently.

  15. 15
    Video
    Avatar of bytebytegoByteByteGo·1y

    System Design Was HARD - Until You Knew the Trade-Offs, Part 2

    System design involves making trade-offs in various aspects such as scaling, API design, and processing methods. Vertical scaling is simpler but limited, while horizontal scaling offers more growth but requires complexity in distribution. REST APIs are useful for simple operations, but GraphQL provides flexibility for more complex data needs. Choosing between synchronous and asynchronous processing depends on user experience and complexity considerations.

  16. 16
    Article
    Avatar of towardsdevTowards Dev·1y

    Building an End-to-End Data Lakehouse with Medalion Architecture, Airflow, and DuckDB

    Learn how to build an end-to-end data lakehouse using Medalion architecture, Apache Airflow, and DuckDB. Understand the roles of the Bronze, Silver, and Gold layers in managing data quality and transformation. Discover why Apache Airflow is ideal for orchestrating workflows and how DuckDB serves as a high-performance analytical database for data warehousing.

  17. 17
    Article
    Avatar of awegoAwesome Go·1y

    Layered Design in Go

    This post discusses designing programs in Go using a layered approach, emphasizing the importance of avoiding circular dependencies. It describes how to structure packages hierarchically to meet Go's requirements and reveals techniques to handle dependencies without causing circular references. The methodology suggests multiple strategies, such as moving functionality, creating a third package, using interfaces, and more. The benefits highlight improved conceptual clarity and ease of understanding code due to well-defined package dependencies.

  18. 18
    Video
    Avatar of philipplacknerPhilipp Lackner·1y

    Clean Architecture: The ONE Change That Transforms Use Cases From Terrible to Super Useful

    The video discusses clean architecture in Android development, focusing on the correct implementation of use cases. The author argues that many Android developers misuse use cases, leading to poor architecture. He explains the proper role of use cases and the distinction between business logic and simple modular functions. The video also explores how to refactor use cases to add real value and discusses the interplay between use cases and repositories in Android architecture.

  19. 19
    Article
    Avatar of architectureweeklyArchitecture Weekly·1y

    Monolith-First - are you sure?

    The modular monolith architecture, though often advocated for its simplicity and ability to defer distributed system complexities, comes with inherent challenges. Boundaries between modules can erode, leading to tightly coupled systems that are hard to maintain and scale. Additionally, deployment, resource management, and tooling maturity can be significant hurdles. To avoid creating a ‘big ball of mud,’ one should consider modular-first principles and plan thoroughly for data isolation, module boundaries, and consistent DevOps processes.

  20. 20
    Article
    Avatar of itnextITNEXT·1y

    Go ArcTest: Simplifying Architecture Testing in Go Projects

    Go ArcTest simplifies architecture testing in Go projects by allowing developers to define and enforce architectural rules through code. It helps maintain clean architecture, prevents technical debt, and supports layered architectures with package dependency analysis, interface implementation validation, and method parameter type checking. It aids in early detection of architectural drift and improves codebase maintainability.

  21. 21
    Article
    Avatar of theburningmonktheburningmonk.com·1y

    How to detect and prevent breaking changes in event schemas

    There are several approaches to preventing breaking changes in event schemas, including consumer-driven contracts, using schema packages for integration tests, and utilizing a schema registry with broker-side validation. Each method offers unique benefits and potential drawbacks, and they may even be combined for optimal effectiveness. Consumer-driven contracts help enforce expectations at the development stage, sharing event schemas as code libraries simplifies setup, and a schema registry ensures centralized governance and protection against breaking changes.

  22. 22
    Article
    Avatar of eventstoreEvent Store·1y

    10 problems that Event Sourcing can help solve for you

    Event Sourcing can address numerous functional and technical problems in software architectures, from auditing and replaying production issues to supporting offline editing in PWAs and scaling out the read side using CQRS. Although not suitable for every situation, Event Sourcing offers unique advantages, such as enhanced temporal analysis, data replication, and cross-domain communication, making it a valuable choice for complex domains requiring detailed event tracking and flexible rule application.

  23. 23
    Article
    Avatar of infoqInfoQ·1y

    Kafka 4.0: KRaft Simplifies Architecture

    Apache Kafka 4.0 introduces KRaft mode, eliminating the need for ZooKeeper, thereby simplifying architecture and enhancing scalability. The release also includes a next-generation consumer group protocol for improved performance and early access to point-to-point messaging. Additionally, it updates minimum Java requirements and removes deprecated APIs.