Best of ArchitectureJanuary 2025

  1. 1
    Article
    Avatar of javarevisitedJavarevisited·1y

    System Design CheatSheet for Interview

    This post provides a comprehensive cheatsheet of essential system design concepts commonly covered in interviews. Topics include REST API, networking, OAuth & JWT, cookies vs sessions, CI/CD workflows, Kafka, various databases, system testing, Git, Docker, Kubernetes, design patterns, logging, load balancing, and more. It's aimed at helping readers quickly revise these concepts before an interview.

  2. 2
    Article
    Avatar of apievangelistAPI Evangelist·1y

    OpenAPI Doctor is What API Innovation Looks Like Today

    OpenAPI Doctor by Princess B33f Heavy Industries enhances API management by making OpenAPI and Spectral more visually manageable. The tool offers creative visual enhancements and abstracts complex rules to improve usability. It supports exploring API infrastructure with better visibility of requests and responses. Users are encouraged to try it out with their own OpenAPI specs and experience its functionalities, including YAML view and governance rule applications.

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

    How To Do Well in System Design Interviews?

    System design interviews test your ability to break down complex problems and design scalable, high-performing systems. Key steps include clarifying requirements, estimating system capacity, creating high-level designs, designing databases, defining interfaces, addressing scalability and performance, and ensuring reliability and resiliency. Following these structured steps will help you communicate effectively and design robust systems.

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

    Intro to CQRS Pattern

    Command Query Responsibility Segregation (CQRS) is an architectural pattern that separates an application's data handling into command and query models to enhance performance, scalability, and maintainability. The command model handles modifications, while the query model handles data retrieval. Although CQRS can improve system efficiency, it introduces complexity, eventual consistency, and additional operational costs.

  5. 5
    Article
    Avatar of collectionsCollections·1y

    Fundamentals of Software Architecture | Book Club

    Software architecture is a dynamic and evolving field requiring architects to stay updated with the latest trends, possess diverse technical and business knowledge, and navigate organizational politics. Effective architectural thinking involves recognizing the differences between architecture and design, maintaining broad technical knowledge, balancing coding with architectural responsibilities, collaborating with developers, transitioning roles, and ensuring secure communication within systems.

  6. 6
    Article
    Avatar of devtoDEV·1y

    A Look Inside Docker & Its working.

    Docker is a tool to run containers and build images, providing a CLI and API for container management. Containers are isolated entities that include applications and their dependencies. Docker images define container contents and operation. The Docker CLI translates commands into API requests for the Docker daemon, which manages container and image operations via ContainerD and runc. Key Linux features, Namespaces and C-Groups, provide process isolation and resource allocation within containers.

  7. 7
    Video
    Avatar of communityCommunity Picks·1y

    Chapter 3 - Fundamentals of Software Architecture | Book Club

    Chapter 3 covers the fundamentals of software architecture with a focus on modularity. It discusses modularity as grouping related code logically rather than physically. Key metrics such as cohesion, coupling, and connaissance are explored to measure and maintain modularity. Cohesion is categorized from best to worst, including functional, sequential, and logical cohesion. Coupling is defined through afferent and efferent metrics. The chapter also highlights the importance of abstractness, instability, and the distance from the main sequence in software design. The concept of connaissance, including its types and properties, is introduced to handle module dependencies.

  8. 8
    Article
    Avatar of awegoAwesome Go·1y

    Clean Architecture: A Practical Example of Dependency Inversion in Go using Plugins

    The Dependency Inversion Principle (DIP) is crucial for maintainable software architecture, yet often neglected. Go’s plugin system provides a practical implementation of DIP by enabling modularity and extension without recompilation. This approach aligns with Clean Architecture principles and offers benefits such as simplified deployment and isolation of components. The post illustrates a proof-of-concept where plugins modify data through a transformer interface, reinforcing the importance of dependency on abstractions.

  9. 9
    Article
    Avatar of taiTowards AI·1y

    Mastering Generative AI Architectural Patterns: A Comprehensive Guide

    Generative AI has transformed various industries by creating new content such as text, images, music, and video. This comprehensive guide explores different generative AI architectural patterns like GANs, VAEs, autoregressive models, diffusion models, and emerging hybrid approaches, detailing their functionalities, popular models, and real-world applications.

  10. 10
    Video
    Avatar of beabetterdevBe A Better Dev·1y

    Most Important Cloud Concepts - Episode 5 - Event Driven Architecture

    Event-driven architecture (EDA) is contrasted with the traditional request-response model by decoupling services through asynchronous messaging. In EDA, events generated by one service, such as an order being placed, are sent to a notification engine (like AWS SNS or EventBridge), which then distributes the event to subscribing services such as credit card processing, order fulfillment, and fraud detection. This allows for greater flexibility and easier addition of new services without tightly coupling them. However, handling complex scenarios such as subsequent cancellations due to fraud requires additional considerations.

  11. 11
    Article
    Avatar of netteNette·1y

    Architecture That Grows with Your Project

    Proper code organization is a common challenge in PHP application development, and Nette documentation provides a comprehensive guide to directory structure. It discusses the benefits of a domain-oriented structure, making it easier to understand an application's purpose at a glance. The guide also offers principles to help evolve the structure as projects grow, making it useful for both new and existing projects.

  12. 12
    Article
    Avatar of taiTowards AI·1y

    Building Graph RAG for structured and unstructured data.

    RAG (Retriever-Augmented Generation) architecture helps solve the issue of missing contextualization in LLMs (Large Language Models) without the need for fine-tuning. While Vector RAGs offer some contextualization, graph-based RAGs capture more intricate relationships, making them more effective. This post discusses how to build knowledge graphs from both unstructured data (like PDFs) and structured data (like CSVs) using tools such as Langchain and Neo4j. It also outlines steps for extracting text, chunking documents, constructing graphs, and querying the graph databases using LLMs.

  13. 13
    Article
    Avatar of baeldungBaeldung·1y

    Kafka Producer and Consumer Message Acknowledgement Options

    The tutorial explains the acknowledgment options available for producers and consumers in Apache Kafka, detailing how the three producer acknowledgment modes (none, leader, and all) impact message reliability and system performance. It also covers essential consumer configuration properties, such as group ID, auto offset reset, enable auto commit, and auto commit interval, which affect consumer message processing and reliability. Understanding these options allows developers to balance performance and reliability for different use cases.

  14. 14
    Article
    Avatar of dotnetsquad.NET·1y

    Separation of Concerns Principle: A Reflection after a job-interview

    The author's reflection on the Separation of Concerns (SoC) principle in software development, sparked by a challenging job interview. They discussed why passing request models directly through layers is considered bad practice and the importance of using Data Transfer Objects (DTOs) to maintain clear boundaries and reduce complexity. The post emphasizes the importance of implementing SoC properly to enforce isolation between layers and enhance security.

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

    Unit Testing Clean Architecture Use Cases

    Writing quality tests is crucial for the success of any software project. This guide focuses on unit testing Clean Architecture use cases in .NET. It explains the importance of testing, different types of tests, and provides specific examples using a typical apartment booking reservation system. Key points include the use of mocks, handling success and failure scenarios, verifying exception handling, and understanding the limitations of test coverage. Good tests act as documentation and help catch issues early, providing confidence in the code.

  16. 16
    Article
    Avatar of quastorQuastor Daily·1y

    How Pinterest Stores and Transfers Hundreds of Terabytes of Data Daily

    Pinterest uses a Change Data Capture (CDC) system to manage and transfer large volumes of data in real-time. This system helps keep their databases synchronized and improves performance by capturing and transferring only data changes. Pinterest's CDC architecture leverages open source tools like Debezium and Apache Kafka for scalability and reliability. The post also provides insights and practical tips for developers on technology selection, memory allocation, and cognitive psychology techniques to enhance coding skills.

  17. 17
    Article
    Avatar of communityCommunity Picks·1y

    Go Deep, Then Go Broad

    Discusses the importance of combining technical depth and breadth in a frontend engineer's career. Uses the pyramid of knowledge to explain how mastering both can lead to a more successful and fulfilling career. Highlights the C4 model for visualizing software architecture and recommends the book 'Fundamentals of Software Architecture'.

  18. 18
    Article
    Avatar of communityCommunity Picks·1y

    Sairyss/backend-best-practices: Best practices, tools and guidelines for backend development. Code examples in TypeScript + NodeJS

    The post provides a comprehensive guide on best practices, tools, and guidelines for backend development, focusing primarily on TypeScript and NodeJS. It covers various critical aspects such as architecture, API security, testing, deployment, logging, and monitoring. The guide emphasizes the importance of secure coding practices, proper logging and monitoring, and the use of automated tools for testing, profiling, and deployment to ensure robust and maintainable backend applications.

  19. 19
    Article
    Avatar of tigerabrodiTiger's Place·1y

    Data Loading Patterns (data integration)

    Discusses various data loading patterns for data integration, including full snapshot load, incremental load, delta load, and real-time updates. It explains the implementation techniques, key challenges, and use cases for each method, highlighting how they address different efficiency, history tracking, and immediacy requirements.

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

  21. 21
    Article
    Avatar of watercoolerWatercooler·1y

    …and now you’re stuck with it, because there’s only time for new features and quick patches

  22. 22
    Video
    Avatar of communityCommunity Picks·1y

    Event Sourcing for .NET Developers: From Zero to Implementation

    Event sourcing is a design pattern where changes in a domain are stored as immutable events in an append-only log. By focusing on events instead of state, event sourcing allows the reconstruction of current state through replaying events. Key concepts include events, streams, and projections. The tutorial covers implementing an event-sourced bank account aggregate in .NET, detailing event creation, application, and replaying events to achieve current state.

  23. 23
    Article
    Avatar of tigerabrodiTiger's Place·1y

    Event sourcing (notes)

    Event sourcing transforms events into the source of truth, providing perfect audit trails, time travel capabilities, and business insights. Snapshots optimize performance by saving system states, aiding in fast recovery and reducing replay load. Ideal for financial, legal, and complex business processes, event sourcing is distinguished from CDC by focusing on business decisions rather than database changes. Effective partitioning of data ensures efficient storage and retrieval.

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

    Build the abstraction first

    When pressed for time, it's possible to hardcode logic without creating a future mess by starting with an abstraction. Leveraging experience across projects, you can quickly implement a maintainable, scalable solution. Begin with a simple function or class to handle permissions and evolve it over time, ensuring minimal code adjustments outside the core logic.