Convert Figma logo to code with AI

mhadidg logosoftware-architecture-books

A comprehensive list of books on Software Architecture.

10,092
808
10,092
3

Top Related Projects

29,431

500 Lines or Less

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

Interactive roadmaps, guides and other educational content to help developers grow in their careers.

The Patterns of Scalable, Reliable, and Performant Large-Scale Systems

A curated list of engineering blogs

A curated and opinionated list of resources for Chief Technology Officers, with the emphasis on startups

Quick Overview

The mhadidg/software-architecture-books repository is a curated list of free and paid books on software architecture. It serves as a comprehensive resource for developers, architects, and tech enthusiasts looking to expand their knowledge in the field of software architecture. The repository is organized by topics and includes both general and specific architectural concepts.

Pros

  • Extensive collection of books covering various aspects of software architecture
  • Includes both free and paid resources, catering to different preferences and budgets
  • Well-organized structure with clear categorization of topics
  • Regularly updated with new additions and community contributions

Cons

  • Lacks detailed reviews or ratings for each book
  • Some links may become outdated over time if not regularly maintained
  • Does not provide direct download links for free books, only references
  • May be overwhelming for beginners due to the large number of resources

Note: As this is not a code library, the code example and quick start sections have been omitted.

Competitor Comparisons

29,431

500 Lines or Less

Pros of 500lines

  • Contains practical, real-world code examples of various software systems
  • Offers in-depth explanations of each project's architecture and implementation
  • Provides a hands-on approach to learning software architecture concepts

Cons of 500lines

  • Limited to 500 lines of code per project, which may oversimplify complex systems
  • Focuses on specific implementations rather than broader architectural principles
  • May become outdated as technologies and best practices evolve

Code comparison

500lines (Python example from the "Crawler" project):

def process_link(self, url):
    if url.startswith('/'):
        url = self.base_url + url
    if url.startswith(self.base_url):
        self.q.put(url)

software-architecture-books does not contain code examples, as it is a curated list of book recommendations.

Summary

500lines offers practical, code-focused examples of software architecture, while software-architecture-books provides a comprehensive list of resources for learning architectural concepts. 500lines is better suited for hands-on learners who prefer to study real implementations, whereas software-architecture-books caters to those seeking in-depth theoretical knowledge from various authors and experts in the field.

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

Pros of system-design-primer

  • Comprehensive coverage of system design concepts with practical examples
  • Active community and regular updates
  • Includes interactive coding challenges and exercises

Cons of system-design-primer

  • Focuses primarily on system design, less emphasis on broader software architecture principles
  • May be overwhelming for beginners due to its extensive content

Code Comparison

While both repositories primarily focus on educational content rather than code, system-design-primer does include some code examples:

system-design-primer:

class LRUCache:
    def __init__(self, capacity):
        self.capacity = capacity
        self.cache = OrderedDict()

    def get(self, key):
        if key not in self.cache:
            return -1
        self.cache.move_to_end(key)
        return self.cache[key]

software-architecture-books does not contain code examples, as it is a curated list of book recommendations.

Summary

system-design-primer offers a more hands-on approach to learning system design with practical examples and exercises, while software-architecture-books provides a curated list of resources for broader software architecture concepts. The choice between the two depends on the learner's specific needs and learning style.

Interactive roadmaps, guides and other educational content to help developers grow in their careers.

Pros of developer-roadmap

  • Provides comprehensive visual roadmaps for various tech roles
  • Regularly updated with current industry trends and technologies
  • Offers interactive versions of roadmaps on the project website

Cons of developer-roadmap

  • Focuses on breadth rather than depth of knowledge
  • May overwhelm beginners with the sheer amount of information
  • Lacks detailed explanations or resources for each topic

Code comparison

Not applicable, as both repositories primarily contain documentation and resources rather than code.

Summary

developer-roadmap offers a broad overview of skills and technologies needed for various tech roles, presented in visual roadmaps. It's regularly updated and provides interactive versions on its website. However, it may lack depth and can be overwhelming for beginners.

software-architecture-books, on the other hand, focuses specifically on software architecture and provides a curated list of books on the subject. It offers more in-depth resources but is limited to a single aspect of software development.

Both repositories serve different purposes: developer-roadmap is ideal for those seeking a comprehensive overview of skills needed in various tech roles, while software-architecture-books is better suited for those looking to deepen their knowledge in software architecture specifically.

The Patterns of Scalable, Reliable, and Performant Large-Scale Systems

