Best of Architecture2024

  1. 1
    Article
    Avatar of communityCommunity Picks·2y

    API Design 101: From Basics to Best Practices

    This post provides an in-depth explanation of API design, focusing on the basics and best practices. It covers topics such as CRUD operations, communication protocols, REST, GraphQL, and more.

  2. 2
    Article
    Avatar of devtoDEV·2y

    How Senior Software Engineers Document Their Project

    Software engineers often dislike documenting projects, but it distinguishes good engineers from bad. The Architectural Decision Record (ADR) is highlighted as an effective way to document architectural changes, providing benefits like aiding memory, improving team learning, and assisting future developers. The post outlines the importance of ADRs and provides a template and examples for implementation.

  3. 3
    Article
    Avatar of devtoDEV·2y

    SOLID - The Simple Way To Understand

    This post explains the SOLID principles in a simple way using Typescript examples. It covers the Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, and Dependency Inversion Principle.

  4. 4
    Article
    Avatar of bytebytegoByteByteGo·2y

    EP128: The Ultimate Software Architect Knowledge Map

    Discover the ultimate knowledge map for software architects, exploring essential skills such as mastering programming languages, tools, design and architectural principles, platform knowledge, data analytics, networking, and supporting skills. Learn about the wide-ranging capabilities of PostgreSQL, from time-series data to federated querying and graph databases. Gain insights into advancing from a junior to a senior developer, covering collaboration tools, programming languages, API development, authentication, and system design.

  5. 5
    Article
    Avatar of medium_jsMedium·2y

    10 Best Resources to Learn Software Architecture in 2025

    Mastering software architecture is crucial for handling complex systems and transitioning from a developer role to an architect role. Essential resources include books like 'Designing Data-Intensive Applications' and courses such as 'The Complete Microservices and Event-Driven Architecture' on Udemy. Additionally, whitepapers and engineering blogs provide valuable insights. These resources cover various architectural styles, principles, and real-world challenges, helping you design scalable, maintainable, and high-performing systems.

  6. 6
    Article
    Avatar of gcgitconnected·2y

    Message Queues in System Design

    Message queues are durable components that support asynchronous communication, helping to decouple events and handle tasks without immediate processing. This allows better scalability and durability, especially under high traffic. Different types of queues like FIFO and priority queues, as well as different models like push-based and pull-based queues, provide versatile solutions for various needs. Examples of message queues include RabbitMQ for versatility, Kafka for high throughput, and Amazon SQS for managed cloud-based services.

  7. 7
    Article
    Avatar of techworld-with-milanTech World With Milan·1y

    How to learn API?

    Learn the essentials of API development, including core protocols, architecture styles, and security practices. Discover best practices for designing, documenting, and testing APIs, alongside a curated list of resources to aid in your API journey. Avoid common API anti-patterns with practical examples and tips.

  8. 8
    Article
    Avatar of communityCommunity Picks·2y

    Best Practices for Naming API Endpoints

    Following best practices for naming API endpoints ensures your API is intuitive, consistent, and easy to use. Use nouns for resource names, plural names for collections, and HTTP methods to define actions. Maintain a clear hierarchical structure, use consistent naming conventions, avoid special characters and spaces, keep names simple and intuitive, include versioning, and describe actions with query parameters.

  9. 9
    Article
    Avatar of techworld-with-milanTech World With Milan·2y

    What is Clean Architecture?

    Clean Architecture promotes the idea of modular, testable, and maintainable code. It emphasizes separating concerns and defining clear boundaries between system components. Clean Architecture is suitable for complex or long-lived applications, projects with a central domain model, and teams that prioritize clean code practices.

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

    8 Strategies for Reducing Latency

    High latency can render an application unusable, frustrating users and negatively impacting business outcomes. Developers need to understand low-latency strategies such as caching, using Content Delivery Networks (CDNs), load balancing, asynchronous processing, database indexing, data compression, pre-caching, and utilizing keep-alive connections to mitigate these issues and improve performance.

  11. 11
    Article
    Avatar of javarevisitedJavarevisited·2y

    40 Must Read Engineering Blogs to Learn System Design and Software Architecture in 2024

    To master system design and software architecture, it's not enough to just understand concepts; practical application and learning from real-world examples are crucial. Reading engineering blogs from top tech companies like Netflix, Uber, and Google offers valuable insights into solving complex problems, employing cutting-edge technologies, and following industry best practices. These blogs provide deep dives into actual cases and innovative solutions. To maximize learning, start with relevant blogs, focus on common patterns, and apply the knowledge practically.

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

  13. 13
    Article
    Avatar of techworld-with-milanTech World With Milan·2y

    Documenting Software Architectures

    Mastering software architecture documentation is crucial for effective communication among stakeholders and maintaining alignment across the software development lifecycle. The post discusses the arc42 template and C4 model for organizing and visualizing architecture documentation. The arc42 template provides a structured approach to documenting architectural decisions, while the C4 model helps visualize different levels of system abstraction. Combining these techniques with tools like Structurizr and AsciiDoc enables version control and automation, ensuring up-to-date and easily accessible documentation.

  14. 14
    Article
    Avatar of freecodecampfreeCodeCamp·2y

    How to Create Software Architecture Diagrams Using the C4 Model

    The C4 model is a method to help software development teams describe and communicate software architecture, using four levels: Context, Containers, Components, and Code. This approach ensures that architecture diagrams are up-to-date and easily understandable, helping everyone stay on the same page. With the help of tools like Structurizr, diagrams can be created and maintained efficiently, integrated directly into development processes with version control and automation.

  15. 15
    Article
    Avatar of javarevisitedJavarevisited·2y

    How to Design Twitter (X) in a System Design Interview?

    Designing a system like Twitter (X) in a system design interview involves outlining core functionalities such as composing and sharing tweets, following users, and favoriting tweets. Non-functional requirements like scalability, high availability, and stability are crucial for handling large-scale operations. Key aspects include capacity estimation, API design, database design, and understanding queries per second (QPS). Employing a structured approach and utilizing tools like Redis for caching, MySQL for data consistency, and Amazon S3 for media storage are essential. Detailed component design includes load balancers, CDNs, and handling failure scenarios to ensure robust system performance.

  16. 16
    Article
    Avatar of javarevisitedJavarevisited·2y

    10 Best GitHub Repositories to Prepare for System Design Interviews

    System design interviews are crucial for senior and lead engineering positions but tough to crack. A well-curated list of GitHub repositories offers resources, examples, and practice materials to help prepare for these interviews. Key repositories include ByteByteGoHq, System Design Primer, Awesome System Design, System Design Interview, Grokking System Design, and others, covering topics like scalability, large-scale system design, real-world architectures, and more.

  17. 17
    Article
    Avatar of medium_jsMedium·2y

    40 Must-Read White Papers to Learn System Design and Software Architecture

    This post lists 40 essential white papers for learning system design and software architecture. It is geared towards those preparing for system design interviews or aiming to understand complex system architectures. Each white paper provides in-depth technical insights from industry leaders like Google and AWS, covering topics from distributed file systems to data processing models and consensus algorithms.

  18. 18
    Article
    Avatar of devtoDEV·2y

    S.O.L.I.D: The 5 Golden Rules to Level Up Your Coding Skills

    Learn about the S.O.L.I.D principles, including the Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, and Dependency Inversion Principle. These principles help in writing more maintainable, scalable, and flexible code.

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

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

    8 Must-Know Strategies to Build Scalable Systems

    Explore eight essential strategies for building scalable systems, such as stateless services, horizontal scaling, load balancing, auto-scaling, caching, database replication, database sharding, and asynchronous processing. These techniques ensure systems can handle increased loads efficiently without compromising performance or user experience.

  21. 21
    Article
    Avatar of devtoDEV·2y

    Backend Code Review Checklist

    A checklist for backend code reviews covering code style, maintainability, requirements, API design, documentation, error handling, security, dependencies, logging, testing, performance, version control, and spelling.

  22. 22
    Video
    Avatar of communityCommunity Picks·2y

    Implement Clean Architecture in Next.js

    Clean architecture, a concept developed by Robert Martin, integrates various software architectures like hexagonal, onion, and others into a cohesive framework. It focuses on ensuring that the business logic of an application remains independent of frameworks, UI, databases, and external agencies. The post discusses implementing clean architecture in a Next.js application, highlighting the importance of separating different concerns through layers. It explains how to structure code to make applications more testable and maintainable. Key aspects include dependency injection, unit testing, and the interaction between different architectural layers.

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

  24. 24
    Article
    Avatar of communityCommunity Picks·2y

    API Design 101: My Best Practices for Building Great APIs

    API design involves creating rules and specifications for how an API exposes functionality and data to developers and users. It improves user experience and performance. Best practices include following RESTful design, using JSON as the data format, implementing input validation and parameter sanitization, documenting the API, implementing versioning strategies, and testing and monitoring the API.

  25. 25
    Article
    Avatar of communityCommunity Picks·2y

    Top 5 Must-Read Books for Software Architects

    Software architecture is comparable to solving complex puzzles, where each piece must fit perfectly to create an efficient system. At Tectrain, a team of software architects recommends five must-read books that provide deep insights into mastering software architecture. These books include practical guides, real-world case studies, and step-by-step tutorials, making them invaluable resources for both novices and experienced professionals looking to enhance their skills and tackle certification programs like the iSAQB CPSA-F.