Best of Architecture — 2024
- 1
- 2
DEV·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
- 4
ByteByteGo·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
Medium·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
gitconnected·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
Tech 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
Community 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
Tech 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
System 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
Javarevisited·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
Community 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
Tech 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
freeCodeCamp·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
Javarevisited·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
Javarevisited·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
Medium·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
DEV·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
Javarevisited·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
System 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
- 22
Community 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
DEV·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
Community 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
Community 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.