Pros of awesome-scalability

  • Focuses specifically on scalability, providing a comprehensive resource for this crucial aspect of software architecture
  • Includes a wide range of topics, from system design to specific technologies and tools
  • Regularly updated with new resources and information

Cons of awesome-scalability

  • Less emphasis on general software architecture principles compared to software-architecture-books
  • May not provide as much depth on individual topics as dedicated books
  • Lacks structured learning paths for beginners

Code comparison

While both repositories are primarily curated lists of resources, awesome-scalability does include some code snippets in its explanations. Here's an example from the "Scalability" section:

def create_user(username, email):
    user = User(username=username, email=email)
    db.session.add(user)
    db.session.commit()

software-architecture-books, being a list of book recommendations, doesn't include code snippets.

Summary

awesome-scalability is an excellent resource for developers focused on building scalable systems, offering a wide range of up-to-date information. However, software-architecture-books provides a more comprehensive overview of software architecture principles through curated book recommendations. The choice between the two depends on the specific learning goals and preferences of the user.

A curated list of engineering blogs

Pros of engineering-blogs

  • Provides a comprehensive list of engineering blogs from various companies and individuals
  • Regularly updated with new blog entries and resources
  • Offers a wide range of topics and perspectives in software engineering

Cons of engineering-blogs

  • Lacks structured categorization or organization of blog entries
  • Does not provide in-depth analysis or summaries of the listed blogs
  • May include outdated or inactive blog links

Code comparison

engineering-blogs:

