Desktop version

Home arrow Economics

  • Increase font
  • Decrease font


Building Evolutionary Architectures: Support Constant Change

ForewordSoftware ArchitectureEvolutionary ArchitectureHow Is Long-term Planning Possible When Everything Changes All the Time?Once I’ve Built an Architecture, How Can I Prevent It from Gradually Degrading Over Time?Incremental ChangeGuided ChangeMultiple Architectural DimensionsConway’s LawWhy Evolutionary?SummaryFitness FunctionsWhat is a Fitness Function?CategoriesAtomic Versus HolisticTriggered Versus ContinualStatic Versus DynamicAutomated Versus ManualTemporalIntentional Over EmergentDomain-specificIdentify Fitness Functions EarlyReview Fitness FunctionsEngineering Incremental ChangeBuilding BlocksTestableDeployment PipelinesCONTINUOUS INTEGRATION VERSUS DEPLOYMENT PIPELINESPENULTIMATEWIDGETS DEPLOYMENT PIPELINESQA IN PRODUCTIONCombining Fitness Function CategoriesCase Study: Architectural Restructuring while Deploying 60 Times/DayConflicting GoalsCase Study: Adding Fitness Functions to PenultimateWidgets’ Invoicing ServiceHypothesis- and Data-Driven DevelopmentCase Study: What to Port?Architectural CouplingModularityArchitectural Quanta and GranularityDOMAIN-DRIVEN DESIGN’S BOUNDED CONTEXTMONOLITHIC LISTINGEvolvability of Architectural StylesBig Ball of MudMonolithsUnstructured monolithsLayered architectureModular monolithsMicrokernelEvent-Driven ArchitecturesBrokersMediatorsService-Oriented ArchitecturesESB-driven SOAMicroservices"SHARE NOTHING” AND APPROPRIATE COUPLINGService-based architectures"Serverless” ArchitecturesControlling Quantum SizeCase Study: Guarding Against Component CyclesEvolutionary Data with contributions from Pramod SadalageEvolutionary Database DesignEvolving SchemasShared Database IntegrationOption 1: No integration points, no legacy dataOption 2: Legacy data, but no integration pointsOption 3: Existing data and integration pointsInappropriate Data CouplingDBAS, VENDORS, AND TOOL CHOICESTwo-Phase Commit TransactionsAge and Quality of DataCase Study: Evolving PenultimateWidgets’ RoutingBuilding Evolvable ArchitecturesMechanicsIdentify Dimensions Affected by EvolutionDefine Fitness Function(s) for Each DimensionUse Deployment Pipelines to Automate Fitness FunctionsGreenfield ProjectsRetrofitting Existing ArchitecturesAppropriate Coupling and CohesionEngineering PracticesFitness FunctionsREFACTORING VERSUS RESTRUCTURINGCOTS ImplicationsMigrating ArchitecturesMigration StepsEvolving Module InteractionsGuidelines for Building Evolutionary ArchitecturesRemove Needless VariabilityTHE HAZARDS OF SNOWFLAKESMake Decisions ReversiblePrefer Evolvable over PredictableBuild Anticorruption LayersCase Study: Service TemplatesBuild Sacrificial ArchitecturesMitigate External ChangeTHE ELEVEN LINES OF CODE THAT BROKE THE INTERNETUpdating Libraries Versus FrameworksPrefer Continuous Delivery to SnapshotsVersion Services InternallyCase Study: Evolving PenultimateWidgets’ RatingsEvolutionary Architecture Pitfalls and AntipatternsTechnical ArchitectureAntipattern: Vendor KingPitfall: Leaky AbstractionsAntipattern: Last 10% TrapTHE IBM SAN FRANCISCO PROJECTAntipattern: Code Reuse AbuseCase Study: Reuse at PenultimateWidgetsPitfall: Resume-Driven DevelopmentIncremental ChangeAntipattern: Inappropriate GovernanceFORCED DECOUPLINGCase Study: Goldilocks Governance at PenultimateWidgetsPitfall: Lack of Speed to ReleaseBusiness ConcernsPitfall: Product CustomizationAntipattern: ReportingPitfall: Planning HorizonsPutting Evolutionary Architecture into PracticeOrganizational FactorsCross-Functional TeamsOrganized Around Business CapabilitiesProduct over ProjectAMAZON’S "TWO PIZZA” TEAMSDealing with External ChangeConnections Between Team MembersTeam Coupling CharacteristicsCultureTHREE STRIKES AND YOU REFACTORCulture of ExperimentationCFO and BudgetingBuilding Enterprise Fitness FunctionsCASE STUDY: LEGALITY OF OPEN SOURCE LIBRARIESCase Study: PenultimateWidgets as a PlatformWhere Do You Start?Low-Hanging FruitHighest-ValueTestingInfrastructureINFRASTRUCTURE CAN IMPACT ARCHITECTURECase Study: Enterprise Architecture at PenultimateWidgetsFuture State?Fitness Functions Using AIGenerative TestingWhy (or Why Not)?Why Should a Company Decide to Build an Evolutionary Architecture?Predictable versus evolvableScaleAdvanced business capabilitiesCycle time as a business metricIsolating architectural characteristics at the quantum levelCase Study: Selective Scale at PenultimateWidgetsAdaptation versus evolutionWhy Would a Company Choose Not to Build an Evolutionary Architecture?Can’t evolve a ball of mudOther architectural characteristics dominateSacrificial architecturePlanning on closing the business soonCase Study: Consulting JudoThe Business Case"The Future Is Already Here...”Moving Fast Without Breaking ThingsLess RiskNew CapabilitiesBuilding Evolutionary Architectures

Related topics