Software Architecture and Decision-Making: Leveraging Leadership, Technology, and Product Management to Build Great Products (Early Release)
معرفی کتاب «Software Architecture and Decision-Making: Leveraging Leadership, Technology, and Product Management to Build Great Products (Early Release)» نوشتهٔ Srinath Perera، منتشرشده توسط نشر Addison-Wesley Professional در سال 2024. این کتاب در 234 صفحه، فرمت epub، زبان انگلیسی ارائه شده است. «Software Architecture and Decision-Making: Leveraging Leadership, Technology, and Product Management to Build Great Products (Early Release)» در دستهٔ برنامهنویسی قرار دارد.
Leverage leadership knowledge to make better software architecture decisions. Think deeply but implement slowly. The overarching goal of software systems (hence, for software architecture) is to build systems that meet quality standards and that provide the highest return on investment (ROI) in the long run or within a defined period of time. A great product requires a combination of technology, leadership, and product management (including UX). Leadership is primarily about managing uncertainty and making the right judgment. To build great products, technical leaders need to combine technology, leadership, and product management knowledge, and make the right decisions. Many technical mistakes come from the gap between knowledge about these three items and judgment. In Software Architecture and Decision-Making, Srinath Perera explains principles and concepts that software architects must understand deeply and how to employ those principles to manage uncertainty. The questions and principles discussed in this book help manage uncertainty while building software architecture and provide a framework for making decisions. This book is for all technical leaders in the software industry who make holistic judgments about the systems they build and for future leaders learning the craft. As software architects, we learn about abstractions, architecture styles, and patterns. We study their pros and cons, which one to use in a given situation, and how to compose them with an awareness of pitfalls, negative examples, and use cases. However, many errors are made not because we do not understand these things. Most design mistakes are caused by a lack of judgment, not by a lack of knowledge. Here, judgment refers to the ability to make considered decisions or arrive at sensible conclusions optimizing for the most important outcome. Understand the importance of strong decision making with examples from great technical leaders such as the Wright brothers and Kelly Johnson Leverage five key questions and seven important principles to understand uncertainties during the design process and make strategic architectural decisions Approach the design systematically, first at the macro level and then the individual service level This definitive guide explains principles and concepts--technical and non-technical alike--that software architects, senior software engineers, and technical leads must understand to manage the inevitable uncertainty involved in building software systems and to drive success of the products for which they are responsible. Cover Page Title Page Contents Table of Contents 1. Introduction to Software Leadership Role of Judgment Goal of This Book Part I: Introduction Part II: Essential Background Part III: System Design Part IV: Putting Everything Together 2. Understanding Systems, Design, and Architecture What Is Software Architecture? How to Design a System Five Questions Seven Principles: The Overarching Concepts Designing for an Online Bookstore Designing for the Cloud Summary 3. Mental Models for Understanding and Explaining System Performance A Computer System Models for Performance Optimization Techniques Intuitive Feel for Performance Leadership Considerations Summary 4. Understanding User Experience (UX) General UX Concepts for Architects UX Design for Configurations UX Design for APIs UX Design for Extensions Leadership Considerations Summary 5. Macro Architecture: Introduction History of Macro Architecture Modern Architectures Macro Architectural Building Blocks Leadership Considerations Summary 6. Macro Architecture: Coordination Approach 1: Drive Flow from Client Approach 2: Use Another Service Approach 3: Use Centralized Middleware Approach 4: Implement Choreography Leadership Considerations Summary 7. Macro Architecture: Preserving Consistency of State Why Transactions? Why Do We Need to Go Beyond Transactions? Going Beyond Transactions Best Practices Leadership Considerations Summary 8. Macro Architecture: Handling Security User Management Interaction Security Storage, GDPR, and Other Regulations Security Strategy and Advice Leadership Considerations Summary 9. Macro Architecture: Handling HA and Scale Adding High Availability Understanding Scalability Scaling for a Modern Architecture: Base Solution Scaling: The Tools of Trade Building Scalable Systems Leadership Considerations Summary 10. Macro Architecture: Microservices Considerations Decision 1: Handling Shared Database(s) Decision 2: Securing Microservices Decision 3: Coordinating Microservices Decision 4: Avoiding Dependency Hell Loosely Coupled, Repository-Based Teams as an Alternative to Microservices Leadership Considerations Summary 11. Server Architectures Writing a Service Understanding Best Practices for Writing a Service Understanding Advanced Techniques Using These Techniques in Practice Leadership Considerations Summary 12. Building Stable Systems Why Do Systems Fail, and What Can We Do About Them? How to Handle Known Errors Common Bugs How to Handle Unknown Errors Graceful Degradation Leadership Considerations Summary 13. Building and Evolving the Systems Getting Your Hands Dirty Communicating the Design Evolving the System: How to Learn from Your Users and Improve the System Leadership Considerations Summary Author Bio
دانلود کتاب Software Architecture and Decision-Making: Leveraging Leadership, Technology, and Product Management to Build Great Products (Early Release)