Keyboard shortcuts

Press โ† or โ†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Diego Pacheco's Software Architecture Library

This repository contains a curated collection of concepts, guidance about Software Architecture by Diego Pacheco.

I wrote this book because I have been doing software architecture for more than 20 years and I want to share my philosophy, practices, and important concepts and patterns with other architects and aspiring architects. This is also an experiment - a living piece of advice that I want to improve over time.

What to Expect

  • Honest and direct advice
  • Highly opinionated content
  • Practical and actionable guidance

What this book is NOT

  • Not a tutorial or step-by-step guide
  • It's not a panacea for all architecture problems

About the Author

๐Ÿ‘จโ€๐Ÿ’ป Diego Pacheco Bio Diego Pacheco is a seasoned, experienced ๐Ÿ‡ง๐Ÿ‡ท Brazilian software architect, author, speaker, technology mentor, and DevOps practitioner with more than 20 years of solid experience. I have been building teams and mentoring people for more than a decade, teaching soft skills and technology daily. Selling projects, hiring, building solutions, running coding dojos, long retrospectives, weekly 1:1s, design sessions, code reviews, and my favorite debate club: architects community of practices and development groups for more than a decade. Living, breathing, and practicing real Agile since 2005, coaching teams, and helping many companies discover better ways to work using Lean and Kanban, Agile principles, and methods like XP and DTA/TTA. I have led complex architecture teams and engineering teams at scale guided by SOA principles, using a variety of open-source languages like Java, Scala, Rust, Go, Python, Groovy, JavaScript, and TypeScript, cloud providers like AWS Cloud and Google GCP, amazing solutions like Akka, ActiveMQ, Netty, Tomcat, and Gatling, NoSQL databases like Cassandra, Redis, Elasticache Redis, Elasticsearch, Opensearch, RabbitMQ, libraries like Spring, Hibernate, and Spring Boot, and also the NetflixOSS Stack: Simian Army, RxJava, Karyon, Dynomite, Eureka, and Ribbon. I have implemented complex security solutions at scale using AWS KMS, S3, Containers (ECS and EKS), Terraform, and Jenkins. Over a decade of experience as a consultant, coding, designing, and training people at big customers in Brazil, London, Barcelona, India, and the USA (Silicon Valley and Midwest). I have a passion for functional programming and distributed systems, NoSQL Databases, a mindset for Observability, and always learning new programming languages.

๐ŸŒฑCurrently: Working as a principal Software Architect with AWS public cloud, Kubernetes/EKS, performing complex cloud migrations, library migrations, server and persistence migrations, and security at scale with multi-level envelope encryption solutions using KMS and S3. While still hiring, teaching, mentoring, and growing engineers and architects. During my free time, I love playing with my daughter, playing guitar, gaming, coding POCs, and blogging. Active blogger at http://diego-pacheco.blogspot.com.br/

๐Ÿ’ป Core skills and expertise: Architecture Design and architecture coding for highly scalable systems Delivering distributed systems using SOA and Microservices principles, tools, and techniques Driving and executing complex cloud migrations, library and server migrations at scale Performance tuning, troubleshooting & DevOps engineering Functional Programming and Scala Technology Mentor, agile coach & leader for architecture and engineering teams Consultant on development practices with XP / Kanban Hire, develop, retain, and truly grow talent at scale

๐ŸŒ Resources

๐Ÿ“ Tiny Essays:

๐Ÿฅ‡ Tiny Side Projects

Table of Contents

  1. Chapter 0 - Zero
  • Why - Doing what's right
  • Rationale - The reasoning behind this book
  1. Chapter 1 - Philosophy
  1. Chapter 2 - Anti-Patterns
  1. Chapter 3 - Dilemmas
  1. Chapter 4 - Properties
  1. Chapter 5 - Practices
  1. Chapter 6 - Concepts
  1. Chapter 7 - Patterns
  1. Chapter 8 - Tools
  1. Chapter 9 - Epilogue
  • Epilogue - Final thoughts and next steps
  • Resources - Recommended books and learning materials
  • Changelog - Updates and revisions to the book
  • References - External blog posts, articles, and technical documentation
  • Glossary - Definitions of key terms used in the book
  • Index - Complete index of topics covered in the book