CodeFest 2019. Dylan Beattie (Skills Matter) — Architecture: «The Stuff That’s Hard to Change»

16b6c87229eaf58768d25ed7b2bbbf52?s=47 CodeFest
April 06, 2019

CodeFest 2019. Dylan Beattie (Skills Matter) — Architecture: «The Stuff That’s Hard to Change»

We’ve all heard of the idea of ‘software architecture’. We’ve read books about domain-driven design and event sourcing, we’ve been to conferences and learned about micro services and REST APIs. Some of us remember working with n-tiers and stored procedures... some of us are still using them. But the role of a systems architect is still one of the most misunderstood things about the software development process. What does the architect actually do? If you’re working with a systems architect, what can you expect from them? And if you are a systems architect, what are your team expecting from you? In this talk, Dylan will share his own insights into the idea of architecture as part of a software development process. We’ll explore some popular architectural patterns and processes — and a couple of obscure ones as well — and look at how, and when, you can incorporate those patterns into your own projects. We’ll talk about how the idea of software architecture has changed over time, and share some tips and advice for developers who find themselves working with architecture as part of their role.

16b6c87229eaf58768d25ed7b2bbbf52?s=128

CodeFest

April 06, 2019
Tweet

Transcript

  1. “The Stuff That’s Hard To Change” Dylan Beattie @dylanbeattie

  2. From: The Boss To: Dylan Subject: Change of job role

    Dear Dylan, This is to confirm your change of job role to Systems Architect, effective immediately. You are now responsible for architecture, architecting, doing architect stuff, systems architecture, and architecting systems. Congratulations on your new role! Kind regards, Your Boss Change of Job Role
  3. ARCHITECT LAUNCH PIPELINE BUS PYTHON CRASH MOUSE

  4. https://www.theatlantic.com/technology/archive/2015/11/programmers-should-not-call-themselves-engineers/414271/

  5. https://commons.wikimedia.org/wiki/File:Margaret_Hamilton_1989.jpg

  6. None
  7. https://franklloydwright.org/site/fallingwater/

  8. https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred-

  9. https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred- “Computer architecture, like other architecture, is the art of

    determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints.” - Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
  10. https://www.pcworld.com/article/258989/the_ibm_ps_2_25_years_of_pc_history.html

  11. https://winworldpc.com/product/microsoft-visual-bas/10

  12. https://www.arnnet.com.au/slideshow/557401/pictures-visual-history-netscape-navigator/

  13. None
  14. What is software architecture?

  15. https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred- “Computer architecture, like other architecture, is the art of

    determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints.” - Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
  16. https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred- “Computer architecture, like other architecture, is the art of

    determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints.” - Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
  17. https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred- “Computer architecture, like other architecture, is the art of

    determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints.” - Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
  18. https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred- “Computer architecture, like other architecture, is the art of

    determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints.” - Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
  19. https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred- “Computer architecture, like other architecture, is the art of

    determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints.” - Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
  20. ? ? ?

  21. None
  22. None
  23. None
  24. None
  25. Rene Descartes

  26. Manifesto for Agile Software Development We are uncovering better ways

    of developing software by doing it and helping others do it. Through this work we have come to value: […] Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.
  27. Principles behind the Agile Manifesto We follow these principles: [...]

    The best architectures, requirements, and designs emerge from self-organizing teams.
  28. None
  29. [Slide: the iPhone 1]

  30. NewShiny.js!

  31. https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred- ARCHITECTURE: 1. determine user needs 2. meet those needs

    3. within economic and technological constraints.”
  32. SOFTWARE ARCHITECTURE IN THREE EASY STEPS

  33. Make Decisions Communicate Decisions Reinforce Decisions

  34. HOW TO MAKE DECISIONS https://www.flickr.com/photos/leviathana/88146176

  35. 1. What Have You Got? Understand your Existing Technology

  36. Vasyatka1 / CC BY-SA 4.0 / https://commons.wikimedia.org/wiki/File:Munich_Airport_T1_L4_passport_controls.jpg

  37. WEBSITE THE INTERNET HTTP

  38. “I don’t care about what anything was DESIGNED to do

    – I care about what it CAN do.” Gene Kranz, NASA Mission Director, Apollo 13
  39. None
  40. 2. What Do You Need? Asking the Right Questions

  41. None
  42. None
  43. 3. What Can You Build? Understand your Capabilities

  44. davetoaster / CC BY 2.0 / https://www.flickr.com/photos/dfoster/3722602616/

  45. None
  46. None
  47. None
  48. None
  49. 4. What Can You Buy? Look for platform-as-a-service and software-as-a-service

    solutions
  50. JD Lasica / CC BY 2.0 / https://www.flickr.com/photos/jdlasica/8535984776 There are

    some things money can’t buy. For everything else, there’s MasterCard.
  51. 5. What Can You Lose? Look for Redundancies and Duplication

  52. Whatleydude / CC BY 2.0 / https://www.flickr.com/photos/whatleydude/3862398238

  53. DECIDE WHAT TO DO (The easy part)

  54. COMMUNICATING DECISIONS

  55. DESIGN YOUR SOLUTION https://theconcourse.deadspin.com/a-brain-meme-in-the-wild-1795721849

  56. https://funnyjunk.com/Ikea+instructions/funny-pictures/5557042/

  57. The Problem With Diagrams

  58. None
  59. None
  60. None
  61. None
  62. None
  63. Mercutio Norman Mandrill Excelsior \\JK6GB87\M$

  64. Mercutio Norman Mandrill Excelsior \\JK6GB87\M$ Key to Yourdon/DeMarco notation Database

    or Filesystem Function Data Flow Input / Output
  65. “Mercutio” (.NET service that populates email templates) “Norman” (.NET app

    that sends emails) “Mandrill” (Mailchimp SMTP relay service) “Excelsior” (SQL Server database of customer details) \\JK6GB87\M$ (Windows file share with Marketing email templates) Key to Yourdon/DeMarco notation Database or Filesystem Function Data Flow Input / Output
  66. Key to Yourdon/DeMarco notation Database or Filesystem Function Data Flow

    Input / Output
  67. “Mandrill” (Mailchimp SMTP relay service) “Excelsior” (SQL Server database of

    customer details) Key SQL Database Windows Service SMTP email relay ADO.NET records “Mercutio” (.NET service that populates email templates) “Norman” (.NET app that sends emails) \\JK6GB87\M$ (Windows file share with Marketing email templates) Network fileshare SMB File share RabbitMQ SMTP
  68. “Mandrill” (Mailchimp SMTP relay service) “Excelsior” (SQL Server database of

    customer details) Key SQL Database Windows Service SMTP email relay ADO.NET records “Mercutio” (.NET service that populates email templates) “Norman” (.NET app that sends emails) \\JK6GB87\M$ (Windows file share with Marketing email templates) Network fileshare SMB File share RabbitMQ SMTP .txt & .html files. (Windows authentication required.) ADO.NET Windows authentication via Mercutio service account RabbitMQ (SAAS hosted on CloudAMQP) SMTP Port 993 TLS enabled
  69. None
  70. None
  71. None
  72. None
  73. Mercutio (Core Logic) EntityFramework Data Adapter “Excelsior” (Customer Database) ICustomerDataPort

    ITemplatePort FileSystem Template Adapter Windows File Share IMailSender RabbitMQ Mail Adapter (implementation) Mercutio Entity Framework Data Provider “Excelsior” (Customer Database) Windows File Share RabbitMQ Mandrill (SMTP relay component)
  74. REINFORCING DECISIONS

  75. VALIDATION (are we building the right thing?) VERIFICATION (are we

    building the thing right?)
  76. None
  77. None
  78. None
  79. None
  80. [restroom, pissoir]

  81. None
  82. None
  83. None
  84. I’VE REVIEWED YOUR C# CODE AND I STILL DON’T KNOW

    WHAT IT DOES. Dude. My team is using Scala.
  85. public class CustomerRepo { public CustomerRepo(IdentityMap<Customer> map) { this.map =

    map; } public Customer GetCustomer(int customerId) { return map.FindById(customerId); } }
  86. None
  87. None
  88. None
  89. None
  90. API SERVER API CLIENT {fake JSON} {spec tests}

  91. API SERVER API CLIENT {fake JSON} {spec tests}

  92. None
  93. None
  94. https://xkcd.com/844/

  95. Dylan Beattie @dylanbeattie dylan@dylanbeattie.net