Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mucon 2019 - Exploring microservice architectur...

Mucon 2019 - Exploring microservice architecture through graph theory

Nicki Watt

May 31, 2019
Tweet

More Decks by Nicki Watt

Other Decks in Technology

Transcript

  1. @techiewatt Hands-on software delivery Consulting provides services is CTO at

    Cloud 
 Native / 
 Microservices Architectures Data
 Engineering Platforms Co-author of with expertise in lead projects on includes experience gained building
  2. AGENDA OVERVIEW • INTRO & HYPOTHESIS
 • A BIT OF

    THEORY
 • MICROSERVICE EXPLORING
 • SUMMARY @techiewatt
  3. Graph theory is already being used to drive efficiencies in,

    and produce more reliable software systems INTRODUCTION @techiewatt
  4. INTRODUCTION @techiewatt Infrastructure: Reliably managing and updating cloud and other

    infrastructure-as-code resources Credit: Paul Hinze (HashiConf 2016)
 Applying Graph Theory to Infrastructure-as-code
  5. Can we also use it to help inspect and drive

    us towards improvements in our microservices architecture? INTRODUCTION @techiewatt
  6. HYPOTHESIS @techiewatt General Hypothesis:
 Data Driven Architectural Improvement
 
 You

    can extract metrics and KPIs from a microservices architecture using graph theory AND use these to gain insight into the structure and characteristics of your microservices architecture
  7. HYPOTHESIS @techiewatt For this talk … 
 Can we use

    these metrics to detect bad microservice architectural smells and anti-patterns like a tightly coupled architecture (distributed monolith)
  8. GRAPH THEORY 101 Nodes / 
 Vertices Relationships / 


    Edges @techiewatt A graph is a way to formally represent a network, or collection of related objects, in a mathematical way
  9. • Graph Analytics ◦ An Action Performed: The act of

    analysing connected data - using any appropriate graph-based approach or tools (visualisations, queries, statistics, algorithms)
 • Graph Algorithms ◦ Programmable process or set of rules: Leverages the mathematical properties of graphs to explore, classify and interpret connected data. A subset of tooling used to do graph analytics. @techiewatt GRAPH INSIGHTS 101
  10. GRAPH INSIGHTS 101 @techiewatt New academic field, circa 21st century

    includes study of: • Real-world representations in order to understand the universal properties of networks (Biological, social, transport) • Large, complex networks Roots date back to 1786, includes study of: • Abstract theoretical graph forms (e.g. random graphs, trees, directed graphs) • Graphs of any size NETWORK SCIENCE GRAPH THEORY
  11. “Based on the mathematics of graph theory, graph algorithms use

    the relationships between nodes to infer the organization and dynamics of complex systems. Network scientists use these algorithms to uncover hidden information, test hypotheses, and make predictions about behavior”.
 - Graph Algorithms by M Needham, A Hodler @techiewatt GRAPH INSIGHTS 101
  12. DEGREE How connected is a specific node? A is more

    highly connected than 
 B and C 6 2 2 @techiewatt 1
  13. CLUSTER COEFFICIENT How tightly is a group clustered, compared to

    how tightly it could be clustered? @techiewatt 2
  14. @techiewatt V1.0 - NETWORK STATS Density: 0.19 Number of nodes:

    20 Number of edges: 36 Average degree: 3.6000 Average Clustering Co-eff: 0.30
  15. @techiewatt We’ve been directed to look a bit closer at

    a few potential problem services … Where do they fit in architecturally?
  16. V1.0 - ARCHITECTURE DIAGRAM @techiewatt Front End Service Back End

    Service External Integration Adapter Service Database API API API API API API
  17. 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

    1 0 2 4 6 8 10 12 14 16 ShippingFacade Order PricingCalculator User Product Paym entFacade W eb API M ob API B2B API UPS DHL Royal M ail Shipper X Shipper Y Shipper Z M asterCard PayPal Provider A Provider B Provider C v1 - degree & cluster coefficient degree cluster coefficient V1.0 ANALYSIS @techiewatt Front End Back End External Integration
  18. 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

    1 0 2 4 6 8 10 12 14 16 ShippingFacade Order PricingCalculator User Product Paym entFacade W eb API M ob API B2B API UPS DHL Royal M ail Shipper X Shipper Y Shipper Z M asterCard PayPal Provider A Provider B Provider C v1 - degree & cluster coefficient degree cluster coefficient V1.0 ANALYSIS @techiewatt Front End Back End External Integration
  19. 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

    1 0 2 4 6 8 10 12 14 16 ShippingFacade Order PricingCalculator User Product Paym entFacade W eb API M ob API B2B API UPS DHL Royal M ail Shipper X Shipper Y Shipper Z M asterCard PayPal Provider A Provider B Provider C v1 - degree & cluster coefficient degree cluster coefficient V1.0 ANALYSIS @techiewatt Average degree: 3.6 Average Clustering 
 Coefficient: 0.3 Front End Back End External Integration
  20. V1.0 INVESTIGATION @techiewatt - Entity Services 
 Anti-Pattern - Distributed

    
 Monolith Front End Back End External Integration
  21. V1.0 INVESTIGATION @techiewatt - Entity Services 
 Anti-Pattern - Distributed

    
 Monolith Front End Back End External Integration Order User Product
  22. V1.0 INVESTIGATION @techiewatt - Entity Services 
 Anti-Pattern - Distributed

    
 Monolith Front End Back End External Integration
  23. COMMUNITIES NOT ALWAYS DDD ALIGNED @techiewatt Process & Data Criteria

    Organisation Operations Erich Eichinger Blog: “Heuristics for Identifying Service Boundaries” https://opencredo.com/blogs/identify-service-boundary-heuristics/
  24. V2.0 - NETWORK STATS @techiewatt Density: 0.11 Number of nodes:

    29 Number of edges: 46 Average degree: 3.1724 Average Clustering Co-eff: 0.20
  25. @techiewatt COMPARING Degree Cluster Coefficient 0 0.2 0.4 0.6 0.8

    1 1.2 0 2 4 6 8 10 12 14 16 ShippingFacade Order PricingCalculator User Product Paym entFacade W eb API M ob API B2B API UPS DHL Royal M ail Shipper X Shipper Y Shipper Z M asterCard PayPal Provider A Provider B Provider C M onoUserService W eb User API M ob User API EventPublisher RegisterNew User UpdateCoreDetails UpdateM arketingPrefs ReportUserAbuse GetUserProfile SearchUser EventConsum er UserEventM onoConsum er Combined Measurements (V1 & V2) v1 degree v2 degree v1 cluster coefficient v2 cluster coefficient
  26. 0 0.2 0.4 0.6 0.8 1 1.2 0 2 4

    6 8 10 12 14 16 ShippingFacade Order PricingCalculator User Product Paym entFacade W eb API M ob API B2B API UPS DHL Royal M ail Shipper X Shipper Y Shipper Z M asterCard PayPal Provider A Provider B Provider C M onoUserService W eb User API M ob User API EventPublisher RegisterNew User UpdateCoreDetails UpdateM arketingPrefs ReportUserAbuse GetUserProfile SearchUser EventConsum er UserEventM onoConsum er Combined Measurements (V1 & V2) v1 degree v2 degree v1 cluster coefficient v2 cluster coefficient Degree Cluster Coefficient @techiewatt COMPARING V1 User Service
  27. 0 0.2 0.4 0.6 0.8 1 1.2 0 2 4

    6 8 10 12 14 16 ShippingFacade Order PricingCalculator User Product Paym entFacade W eb API M ob API B2B API UPS DHL Royal M ail Shipper X Shipper Y Shipper Z M asterCard PayPal Provider A Provider B Provider C M onoUserService W eb User API M ob User API EventPublisher RegisterNew User UpdateCoreDetails UpdateM arketingPrefs ReportUserAbuse GetUserProfile SearchUser EventConsum er UserEventM onoConsum er Combined Measurements (V1 & V2) v1 degree v2 degree v1 cluster coefficient v2 cluster coefficient Degree Cluster Coefficient @techiewatt COMPARING V1 User Service New V2 Refactored
 User Services
  28. Degree Cluster Coefficient 0 0.2 0.4 0.6 0.8 1 1.2

    0 2 4 6 8 10 12 14 16 ShippingFacade Order PricingCalculator User Product Paym entFacade W eb API M ob API B2B API UPS DHL Royal M ail Shipper X Shipper Y Shipper Z M asterCard PayPal Provider A Provider B Provider C M onoUserService W eb User API M ob User API EventPublisher RegisterNew User UpdateCoreDetails UpdateM arketingPrefs ReportUserAbuse GetUserProfile SearchUser EventConsum er UserEventM onoConsum er Combined Measurements (V1 & V2) v1 degree v2 degree v1 cluster coefficient v2 cluster coefficient @techiewatt COMPARING New V2 Refactored
 User Services V1 User Service V2 Mono 
 User Service (allow distmon to continue functioning)
  29. @techiewatt COMPARING Degree Cluster Coefficient 0 0.2 0.4 0.6 0.8

    1 1.2 0 2 4 6 8 10 12 14 16 ShippingFacade Order PricingCalculator User Product Paym entFacade W eb API M ob API B2B API UPS DHL Royal M ail Shipper X Shipper Y Shipper Z M asterCard PayPal Provider A Provider B Provider C M onoUserService W eb User API M ob User API EventPublisher RegisterNew User UpdateCoreDetails UpdateM arketingPrefs ReportUserAbuse GetUserProfile SearchUser EventConsum er UserEventM onoConsum er Combined Measurements (V1 & V2) v1 degree v2 degree v1 cluster coefficient v2 cluster coefficient
  30. 0 0.2 0.4 0.6 0.8 1 1.2 0 2 4

    6 8 10 12 14 16 ShippingFacade Order PricingCalculator User Product Paym entFacade W eb API M ob API B2B API UPS DHL Royal M ail Shipper X Shipper Y Shipper Z M asterCard PayPal Provider A Provider B Provider C M onoUserService W eb User API M ob User API EventPublisher RegisterNew User UpdateCoreDetails UpdateM arketingPrefs ReportUserAbuse GetUserProfile SearchUser EventConsum er UserEventM onoConsum er Combined Measurements (V1 & V2) v1 degree v2 degree v1 cluster coefficient v2 cluster coefficient Degree Cluster Coefficient @techiewatt COMPARING V1 (5) V2 (4)
  31. 0 0.2 0.4 0.6 0.8 1 1.2 0 2 4

    6 8 10 12 14 16 ShippingFacade Order PricingCalculator User Product Paym entFacade W eb API M ob API B2B API UPS DHL Royal M ail Shipper X Shipper Y Shipper Z M asterCard PayPal Provider A Provider B Provider C M onoUserService W eb User API M ob User API EventPublisher RegisterNew User UpdateCoreDetails UpdateM arketingPrefs ReportUserAbuse GetUserProfile SearchUser EventConsum er UserEventM onoConsum er Combined Measurements (V1 & V2) v1 degree v2 degree v1 cluster coefficient v2 cluster coefficient Degree Cluster Coefficient @techiewatt COMPARING V2 (1.0) V1 (0.9)
  32. OTHER MEASURES & ALGORITHMS @techiewatt - Strongly 
 Connected 


    Components 
 (SCC) - Help detect 
 circular dependencies
  33. Early days … Can’t be applied blindly … Common sense

    and understanding of architectural approaches and patterns still required!! CONCLUSION @techiewatt
  34. HYPOTHESIS @techiewatt General Hypothesis:
 Data Driven Architectural Improvement
 
 You

    can extract metrics and KPIs from a microservices architecture using graph theory AND use these to gain insight into the structure and characteristics of your microservices architecture
  35. HYPOTHESIS @techiewatt General Hypothesis:
 Data Driven Architectural Improvement
 
 You

    can extract metrics and KPIs from a microservices architecture using graph theory AND use these to gain insight into the structure and characteristics of your microservices architecture
  36. HYPOTHESIS @techiewatt Specifically 
 Can we use these metrics to

    detect bad microservice architectural smells and anti-patterns like a tightly coupled architecture (distributed monolith)?
  37. CONCLUSION @techiewatt Demonstrated using degree and cluster coefficient measures to

    detect tightly coupled (distributed monolith) architectures Demonstrated using community detection algorithms to uncover related groupings (boundaries) of microservices
  38. @techiewatt Come chat with me! Looking for strategic or hands-on

    help? We’re hiring! Want to find out more?