جزییات کتاب
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 forThe Hit List of a software architect; functional vs non-functional requirementsProgramming languages; object-oriented vs functional programming; how to pick the right tool for a jobDatastores, SQL vs NoSQL vs Event Stores, CRUD vs CQRS vs Append-OnlyData Models, Domain-Driven Design approach to data modelingLayering your architecture, reducing complexity and dependenciesCode composition, SOLID principlesDependency inversion demystifiedLatency; synchronous and asynchronous processingErrors, error recovery, and the right way of handling retriesPractical approach to loggingReal-time and near-real-time processingEvent streaming and streaming architecturesCaching and CDNsUser Interfaces, unified cross-platform UI architecturesMVC model and its successors; a reusable UI composition modelMicroservices, the Dos and the Don'tsAPI design patterns, API versioning, and backward compatibilityAPI securityBatch processing, and how to eliminate itMulti-tenancy, and why it is more important than you might thinkRemoving dependencies between engineering workstreams, develop great code fast with a team of any sizeRuntime infrastructures, from dedicated servers to cloud to serverless architecturesRuntime frameworks, how to pick one, and how to protect yourself from the framework's shortcomingsBrainstorming technique that really worksEvery topic is illustrated with easy to follow code examples and diagrams. Enjoy!