Software Architecture and Decision-Making: Leveraging Leadership, Technology, and Product Management to Build Great Products, 1st edition
BRAND: PEARSON
eBook edition. 1 Year Subscription. Dành cho Cá nhân | Trường ĐH, Nhóm, Thư Viện: Gọi 0915920514 để báo giá Pearson, Vital Source eBook hoặc mua Sách In
Tổng quan sách
Tận dụng kiến thức lãnh đạo để đưa ra quyết định về kiến trúc phần mềm tốt hơn. Hãy suy nghĩ sâu sắc nhưng thực hiện từ từ.Mục tiêu bao trùm của hệ thống phần mềm (do đó, đối với kiến trúc phần mềm) là xây dựng các hệ thống đáp ứng các tiêu chuẩn chất lượng và mang lại lợi tức đầu tư (ROI) cao nhất trong thời gian dài hoặc trong một khoảng thời gian xác định.Một sản phẩm tuyệt vời đòi hỏi sự kết hợp giữa công nghệ, khả năng lãnh đạo và quản lý sản phẩm (bao gồm cả UX). Lãnh đạo chủ yếu là quản lý sự không chắc chắn và đưa ra phán đoán đúng đắn. Để xây dựng những sản phẩm tuyệt vời, các nhà lãnh đạo kỹ thuật cần kết hợp kiến thức về công nghệ, khả năng lãnh đạo và quản lý sản phẩm cũng như đưa ra quyết định đúng đắn. Nhiều lỗi kỹ thuật xuất phát từ khoảng cách giữa kiến thức về ba mục này và phán đoán.Trong Kiến trúc phần mềm và ra quyết định, Srinath Perera giải thích các nguyên tắc và khái niệm mà kiến trúc sư phần mềm phải hiểu sâu sắc và cách sử dụng những nguyên tắc đó để quản lý sự không chắc chắn. Các câu hỏi và nguyên tắc được thảo luận trong cuốn sách này giúp quản lý sự không chắc chắn trong khi xây dựng kiến trúc phần mềm và cung cấp một khuôn khổ để đưa ra quyết định. Cuốn sách này dành cho tất cả các nhà lãnh đạo kỹ thuật trong ngành công nghiệp phần mềm, những người đưa ra những đánh giá toàn diện về hệ thống mà họ xây dựng và dành cho các nhà lãnh đạo tương lai đang học nghề.Hiểu được tầm quan trọng của việc ra quyết định đúng đắn với những ví dụ từ các nhà lãnh đạo kỹ thuật vĩ đại như anh em nhà Wright và Kelly JohnsonTận dụng năm câu hỏi chính và bảy nguyên tắc quan trọng để hiểu những điều không chắc chắn trong quá trình thiết kế và đưa ra các quyết định kiến trúc chiến lượcTiếp cận thiết kế một cách có hệ thống, đầu tiên ở cấp độ vĩ mô và sau đó là cấp độ dịch vụ cá nhânHướng dẫn dứt khoát này giải thích các nguyên tắc và khái niệm--kỹ thuật và phi kỹ thuật giống nhau--mà các kiến trúc sư phần mềm, kỹ sư phần mềm cao cấp và lãnh đạo kỹ thuật phải hiểu để quản lý sự không chắc chắn không thể tránh khỏi liên quan đến việc xây dựng hệ thống phần mềm và thúc đẩy sự thành công của các sản phẩm mà họ chịu trách nhiệm.
- Chapter 1: Introduction to Software Leadership 1Role of Judgment 1Goal of This Book 3Part I: Introduction 6Part II: Essential Background 7Part III: System Design 7Part IV: Putting Everything Together 8
- Chapter 2: Understanding Systems, Design, and Architecture 9What Is Software Architecture? 9How to Design a System 11Five Questions 12Seven Principles: The Overarching Concepts 16Designing for an Online Bookstore 24Designing for the Cloud 27Summary 29
- Chapter 3: Mental Models for Understanding and Explaining System Performance 31A Computer System 32Models for Performance 33Optimization Techniques 41Intuitive Feel for Performance 46Leadership Considerations 46Summary 47
- Chapter 4: Understanding User Experience (UX) 49General UX Concepts for Architects 49UX Design for Configurations 53UX Design for APIs 54UX Design for Extensions 56Leadership Considerations 57Summary 57
- Chapter 5: Macro Architecture: Introduction 59History of Macro Architecture 60Modern Architectures 62Macro Architectural Building Blocks 63Leadership Considerations 66Summary 68
- Chapter 6: Macro Architecture: Coordination 69Approach 1: Drive Flow from Client 69Approach 2: Use Another Service 70Approach 3: Use Centralized Middleware 71Approach 4: Implement Choreography 71Leadership Considerations 73Summary 73
- Chapter 7: Macro Architecture: Preserving Consistency of State 75Why Transactions? 75Why Do We Need to Go Beyond Transactions? 76Going Beyond Transactions 77Best Practices 80Leadership Considerations 81Summary 83
- Chapter 8: Macro Architecture: Handling Security 85User Management 86Interaction Security 88Storage, GDPR, and Other Regulations 96Security Strategy and Advice 98Leadership Considerations 101Summary 103
- Chapter 9: Macro Architecture: Handling High Availability and Scale 105Adding High Availability 105Understanding Scalability 109Scaling for a Modern Architecture: Base Solution 110Scaling: The Tools of Trade 111Building Scalable Systems 113Leadership Considerations 117Summary 118
- Chapter 10: Macro Architecture: Microservices Considerations 119Decision 1: Handling Shared Database(s) 120Decision 2: Securing Microservices 122Decision 3: Coordinating Microservices 122Decision 4: Avoiding Dependency Hell 122Loosely Coupled, Repository-Based Teams as an Alternative to Microservices 125Leadership Considerations 126Summary 127
- Chapter 11: Server Architectures 129Writing a Service 129Understanding Best Practices for Writing a Service 130Understanding Advanced Techniques 132Using These Techniques in Practice 143Leadership Considerations 146Summary 147
- Chapter 12: Building Stable Systems 149Why Do Systems Fail, and What Can We Do About Them? 149How to Handle Known Errors 151Common Bugs 159How to Handle Unknown Errors 161Graceful Degradation 163Leadership Considerations 163Summary 164
- Chapter 13: Building and Evolving the Systems 165Getting Your Hands Dirty 165Communicating the Design 172Evolving the System: How to Learn from Your Users and Improve the System 172Leadership Considerations 175Summary 176 Index 179
