betting on software architecture as code
play

Betting on Software Architecture as Code a note on hypothesis-driven - PowerPoint PPT Presentation

Betting on Software Architecture as Code a note on hypothesis-driven architecture James Lewis : @boicy Betting on Software Architecture as Code Software architecture is those decisions which are both important and hard to change Martin


  1. Security struggles continue in the enterprise Infrastructure as code New approaches to BI DVCS Lightweight options for analytics A new wave of openness at Microsoft Simple techniques for performance testing Conversational UI and natural language JS as a fi rst class language Innovation in architectures Applying proven practices to areas that missed them Better tools for dev and test of Mobile Intelligence as a Service (ms and cloud native) CD, EA, ED, build pipelines Falling boundaries and perimeterless enterprise Developer experience as di ff erentiator Google Wave Over Reactive? Smaller, simpler faster applications and services Rise of the Platforms Churn in the JS world DOCKER! DOCKER! DOCKER! Azure o ff Hold Increasing diversi fi cation and rigour Pervasive Python in browser based languages Conway’s Law Parsing the PaaS puzzle Visualisation & metrics Treat all code with respect (from UI to tests) Microservices and the rise of the API OSS as a virtuous by product NoSql Redecentralisation Continued development of SQL alts JVM as a Platform ‘10 ‘11 ‘12 ‘13 ‘14 ‘15 ‘16 ‘17 Security is everybody’s problem Merging of Physical and Digital JS tooling settles to merely chaotic Using basic web techniques e ff ectively The JS juggxrnaught rolls on Microservices and related tools Diversity and depth in Cloud Privacy and big data continue to gain in popularity Data persistence done right Focus on CD and tools to deliver it Early warning and recovery in prod Docker incites container explosion Reproducible environments Git in trial Devs focus on security minded tooling Microservices as programming model Simple Architectures Clojure, Scala Next gen data platforms gain traction (ML) Intelligent Empowerment Accessible analytics Neo4J, Mongo, Triple Stores Explosive growth in the Devops arena Holistic e ff ect of team structure Mobile (!) CD, EA, ED, Polyglot dev AR and VR easing to mainstream

  2. So by creating options we not only reduce risk but also take advantage of volitility

  3. back to the story

  4. 5. You throw the magic box in between the walking skeleton and the content store. A villager approaches and exclaims: link hello “this beautiful content I see in front of me seems to take an awful long time to get here” You must somehow make the content content arrive faster. If you have a http cache in your close inventory, you may use it now. S3 Cache in between S3 and content turn to 10 Cache in between skeleton and content turn to 33 link to close

  5. ESI / Templating Computationally other service other service expensive service Xslt XML in S3

  6. 0.8 seconds for first byte 1.5 seconds for page load

  7. 40 35 Page Load (sec) 30 0.8 seconds for first byte 20 1.5 seconds for page load 10 0 0 0 1 Initial observations

  8. ESI / Templating Computationally other service other service expensive service Xslt XML in S3

  9. We’ve detected performance problems

  10. lets just add a cache

  11. ESI / Templating Computationally other service other service expensive service Xslt XML in S3

  12. ESI / Templating Computationally other service other service expensive service Xslt XML in S3

  13. Cache misses predominate Cache hits predominate Page Load (secs) Page Load (secs)

  14. There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton Bonus Joke There are only two hard things in messaging: 2. Exactly Once Delivery 1. Delivery Order 2. Exactly Once Delivery

  15. lets just add a cache said no one ever

  16. Betting on Software Architecture as Code a note on hypothesis-driven architecture

  17. a note on hypothesis-driven architecture

  18. How do we decide what bets to place? “In general, we look for a new law by the following process: First we guess it ; then we compute the consequences of the guess to see what would be implied if this law that we guessed is right; then we compare the result of the computation to nature , with experiment or experience, compare it directly with observation, to see if it works. If it disagrees with experiment, it is wrong . In that simple statement is the key to science . It does not make any difference how beautiful your guess is, it does not make any difference how smart you are, who made the guess, or what his name is — if it disagrees with experiment, it is wrong”

  19. Observe nature Make a guess Compute implications Compare with Nature Draw conclusion

  20. Observe metrics Observe nature Guess Make a guess Make a small change Compute implications Measure results Compare with Nature Was I right? Draw conclusion

  21. Observable systems Observe nature A brain Make a guess Ability to quickly deploy small changes Compute implications Lightweight probes Compare with Nature Draw conclusion

  22. practices that enable small bets* *not exhaustive

  23. Good Monitoring

  24. What do we mean when we say “monitoring”?

  25. What do we mean when we say “monitoring”? Instrumentation Our code and hardware describes what it’s doing Telemetry We have a way of gathering the data from our services Visualisation We can meaningfully visualise our systems behaviour Alerting We can take action based on this information Predictive alerting We can predict in advance when something may go wrong credit: Dan North

  26. request latency request tracing Service Service health downstream dependencies OS metrics

  27. Codahale Metrics Breaker Box Dropwizard Yammer Tenacity Circuit Breakers Chaos Monkey

  28. Continuous Delivery Safely and sustainably reduce lead time to value

  29. Observe nature Make a guess Compute implications Compare with Nature Draw conclusion

  30. https://puppet.com/resources/whitepaper/state-of-devops-report

  31. https://puppet.com/resources/whitepaper/state-of-devops-report

  32. ApacheBench ab -n 100 -c 10 “http://sciencesite.com/articles/9dfa1ae0-6ba5-4f2f-…” Siege Vegeta echo "GET http://sciencesite.com/“ | vegeta attack -duration=60s -rate=10

  33. Cloud native infrastructure as code

  34. boto

  35. Other techniques are incredibly useful for these experiments Canary Releases

  36. Other techniques are incredibly useful for these experiments Canary Releases Phoenix environments prod prod svc svc svc svc svc svc svc svc

  37. Other techniques useful patterns Canary Releases Phoenix environments Blue / Green deploys

  38. Production != Live Canary Releases Phoenix environments Blue / Green deploys

  39. Good monitoring Observe nature A brain Make a guess Ability to quickly deploy small changes Compute implications Lightweight probes Compare with Nature Draw conclusion

  40. Putting it all together AKA

  41. 0.8 seconds for first byte 1.5 seconds for page load 40 35 Page Load (sec) 30 20 10 0 0 0 1 Initial observations

Recommend


More recommend