Menu
Home
Log in / Register
 
Home arrow Computer Science arrow Microservices Flexible Software Architecture

Microservices Flexible Software Architecture


I Motivation and BasicsPreliminariesOverview of MicroserviceMicroservice: Preliminary DefinitionDeployment MonolithsWhy Microservices?Strong ModularizationEasy ReplaceabilitySustainable DevelopmentFurther Development of Legacy ApplicationsTime-to-MarketIndependent ScalingFree Choice of TechnologiesContinuous DeliveryChallengesConclusionMicroservice ScenariosModernizing an E-Commerce Legacy ApplicationScenarioReasons to Use MicroservicesSlow Continuous Delivery PipelineParallel Work Is ComplicatedBottleneck During TestingApproachChallengesEntire Migration LengthyTesting Remains a ChallengeCurrent Status of MigrationCreating TeamsAdvantagesConclusionRapid and Independent Development of New FeaturesInfluence on the OrganizationAmazon Has Been Doing It for a Long TimeDeveloping a New Signaling SystemScenarioReasons to Use MicroservicesDistributed SystemTechnology Stack per TeamIntegration of Other SystemsChallengesHigh Technological ComplexityAdvantagesVerdictConclusionEssential PointsII Microservices: What, Why, and Why Not?What Are Microservices?Size of a MicroserviceModularizationDistributed CommunicationSustainable ArchitectureRefactoringTeam SizeInfrastructureReplaceabilityTransactions and ConsistencyConsistencyCompensation Transactions across MicroservicesSummaryConway’s LawReasons for the LawThe Law as LimitationThe Law as EnablerThe Law and MicroservicesDomain-Driven Design and Bounded ContextUbiquitous LanguageBuilding BlocksBounded ContextBounded Context: An ExampleCollaboration between Bounded ContextsBounded Context and MicroservicesLarge-Scale StructureWhy You Should Avoid a Canonical Data Model (Stefan Tilkov)Microservices with a UI?Technical AlternativesSelf-Contained SystemConclusionEssential PointsReasons for Using MicroservicesTechnical BenefitsReplacing MicroservicesSustainable Software DevelopmentHandling LegacyAn Example of Microservices and LegacyContinuous DeliveryScalingRobustnessFree Technology ChoiceIndependenceOrganizational BenefitsThe Scala DecisionSmaller ProjectsBenefits from a Business PerspectiveParallel Work on StoriesConclusionEssential PointsChallengesTechnical ChallengesCode DependenciesConsequences of Code DependenciesUnreliable CommunicationTechnology PluralismArchitectureArchitecture = OrganizationArchitecture and RequirementsRefactoringAgile ArchitectureSummaryInfrastructure and OperationsContinuous Delivery PipelinesMonitoringVersion ControlConclusionEssential PointsMicroservices and SOAWhat Is SOA?Introducing SOAServices in an SOAInterfaces and VersioningExternal InterfacesInterfaces Enforce a Coordination of DeploymentsCoordination and OrchestrationTechnologiesDifferences between SOA and MicroservicesCommunicationOrchestrationFlexibilityMicroservices: Project LevelSynergiesConclusionEssential PointsIII Implementing MicroservicesArchitecture of Microservice-Based SystemsDomain ArchitectureStrategic Design and Domain-Driven DesignExample Otto ShopManaging DependenciesUnintended Domain-Based DependenciesCyclic DependenciesArchitecture ManagementTools for Architecture ManagementCycle-Free SoftwareMicroservices and Architecture ManagementToolsIs Architecture Management Important?Context MapTechniques to Adjust the ArchitectureWhere Does Bad Architecture Come From?Changes in MicroservicesChanges to the Overall ArchitectureShared LibrariesTransfer CodeReuse or Redundancy?Shared ServiceSpawn a New MicroserviceRewritingA Growing Number of MicroservicesMicroservice-Based Systems Are Hard to ModifyGrowing Microservice-Based SystemsPlanning Architecture?Start BigStart Small?Limits of TechnologyReplaceability as a Quality CriterionThe Gravity of MonolithsKeep SplittingGlobal Architecture?Don’t Miss the Exit Point or How to Avoid the Erosion of a Microservice (Lars Gentsch)Incorporation of New FunctionalityWhat Is Happening to the Microservice Here?Criteria Arguing for a New Microservice Instead of Extending an Existing OneHow to Recognize Whether the Creation of a New Microservice Should Have Occurred AlreadyConclusionMicroservices and Legacy ApplicationsBreaking Up Code?Supplementing Legacy ApplicationsEnterprise Integration PatternsLimiting IntegrationAdvantagesIntegration via UI and Data ReplicationContent Management SystemsConclusionNo Big BangLegacy = InfrastructureOther QualitiesHidden Dependencies (Oliver Wehrens)The DatabaseEvent-Driven ArchitectureTechnical ArchitectureTechnical Decisions for the Entire SystemSidecarConfiguration and CoordinationConsistency as ProblemImmutable ServerAlternative: Installation ToolsService DiscoveryService Discovery = Configuration?TechnologiesLoad BalancingREST/HTTPCentral Load BalancerA Load Balancer per MicroserviceTechnologiesService DiscoveryClient-Based Load BalancingLoad Balancing and ArchitectureScalabilityScaling, Microservices, and Load BalancingDynamic ScalingMicroservices: Advantages for ScalingShardingScalability, Throughput, and Response TimesSecuritySecurity and MicroservicesOAuth2Possible Authorization GrantsJSON Web Token (JWT)OAuth2, JWT, and MicroservicesTechnologiesAdditional Security MeasuresHashicorp VaultAdditional Security GoalsDocumentation and MetadataOutdated DocumentationAccess to DocumentationConclusionEssential PointsIntegration and CommunicationWeb and UIMultiple Single-Page-AppsSPA per MicroserviceAsset Server for UniformityA Single-Page App for All MicroservicesHTML ApplicationsROCAEasy RoutingArrange HTML with JavaScriptFront-End ServerMobile Clients and Rich ClientsOrganizational LevelBack-End for Each Front-EndRESTCache and Load BalancerHATEOASHTMLJSONProtocol BufferRESTful HTTP Is SynchronousSOAP and RPCFlexible TransportThriftMessagingMessages and TransactionsMessaging TechnologyData ReplicationReplicationProblems: Redundancy and ConsistencyImplementationBatchEventInterfaces: Internal and ExternalExternal InterfacesSeparating InterfacesImplementing External InterfacesSemantic VersioningPostel’s Law or the Robustness PrincipleConclusionClientLogic LayerData ReplicationInterfaces and VersionsEssential PointsArchitecture of Individual MicroservicesDomain ArchitectureCohesionEncapsulationDomain-Driven DesignTransactionsCQRSCQRSMicroservices and CQRSAdvantagesChallengesEvent SourcingHexagonal ArchitectureHexagons or Layers?Hexagonal Architectures and MicroservicesAn ExampleResilience and StabilityTimeoutCircuit BreakerBulkheadSteady StateFail FastHandshakingTest HarnessUncoupling via MiddlewareStability and MicroservicesResilience and ReactiveHystrixTechnical ArchitectureProcess EnginesStatelessnessReactiveMicroservices without Reactive?ConclusionEssential PointsTesting Microservices and Microservice-Based SystemsWhy Tests?Tests Minimize ExpenditureTests = DocumentationTest-Driven DevelopmentHow to Test?Unit TestsIntegration TestsUI TestsManual TestsLoad TestsTest PyramidContinuous Delivery PipelineMitigate Risks at DeploymentTesting the Overall SystemShared Integration TestsAvoiding Integration Tests of the Overall SystemTesting Legacy Applications and MicroservicesRelocating Tests of the Legacy ApplicationIntegration Test: Legacy Application and MicroservicesTesting Individual MicroservicesReference EnvironmentStubsConsumer-Driven Contract TestsComponents of the ContractContractsImplementationToolsTesting Technical StandardsConclusionEssential PointsOperations and Continuous Delivery of MicroservicesChallenges Associated with the Operation of MicroservicesNumerous ArtifactsDelegate into TeamsUnify ToolsSpecify BehaviorMicro and Macro ArchitectureTemplatesLoggingLogging for MicroservicesTechnologies for Logging via the NetworkELK for Centralized LoggingScaling ELKGraylogSplunkStakeholders for LogsCorrelation IDsZipkin: Distributed TracingMonitoringBasic InformationAdditional MetricsStakeholdersCorrelate with EventsMonitoring = Tests?Dynamic EnvironmentConcrete TechnologiesEnabling Monitoring in MicroservicesMetricsStatsDTechnology Stack for MonitoringEffects on the Individual MicroserviceDeploymentDeployment AutomationInstallation and ConfigurationRisks Associated with Microservice DeploymentsDeployment StrategiesCombined or Separate Deployment? (Jorg Muller)ControlInfrastructureVirtualization or CloudDockerDocker Container versus VirtualizationCommunication between Docker ContainersDocker RegistryDocker and MicroservicesDocker and ServersPaaSConclusionEssential PointsOrganizational Effects of a Microservices-Based ArchitectureOrganizational Benefits of MicroservicesTechnical IndependenceSeparate DeploymentSeparate Requirement StreamsThree Levels of IndependenceAn Alternative Approach to Conway’s LawThe Challenges Associated with Conway’s LawCollective Code OwnershipAdvantages of Collective Code OwnershipDisadvantages of Collective Code OwnershipPull Requests for CoordinationMicro and Macro ArchitectureDecision = ResponsibilityWho Creates the Macro Architecture?Extent of the Macro ArchitectureTechnology: Macro/Micro ArchitectureOperationsDomain ArchitectureTestsTechnical LeadershipDeveloper AnarchyDevOpsDevOps and MicroservicesDo Microservices Necessitate DevOps?When Microservices Meet Classical IT Organizations (Alexander Heusingfeld)Pets versus CattleUs versus ThemDevelopment versus Test versus Operations: Change of PerspectiveFor Operations There Is Never an “Entirely Green Field”ConclusionInterface to the CustomerArchitecture Leads to DepartmentsReusable CodeClient LibrariesReuse Anyhow?Reuse as Open SourceMicroservices without Changing the Organization?Microservices without Changing the OrganizationEvaluationDepartmentsOperationsArchitectureConclusionEssential PointsIV TechnologiesExample of a Microservices-Based ArchitectureDomain ArchitectureSeparate Data StoragesLots of CommunicationBounded ContextDon’t Modularize Microservices by Data!Basic TechnologiesHSQL DatabaseSpring Data RESTSpring BootSpring CloudSpring Cloud NetflixBuildDeployment Using DockerVagrantNetworking in the Example ApplicationDocker MachineDocker ComposeService DiscoveryEureka ClientConfigurationEureka ServerCommunicationZuul: RoutingResilienceCircuit BreakerHystrix with AnnotationsMonitoring with the Hystrix DashboardTurbineLoad BalancingRibbon with Spring CloudIntegrating Other TechnologiesTestsStubsConsumer-Driven Contract TestExperiences with JVM-Based Microservices in the Amazon Cloud (Sascha Mollering)ConclusionConclusionEssential PointsTechnologies for NanoservicesWhy Nanoservices?Minimum Size of Microservices is LimitedCompromisesDesktop ApplicationsNanoservices: DefinitionAmazon LambdaCalling Lambda FunctionsEvaluation for NanoservicesConclusionOSGiThe OSGi Module SystemHandling Bundles in PracticeEvaluation for NanoservicesConclusionJava EENanoservices with Java EEMicroservices with Java EE?An ExampleVert.xConclusionErlangEvaluation for NanoservicesSenecaEvaluation for NanoservicesConclusionEssential PointsGetting Started with MicroservicesWhy Microservices?Roads towards MicroservicesMicroservice: Hype or Reality?Conclusion
 
Found a mistake? Please highlight the word and press Shift + Enter  
Next >
 
Subjects
Accounting
Business & Finance
Communication
Computer Science
Economics
Education
Engineering
Environment
Geography
Health
History
Language & Literature
Law
Management
Marketing
Mathematics
Political science
Philosophy
Psychology
Religion
Sociology
Travel