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 microservices 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 an 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 is your team expecting from you?
In this talk, Dylan Beattie 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.
3. 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
28. 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.
29. Principles behind the Agile Manifesto
We follow these principles:
[...]
The best architectures, requirements, and designs
emerge from self-organizing teams.
67. “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)
JK6GB87M$
(Windows file share
with Marketing email
templates)
Key to Yourdon/DeMarco notation
Database or Filesystem
Function
Data Flow
Input / Output
68. Key to Yourdon/DeMarco notation
Database or Filesystem
Function
Data Flow
Input / Output
69. “Mandrill”
(Mailchimp SMTP
relay service)
“Excelsior”
(SQL Server database
of customer details)
“Mercutio”
(.NET service that
populates email
templates)
“Norman”
(.NET app that
sends emails)
JK6GB87M$
(Windows file share
with Marketing email
templates)
70. “Mandrill”
(Mailchimp SMTP
relay service)
“Excelsior”
(SQL Server database
of customer details)
“Mercutio”
(.NET service that
populates email
templates)
“Norman”
(.NET app that
sends emails)
JK6GB87M$
(Windows file share
with Marketing email
templates)
71. “Mandrill”
(Mailchimp SMTP
relay service)
“Excelsior”
(SQL Server database
of customer details)
“Mercutio”
(.NET service that
populates email
templates)
“Norman”
(.NET app that
sends emails)
JK6GB87M$
(Windows file share
with Marketing email
templates)
72. “Mandrill”
(Mailchimp SMTP
relay service)
“Excelsior”
(SQL Server database
of customer details)
“Mercutio”
(.NET service that
populates email
templates)
“Norman”
(.NET app that
sends emails)
JK6GB87M$
(Windows file share
with Marketing email
templates)
Key
SQL Database
Windows Service
SMTP email relay
ADO.NET records
Network fileshare
SMB File share
RabbitMQ
SMTP
73. “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)
JK6GB87M$
(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