* [Airbnb Engineering](https://medium.com/airbnb-engineering)
* [Amazon](https://developer.amazon.com/blogs)
* [Artsy Engineering](https://artsy.github.io/)

software-architecture-books:

## Software Architecture Books
- [Designing Data-Intensive Applications](https://www.amazon.com/dp/1449373321)
- [Clean Architecture](https://www.amazon.com/dp/0134494164)
- [Building Microservices](https://www.amazon.com/dp/1491950358)

The engineering-blogs repository focuses on listing blog URLs, while software-architecture-books provides a curated list of book recommendations with links to purchase them. The code structure in engineering-blogs is simpler, using only bullet points, whereas software-architecture-books uses headings and nested lists for better organization.

A curated and opinionated list of resources for Chief Technology Officers, with the emphasis on startups

Pros of awesome-cto

  • Broader scope, covering various aspects of CTO responsibilities beyond software architecture
  • More frequently updated, with recent contributions
  • Includes links to articles, tools, and resources beyond just books

Cons of awesome-cto

  • Less focused on software architecture specifically
  • May be overwhelming for those solely interested in architecture concepts
  • Lacks detailed descriptions or reviews of the listed resources

Code comparison

Not applicable, as both repositories are primarily curated lists of resources without significant code content.

Additional notes

software-architecture-books:

  • Focused specifically on software architecture books
  • Provides brief descriptions and ratings for each book
  • Organized by categories within software architecture

awesome-cto:

  • Covers a wide range of topics relevant to CTOs
  • Includes sections on leadership, management, and technical skills
  • Offers a mix of books, articles, and online resources

Both repositories serve as valuable curated lists for technology leaders, with software-architecture-books being more specialized in its focus on architecture literature, while awesome-cto provides a broader overview of resources for CTOs and technical managers.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Software Architecture Books

A comprehensive list of books on Software Architecture.

People in the software industry have long argued about a definition of architecture. Ralph Johnson famously defined software architecture as "the important stuff (whatever that is)." I, subjectively, followed his definition while deciding whether or not to include a specific book.

Table of Contents

What is this?

This is NOT a recommendation list. When I made this, I intended for a comprehensive list excluding low-profile books—see inclusion criteria below. There was a simple reason behind that: I'm not a subject-matter expert on all these topics. In fact, I not a subject-matter expert on even a single topic of these. More importantly, I don't know your experience level nor your preferences. Some people prefer theoretical over practical books (I do). Others prefer foundational over comprehensive books or dry over engaging books or art-based over engineering-based books. Some people even enjoy verbose over concise books. Or and or and or.

How did I make this?

I thoroughly reviewed all books tagged with software-architecture on Goodreads and applied a simple algorithmic rules—see the inclusion criteria below. I don't think the list is perfectly comprehensive. Yet, I'm planning to update it regularly to make it as comprehensive as possible.

What should I read?

Don't be overwhelmed by the number of books on each subject. Practically speaking, you are supposed to read a few books on the subjects of your interest. Deciding what to read is your business. Personally, I start by reading a couple of reviews on Goodreads and examine the book table of content, if available. When in doubt, I read more reviews over the internet from blogs and the like. Alternatively, you may go with the Goodreads community preferences and start from the top of each list if you don't have the time to read reviews.

Inclusion criteria

  • The book must be relevant to Software Architecture; and
  • The content is not obsolete.
  • It must be technology agnostic or applicable to a wide range of technologies; and
  • The book profile on Goodreads matches these rules:
    • An average rating of 3.5 or above; and
    • A total number of ratings equals 50 or above.
    • At least 5 written reviews.
    • A minimum length of 50 pages.

Sorting criteria

The books are sorted solely based on the number of written reviews. There are, however, other important factors worth considering. For example, the average rating, the number of ratings, and the publishing date. Yet, I don't have an idea to put all these factors in a reasonable mathematical formula. If you have any, I'd love to hear what you've got in mind.

Books

System Architecture

TitleISBNRatingRatersPublished
Clean Architecture97801344941664.2336622017
Patterns of Enterprise Application Architecture97803211274264.1135012002
Building Evolutionary Architectures: Support Constant Change97814919863633.747052017
Fundamentals of Software Architecture: An Engineering Approach97814920434544.403642020
Software Architecture in Practice, 4th Edition07853421549553.826082021
Architecting for Scale: High Availability for Your Growing Applications97814919433973.561642016
Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility97986525515683.873322016
Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives97803211122934.102052005
Design It!: From Programmer to Software Architect97816805020913.681682017
The Software Architect Elevator: Transforming Enterprises with Technology and Business Architecture97814920775414.481012020
Righting Software97801365240383.79762019
Analysis Patterns: Reusable Object Models97802018954213.802461996
12 Essential Skills for Software Architects97803217172903.701182011
Software Architecture for Developers: Volume 2 - Visualise, document and explore your software architecture97986525515683.781082016
Documenting Software Architectures: Views and Beyond, 2nd Edition97802017037263.681742010
Software Architecture: Foundations, Theory, and Practice97804701677483.75652008
SOA: Principles of Service Design97801323448213.721302007
Service-Oriented Architecture: Concepts, Technology, and Design97801318585893.651702005

Design Patterns

TitleISBNRatingRatersPublished
Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software97805960071264.2875742021
Design Patterns: Elements of Reusable Object-Oriented Software97802016336104.19102931994
Refactoring to Patterns07853422133554.0513992004
Dive Into Design Patternsmissing4.783512019
Patterns Principles and Practices of Domain Driven Design97811187147064.352922015
Design Patterns Explained: A New Perspective on Object-Oriented Design, 2nd Edition97803212471483.883442004
Reactive Design Patterns97816172918073.601382014

Domain-Driven Design

TitleISBNRatingRatersPublished
Domain-Driven Design: Tackling Complexity in the Heart of Software97803211252174.1644452003
Domain-Driven Design Distilled97801344344213.788162016
Implementing Domain-Driven Design97803218345774.069342013
Domain-Driven Design Quickly97814116092593.594542007
Patterns, Principles, and Practices of Domain-Driven Design97811187147064.363022015

Microservices

TitleISBNRatingRatersPublished
Building Microservices: Designing Fine-Grained Systems, 2nd Edition97814919503574.1837922021
Monolith to Microservices: Sustaining Productivity While Detangling the System97814920478414.283892019
Microservice Patterns97816172945494.153332017
Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization97814919659483.813602016
Reactive Microservices Architecture97814919593433.631862016
Microservice Architecture: Aligning Principles, Practices, and Culture97814919597943.502172016
The Tao of Microservices97816172931463.95782017
Microservices From Design to Deploymentmissing3.88802016
Microservices AntiPatterns and Pitfalls97814919633193.96822016

Data Engineering

TitleISBNRatingRatersPublished
Designing Data-Intensive Applications97814493733204.7243852015
The Model Thinker: What You Need to Know to Make Data Work for You97804650946223.924932018
Big Data: Principles and best practices of scalable realtime data systems97816172903433.824402015
Beautiful Data: The Stories Behind Elegant Data Solutions97805961571113.652582009
Data Modeling Made Simple: A Practical Guide for Business and It Professionals, 2nd Edition97809771400603.76742015

Streaming and Messaging

TitleISBNRatingRatersPublished
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions07853422006834.1013882003
Making Sense of Stream Processing97814919401054.311432016
Streaming Systems97814919838743.921062018
Designing Event-Driven Systems97814920382213.801902018

Distributed Systems

TitleISBNRatingRatersPublished
Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services97814919836453.584532018
Distributed Systems For Fun and Profitmissing4.193262013
Security Engineering: A Guide to Building Dependable Distributed Systems, 3rd Edition97804700685264.196222020
Database Internals: A Deep Dive into How Distributed Data Systems Work97814920403474.261782019
Distributed Systems: Principles and Paradigms, 2nd Edition97801323922733.993572016

Cloud Engineering

TitleISBNRatingRatersPublished
Infrastructure as Code: Managing Servers in the Cloud97814919243584.203162016
Cloud Native Infrastructure: Patterns for Scalable Infrastructure and Applications in a Dynamic Environment97814919843073.571302017
Cloud Native Patterns: Designing change-tolerant software97816172942974.24762019
The Practice of Cloud System Administration: Devops and SRE Practices for Web Services, Volume 297801334785254.382472014
Beyond the Twelve-Factor App Exploring the DNA of Highly Scalable, Resilient Cloud Applications97814919440113.54912016
Kubernetes Patterns: Reusable Elements for Designing Cloud-Native Applications97814920502854.271012019
Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications97816211403684.23662014
Cloud Computing: Concepts, Technology & Architecture97801333875203.781372013

Web Scalability

TitleISBNRatingRatersPublished
The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise, 2nd Edition97801370304224.003072015
Web Scalability for Startup Engineers97800718436524.581602015
Building Scalable Web Sites97805961023573.732992006
Scalable Internet Architectures97806723269983.671682006
Scalability Rules: 50 Principles for Scaling Web Sites97803217538853.972362011
The Art of Capacity Planning: Scaling Web Resources97805965185783.752122008

Agile

TitleISBNRatingRatersPublished
Clean Agile: Back to Basics97801357818694.306332019
Agile Software Development: Principles, Patterns, and Practices97801359744454.2512012002
The Art of Agile Development97805965276793.968282007
Agile Software Development97802016996923.983902001
Planning Extreme Programming97802017109153.913632000
Scaling Software Agility: Best Practices for Large Enterprises97803214581933.651682007
Balancing Agility and Discipline: A Guide for the Perplexed07853421861233.591052003

DevOps

TitleISBNRatingRatersPublished
The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations97819427880034.3336472016
Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation97803216019194.1829692010
Continuous Integration: Improving Software Quality and Reducing Risk97803213363853.814312007
Devops: A Software Architect's Perspective97801340498473.63572015

General

TitleISBNRatingRatersPublished
The Pragmatic Programmer: From Journeyman to Master97802016162244.32173791999
The Mythical Man-Month: Essays on Software Engineering97802018359534.03122951995
The Unicorn Project97819427887684.1349272019
Release It!: Design and Deploy Production-Ready Software97809787392184.2627462007
A Philosophy of Software Design97817321022004.1415162018
Site Reliability Engineering: How Google Runs Production Systems97814919291244.2319802016
The Software Craftsman: Professionalism, Pragmatism, Pride97801340525024.337692014
Code Simplicity: The Fundamentals of Software97814493138903.745012012
High Performance Browser Networking97814493447644.506712013
97 Things Every Software Architect Should Know: Collective Wisdom from the Experts97805965226983.626862009
High Performance Web Sites97805965293074.156902007
Software Estimation: Demystifying the Black Art97807356053504.049112006
The Design of Design: Essays from a Computer Scientist97802013629853.765712010
Software Requirements: Practical Techniques for Gathering and Managing Requirements Throughout the Product Development Cycle, 3rd Edition97807356187944.107132016
Waltzing with Bears: Managing Risk on Software Projects97809326336063.977022003
Software Engineering at Google: Lessons Learned from Programming Over Time97814920827984.193442020
Ship It!: A Practical Guide to Successful Software Projects97809745140483.725092005
The Leprechauns of Software Engineering97829547455033.841472012
Software Design X-Rays: Fix Technical Debt with Behavioral Code Analysis97816805027254.201122018
The Site Reliability Workbook: Practical Ways to Implement SRE97814920295024.342312018
Beyond Software Architecture: Creating and Sustaining Winning Solutions97802017759453.721412003
37 Things One Architect Knows97815370829814.351002016
Presentation Patterns: Techniques for Crafting Better Presentations97803218208083.941232012
Chaos Engineering97814919923954.231122017
Container Security: Fundamental Technology Concepts That Protect Containerized Applications97814920567064.48522020
Composing Software97816612125683.88852018
Software Security: Building Security in97803213567033.63822006
14 Habits of Highly Productive Developers97817352665344.051952020

Licence

This work is licensed under a Creative Commons Attribution 4.0 International License.