0
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