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!
چکیده فارسی
معماران نرم افزار بزرگ متولد نمی شوند. آنها محصول دهه ها ایجاد راه حل های واقعی و یادگیری بی وقفه هستند. آنها در تجارت خود به سن بازنشستگی بسیار خوب می شوند. اما بیشتر استارتآپها توسط کارآفرینان جوانی پرورش مییابند که جرات تلاش کردن را دارند اما فاقد تجربه هستند. آنها همچنین فاقد دلار دلار برای استخدام یک معمار با موهای نقره ای هستند تا از روز اول به تیم آنها بپیوندند. کارآفرینان و تیم های مهندسی آنها که به دانشکده های خود رها شده اند، به سرعت در مسیر یادگیری از اشتباهات خود قرار می گیرند. در نهایت، آنها متوجه می شوند که این گران ترین راه یادگیری است. با گذشت زمان آنها بهتر می شوند و برخی به استاد واقعی این صنعت تبدیل می شوند - اما برای ایجاد تغییر در پروژه های اولیه خود بسیار دیر شده است.
این کتاب برای شکستن دور باطل طراحی شده است. این یک کتاب درسی نیست، حداقل نه به معنای سنتی. این یک راهنمای عملی مبتنی بر کسبوکار برای معماری نرمافزار است که برای مهندسین نرمافزار، مدیران فنآوری، دانشجویان علوم کامپیوتر و کارآفرینان متبحر در زمینه فناوری که میخواهند تلاشهای کارآفرینی خود را به خطر بیندازند یا مسیر شغلی خود را در مهندسی نرمافزار سریع دنبال کنند، در نظر گرفته شده است. دستور العمل های این کتاب بسیار کاربردی، آزمایش شده در نبرد و فعلی برای ساختن سیستم های متوسط تا بزرگ در سال های 2019-2020 هستند.
این کتاب موضوعات زیر را پوشش میدهد:
- معماری نرم افزار، چیست و چه کاربردی دارد
- فهرست آمار یک معمار نرم افزار. الزامات کاربردی در مقابل غیر عملکردی
- زبان های برنامه نویسی؛ برنامه نویسی شی گرا در مقابل برنامه نویسی تابعی. نحوه انتخاب ابزار مناسب برای کار
- Datastores، SQL در مقابل NoSQL در مقابل فروشگاه رویداد، CRUD در مقابل CQRS در مقابل Append-Only
- مدلهای داده، رویکرد طراحی دامنه محور برای مدلسازی دادهها
- لایه بندی معماری، کاهش پیچیدگی و وابستگی ها
- ترکیب کد، اصول SOLID
- ابهام زدایی از وارونگی وابستگی
- تأخیر؛ پردازش همزمان و ناهمزمان
- خطاها، بازیابی خطا، و روش صحیح مدیریت تلاش های مجدد
- رویکرد عملی برای ثبت گزارش
- پردازش بیدرنگ و تقریباً بیدرنگ
- معماریهای جریان و جریان رویداد
- Caching و CDN
- رابط های کاربر، معماری های رابط کاربری متقابل پلت فرم یکپارچه
- مدل MVC و جانشینان آن؛ یک مدل ترکیب رابط کاربری قابل استفاده مجدد
- خدمات ریز، بایدها و نبایدها
- الگوهای طراحی API، نسخهسازی API و سازگاری به عقب
- امنیت API
- پردازش دسته ای و نحوه حذف آن
- چند اجاره ای و چرا مهمتر از آن چیزی است که فکر می کنید
- حذف وابستگیها بین جریانهای کاری مهندسی، توسعه سریع کد عالی با تیمی با هر اندازه
- زیرساختهای زمان اجرا، از سرورهای اختصاصی گرفته تا معماریهای ابری و بدون سرور
- چارچوبهای زمان اجرا، نحوه انتخاب یکی، و نحوه محافظت از خود در برابر کاستیهای چارچوب
- تکنیک طوفان فکری که واقعا کار می کند
هر موضوعی با مثالها و نمودارهای کد ساده نشان داده شده است. لذت ببرید!
ادامه ...
بستن ...
ISBN-13: 978-1697271065
ISBN-10: 1697271065
ادامه ...
بستن ...