Great
software architects aren’t born. They are a product of decades of
building real-life solutions and relentless learning. They become really
good at their trade closer to the retirement age. But most startups are
fostered by young entrepreneurs who dare to try but lack the
experience. They also lack the $$ to hire a silver-haired architect to
join their team from day one. Left to their own faculties, the
entrepreneurs and their engineering teams quickly get on the path of
learning from their own mistakes. Eventually, they discover this is the
most expensive way of learning. Over time they get better, and some
become the true masters of the craft – but way too late to make a
difference for their early-day projects.
This book is
meant to break the vicious circle. It isn’t a textbook, at least not in
the traditional sense. It is a business-centric practical guide to
software architecture, intended for software engineers, technology
executives, students of computer science, and tech-savvy entrepreneurs
who want to de-risk their entrepreneurial endeavors or to fast-track
their careers in software engineering. The recipes in this book are
highly practical, battle-tested, and current for building mid- to
large-scale systems in 2019-2020.
The book covers the following topics:
- Software architecture, what it is, and what it's for
- The Hit List of a software architect; functional vs non-functional requirements
- Programming languages; object-oriented vs functional programming; how to pick the right tool for a job
- Datastores, SQL vs NoSQL vs Event Stores, CRUD vs CQRS vs Append-Only
- Data Models, Domain-Driven Design approach to data modeling
- Layering your architecture, reducing complexity and dependencies
- Code composition, SOLID principles
- Dependency inversion demystified
- Latency; synchronous and asynchronous processing
- Errors, error recovery, and the right way of handling retries
- Practical approach to logging
- Real-time and near-real-time processing
- Event streaming and streaming architectures
- Caching and CDNs
- User Interfaces, unified cross-platform UI architectures
- MVC model and its successors; a reusable UI composition model
- Microservices, the Dos and the Don'ts
- API design patterns, API versioning, and backward compatibility
- API security
- Batch processing, and how to eliminate it
- Multi-tenancy, and why it is more important than you might think
- Removing dependencies between engineering workstreams, develop great code fast with a team of any size
- Runtime infrastructures, from dedicated servers to cloud to serverless architectures
- Runtime frameworks, how to pick one, and how to protect yourself from the framework's shortcomings
- Brainstorming technique that really works
Every topic is illustrated with easy to follow code examples and diagrams. Enjoy!