adjusting your architecture
play

ADJUSTING YOUR ARCHITECTURE Rachel Laycock @rachellaycock - PowerPoint PPT Presentation

I m p l e m e n t i n g C o n t i n o u s D e l i v e r y ADJUSTING YOUR ARCHITECTURE Rachel Laycock @rachellaycock continuous delivery Our highest priority is to satisfy the customer through early and continuous delivery of valuable


  1. I m p l e m e n t i n g C o n t i n o u s D e l i v e r y ADJUSTING YOUR ARCHITECTURE Rachel Laycock @rachellaycock

  2. continuous delivery Our highest priority is to satisfy the customer through early and continuous delivery of valuable software

  3. “You can’t have Continuous Delivery”

  4. “Once upon a time I was a happy developer…"

  5. “I thought I knew what Continuous Delivery was”

  6. “I was doing CD on my projects”

  7. “Then one day…"

  8. “...a client wanted Continuous Delivery”

  9. ...and we said “sure”

  10. “...but 3 months later they were still asking…"

  11. “Are we there yet?”

  12. Their code base was huge and complex

  13. 1. Conway’s Law is THE LAW 2. Keep things small 3. Evolve your architecture

  14. continuous delivery is big Organisational Alignment Release Management Quality Continuous Configuration Data Environments Architecture Assurance Integration Management Management & Deployment

  15. stu ff that is hard to change

  16. ?

  17. civil architecture

  18. town planning

  19. 1. CONWAY’S LAW IS THE LAW 20

  20. conway’s law “organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations” —Melvin Conway

  21. Melvin Conway: “Because the design that occurs fi rst is almost never the best possible , the prevailing system concept may need to change. Therefore, fl exibility of organisation is important to e ff ective design.”

  22. the wrong side of the law

  23. layered / tiered architecture User In Inte terface Channels Channels Applicati tion Bu Business Logic & Rules Middleware Middleware Servi vices platf tform Data tabase Sys yste tems of Record

  24. current state IOS Android Mobile web web Shared web web

  25. problems? IOS Android Mobile web web Shared web web

  26. ball of mud

  27. a real ball of mud

  28. “expediency over design” - Brian Foot & Joseph Yoder

  29. technical debt http://martinfowler.com/bliki/images/techDebtQuadrant.png

  30. coupling problems code artifact afferent efferent

  31. Software architecture represents the tension between coupling & cohesion. 32

  32. problems? IOS Android Mobile web web Shared web web

  33. brownfield

  34. untangling God Object : an object that knows too much or does too much

  35. metrics

  36. strangler pattern

  37. the law on your side

  38. “team designs are the fi rst draft of your architecture” - Michael Nygard

  39. vertical teams

  40. inverse conway manoeuvre Build teams that look like the architecture you want (and it will follow).

  41. the new world payments statements rewards

  42. continuous delivery Teams with low e ff erent coupling deliver relatively independently into a common integration pipeline (without fearing breaking each others builds).

  43. 2. KEEP THINGS SMALL ` 44

  44. small, single responsibility small enough to fi t in your head rewrite over maintain (10—1000 LOC)-ish / service single responsibility

  45. decentralised governance

  46. preparing for the unknown future Rachel is much smarter than present Rachel

  47. “with great power…”

  48. “fine grained SOA…?”

  49. Products Customers

  50. user interface server-side DBA

  51. traditional monolith Model User Interface

  52. ball of mud

  53. monolith drawbacks Complexity increases Hard to change Low reusability Slow to deploy Testing takes time High cognitive load Reliability and scale is hard

  54. enter SOA Explicit Boundaries Shared Contract and Schema, not class Policy Driven Autonomous http://www.infoq.com/articles/tilkov-10-soa-principles

  55. Product Customer

  56. What “Traditional” SOA Got Right Breaking monoliths into services Focus on integration over internal coupling Prefer BASE to ACID What “Traditional” SOA Missed Architecture is abstract until operationalized. Impact of Conway’s Law The folly of trying to build “Uber” services ( Customer ) Didn’t support easy change (ESB pattern)

  57. so microservices? 59

  58. fallacies of distributed computing 1.The network is reliable. 2.Latency is zero. 3.Bandwidth is in fi nite. 4.The network is secure. 5.Topology doesn't change. 6.There is one administrator. 7.Transport cost is zero. 8.The network is homogeneous.

  59. principles SOA Explicit Boundaries Shared Contract and Schema, not class Policy Driven Autonomous http://www.infoq.com/articles/tilkov-10-soa-principles

  60. boundaries are explicit

  61. boundaries are explicit

  62. Shipping Ordering Billing Reporting Catalog

  63. Shipping Ordering Billing Reporting Catalog What about to integration? 65

  64. asynchronous vs synchronous

  65. eventual consistency Publish event Subscribe to event Message Channel

  66. BASE ACID ▫︎ B asic A vailability ▫︎ A tomic ▫︎ S oft-state ▫︎ C onsistent ▫︎ E ventual Consistency ▫︎ I solated ▫︎ D urable As your system becomes more distributed, prefer BASE to ACID… …because CAP Theorem www.julianbrowne.com/article/viewer/brewers-cap-theorem Formal proof: http://lpd.ep fl .ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf

  67. Prefer Choreography to Orchestration pack of enterprise architects Because Conway’ s Law! traditional SOA / ESB pattern

  68. Standardize on integration, not platform …but don’ t go crazy Building Microservices DESIGNING FINE - GRAINED SYSTEMS Have one, two or maybe three ways of integrating, not 20. Sam Newman Building Microservices DESIGNING FINE - GRAINED SYSTEMS Pick some sensible conventions, and stick with them. Sam Newman

  69. hexagonal architecture http://alistair.cockburn.us/Hexagonal+architecture

  70. explicit about coupling engineering safety nets forces coarser- undisciplined coupling = mess grained coupling coupling dynamics become integration issues microservice architectures promote coupling from application to integration architecture.

  71. microservice architectures promote coupling from application to integration architecture. Pros: explicit about coupling dynamics forces coarser-grained coupling points Cons: undisciplined coupling becomes a mess transaction boundaries become an architectural issue

  72. the monolith backlash?

  73. return to the monolith? Components are units of software Component that can be independently replaced and upgraded Libraries and Services are two forms of component Library Service Libraries run within a single process, communicating through language function call mechanisms Services run in separate processes, communicating with networking mechanisms such as HTTP or TCP/IP

  74. partitioning by existing coupling God Object : an object that knows too much or does too much

  75. maturity

  76. Yesterday’ s best practice is tomorrow’ s anti-pattern. We inadvertently build architectures to solve outdated problems.

  77. 3. EVOLVE YOUR ARCHITECTURE 79

  78. last responsible moment

  79. all the things to consider Network Security Devices/Hardware Usability

  80. architect for evolvability

  81. http://tutorials.jumpstartlab.com/images/elevate/newrelic_snapshot.jpg

  82. architect for testability

  83. conway’s law

  84. 1. Conway’s Law is THE LAW 2. Keep things small 3. Evolve your architecture

  85. “hope is not a design method” - Michael Nygard 88

  86. if you fail to design for production your life will be fi lled with “excitement” - Michael Nygard 89

  87. THANK YOU! @rachellaycock

Recommend


More recommend