وبلاگ بلیان

A Date With The Boss (Discovered Book 14)

معرفی کتاب «A Date With The Boss (Discovered Book 14)» نوشتهٔ Neal Ford، Pramod Sadalage، Rebecca Parsons، Patrick Kua و Katt Ford، منتشرشده توسط نشر 2018 در سال 2018. این کتاب در فرمت azw3، زبان انگلیسی ارائه شده است.

With a constant stream of new tools, frameworks, techniques, and paradigms, the software development ecosystem is constantly changing. In the past five years alone, incremental advances in core engineering practices for software development have inspired the industry to recognize how architecture itself must evolve to meet constantly changing user demands. In this thoroughly updated edition, authors Neal Ford, Rebecca Parsons, Patrick Kua, and Pramod Sadalage provide real-world case studies that take into account the recent, growing support for the evolution of software development. In three parts, this book covers: • Mechanics: Part I includes chapters that define the mechanics of evolutionary architecture—how teams use techniques and tools to build fitness functions, deployment pipelines, and other mechanisms for governing and evolving software projects • Structure: Part II includes coverage of architecture styles and design principles around coupling, reuse, and other pertinent structural considerations for cleaner evolution over time • Impact: Part III examines the intersection of the engineering practices presented in Part I and the structural considerations from Part II Neal Ford is a director, software architect, and meme wrangler at Thoughtworks. Dr. Rebecca Parsons is Thoughtworks’ chief technology officer. Patrick Kua is a seasoned technology leader with more than 20 years of experience. Pramod Sadalage bridges the divide between database professionals and application developers as director of data and DevOps at Thoughtworks. Foreword to the First Edition Foreword to the Second Edition Preface The Structure of This Book Case Studies and PenultimateWidgets Conventions Used in This Book Using Code Examples O’Reilly Online Learning How to Contact Us Additional Information Acknowledgments I. Mechanics 1. Evolving Software Architecture The Challenges of Evolving Software Evolutionary Architecture Guided Change Incremental Change Multiple Architectural Dimensions How Is Long-Term Planning Possible When Everything Changes All the Time? Once I’ve Built an Architecture, How Can I Prevent It from Degrading Over Time? Why Evolutionary? Summary 2. Fitness Functions What Is a Fitness Function? Categories Scope: Atomic Versus Holistic Cadence: Triggered Versus Continual Versus Temporal Case Study: Triggered or Continuous? Result: Static Versus Dynamic Invocation: Automated Versus Manual Proactivity: Intentional Versus Emergent Coverage: Domain-Specific Fitness Functions? Who Writes Fitness Functions? Where Is My Fitness Function Testing Framework? Outcomes Versus Implementations Summary 3. Engineering Incremental Change Incremental Change Deployment Pipelines Case Study: Adding Fitness Functions to PenultimateWidgets’ Invoicing Service Case Study: Validating API Consistency in an Automated Build Summary 4. Automating Architectural Governance Fitness Functions as Architectural Governance Code-Based Fitness Functions Afferent and Efferent Coupling Abstractness, Instability, and Distance from the Main Sequence Directionality of Imports Cyclomatic Complexity and “Herding” Governance Turnkey Tools Legality of Open Source Libraries A11y and Other Supported Architecture Characteristics ArchUnit Linters for Code Governance Case Study: Availability Fitness Function Case Study: Load-Testing Along with Canary Releases Case Study: What to Port? Fitness Functions You’re Already Using Integration Architecture Communication Governance in Microservices Case Study: Choosing How to Implement a Fitness Function DevOps Enterprise Architecture Case Study: Architectural Restructuring While Deploying 60 Times per Day Fidelity Fitness Functions Fitness Functions as a Checklist, Not a Stick Documenting Fitness Functions Summary II. Structure 5. Evolutionary Architecture Topologies Evolvable Architecture Structure Connascence Connascence Intersection with Bounded Context Architectural Quanta and Granularity Independently Deployable High Functional Cohesion High Static Coupling Dynamic Quantum Coupling Contracts Case Study: Microservices as an Evolutionary Architecture Reuse Patterns Effective Reuse = Abstraction + Low Volatility Sidecars and Service Mesh: Orthogonal Operational Coupling Data Mesh: Orthogonal Data Coupling Summary 6. Evolutionary Data Evolutionary Database Design Evolving Schemas Shared Database Integration Inappropriate Data Entanglement Two-Phase Commit Transactions Age and Quality of Data Case Study: Evolving PenultimateWidgets’ Routing From Native to Fitness Function Referential Integrity Data Duplication Replacing Triggers and Stored Procedures Case Study: Evolving from Relational to Nonrelational Summary III. Impact 7. Building Evolvable Architectures Principles of Evolutionary Architecture Last Responsible Moment Architect and Develop for Evolvability Postel’s Law Architect for Testability Conway’s Law Mechanics Step 1: Identify Dimensions Affected by Evolution Step 2: Define Fitness Function(s) for Each Dimension Step 3: Use Deployment Pipelines to Automate Fitness Functions Greenfield Projects Retrofitting Existing Architectures Appropriate Coupling and Cohesion COTS Implications Migrating Architectures Migration Steps Evolving Module Interactions Guidelines for Building Evolutionary Architectures Remove Needless Variability Make Decisions Reversible Prefer Evolvable over Predictable Build Anticorruption Layers Build Sacrificial Architectures Mitigate External Change Updating Libraries Versus Frameworks Version Services Internally Case Study: Evolving PenultimateWidgets’ Ratings Fitness Function-Driven Architecture Summary 8. Evolutionary Architecture Pitfalls and Antipatterns Technical Architecture Antipattern: Last 10% Trap and Low Code/No Code Case Study: Reuse at PenultimateWidgets Antipattern: Vendor King Pitfall: Leaky Abstractions Pitfall: Resume-Driven Development Incremental Change Antipattern: Inappropriate Governance Case Study: “Just Enough” Governance at PenultimateWidgets Pitfall: Lack of Speed to Release Business Concerns Pitfall: Product Customization Antipattern: Reporting Atop the System of Record Pitfall: Excessively Long Planning Horizons Summary 9. Putting Evolutionary Architecture into Practice Organizational Factors Don’t Fight Conway’s Law Culture Culture of Experimentation CFO and Budgeting The Business Case Hypothesis- and Data-Driven Development Fitness Functions as Experimental Media Building Enterprise Fitness Functions Case Study: Zero-Day Security Vulnerability Carving Out Bounded Contexts Within Existing Integration Architecture Where Do You Start? Low-Hanging Fruit Highest Value First Testing Infrastructure Case Study: Enterprise Architecture at PenultimateWidgets Future State? Fitness Functions Using AI Generative Testing Why (or Why Not)? Why Should a Company Decide to Build an Evolutionary Architecture? Why Would a Company Choose Not to Build an Evolutionary Architecture? Summary Index About the Authors Incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural characteristics as it evolves. This practical guide ties those parts together with a new way to think about architecture and time. The software development ecosystem is constantly changing, providing a constant stream of new tools, frameworks, techniques, and paradigms. Over the past few years, incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural characteristics as it evolves. This practical guide ties those parts together with a new way to think about architecture and time "The software development ecosystem is constantly changing, providing a constant stream of new tools, frameworks, techniques, and paradigms. Over the past few years, incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural characteristics as it evolves. This practical guide ties those parts together with a new way to think about architecture and time." --descriptive page "The software development ecosystem is constantly changing, providing a constant stream of new tools, frameworks, techniques, and paradigms. Over the past few years, incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural characteristics as it evolves. This practical guide ties those parts together with a new way to think about architecture and time."--Amazon.com
دانلود کتاب A Date With The Boss (Discovered Book 14)