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

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

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.

CodeFest

April 06, 2019
Tweet

More Decks by CodeFest

Other Decks in Technology

Transcript

  1. 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
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. Principles behind the Agile Manifesto We follow these principles: [...]

    The best architectures, requirements, and designs emerge from self-organizing teams.
  10. “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
  11. 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.
  12. “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
  13. “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
  14. “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
  15. 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)
  16. I’VE REVIEWED YOUR C# CODE AND I STILL DON’T KNOW

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

    map; } public Customer GetCustomer(int customerId) { return map.FindById(customerId); } }