Architecture without Architects - XConf SEA 2021
Zusammenfassung
TLDREric, head of technology at ThoughtWorks Germany, presents a keynote on 'Architecture without Architects', where he challenges traditional views of software architecture by comparing it to gardening instead of construction. He emphasizes the evolving nature of software systems, arguing that architecture is an ongoing process. Eric asserts that developers should be aware of the implications of architectural choices, and that visualizations and frameworks should not overshadow the ultimate goal of delivering user value. Through fitness functions, architects can guide and measure the adaptability of software systems to meet changing requirements. Ultimately, he suggests architects should guide developers rather than dictate terms, leading to a more collaborative and effective development process.
Mitbringsel
- 🌱 Architecture is an ongoing process, akin to gardening, not a one-time construction task.
- 🛠️ Developers should understand the real implications of architectural choices.
- 📊 Fitness functions measure the performance and integrity of software architecture.
- 🤝 Architects should guide developers instead of imposing strict frameworks.
- 🌍 Software systems are never truly finished; they adapt continuously to user needs.
Zeitleiste
- 00:00:00 - 00:05:00
The session begins with an introduction of Eric, the keynote speaker from ThoughtWorks Germany, who has 25 years of experience in technology. He advocates for Agile values and open source software, and will be discussing the topic 'Architecture without Architects'.
- 00:05:00 - 00:10:00
Eric begins his keynote by discussing the definition of an architect in the context of computer science, noting the complexity involved in software development beyond merely writing code. He highlights that terminology should not mislead perceptions of software architects similar to building architects, and introduces the metaphor of gardening to describe software upkeep.
- 00:10:00 - 00:15:00
Eric critiques the architectural metaphor, emphasizing the dynamic nature of software compared to the static nature of building architecture which can be completed. He warns against applying building industry conventions to software architecture, arguing it can lead to incorrect assumptions and practices.
- 00:15:00 - 00:20:00
He proposes that architects often create abstractions for developers but stresses that misunderstandings can lead to performance issues if underlying implementations are not considered. He shares illustrative examples of poor coding practices and the implications of abstractions that developers fail to comprehend, demonstrating how architecture is intertwined with development work.
- 00:20:00 - 00:25:00
The discussion continues with Eric rejecting traditional architect roles, asserting that modern developers should adopt these responsibilities, including design and coding practices. He encourages developers to not shy away from the implications of architectural decisions and relates it to better software quality and user experience.
- 00:25:00 - 00:30:00
Eric illustrates with case studies on how to measure architectural health through means like coding quality and performance metrics. He shares that traditional architectural roles are increasingly blurred with development roles, suggesting structural changes in teams to reflect this.
- 00:30:00 - 00:35:00
He brings in the concept of evolution in architecture by likening it to town planning, emphasizing organic growth driven by user need rather than rigid planning. Eric stresses the importance of guided incremental changes in architecture, fostering adaptability over static models of architecture.
- 00:35:00 - 00:40:00
In his final conclusion, Eric emphasizes that architecture is a continuous journey rather than a one-time endeavor and introduces the idea of architectural fitness functions that can be used as guiding principles for software evolution.
- 00:40:00 - 00:46:22
He concludes by advocating for architects to serve as guides in the software development process, focusing on helping developers navigate challenges instead of enforcing rigid structures. The session ends on a positive note with appreciation for the analogies and insights shared throughout the keynote.
Mind Map
Video-Fragen und Antworten
What is the main focus of Eric's keynote speech?
The main focus is on the concept of 'architecture without architects' in the context of software development.
How does Eric differentiate between software architects and building architects?
Eric argues that software architecture is more about ongoing evolution and maintenance, similar to gardening, rather than a fixed construction role like building architects.
What does Eric suggest is a better metaphor for software architects?
Eric suggests that being a gardener is a more appropriate metaphor, as it emphasizes ongoing care and adaptation rather than one-time construction.
What is the significance of fitness functions in architecture?
Fitness functions help measure the integrity and performance of software architecture, guiding evolution and ensuring systems meet business requirements.
How does Eric view the role of architects in software development?
Eric believes architects should act more as guides, helping developers navigate complexities rather than imposing strict rules.
Weitere Video-Zusammenfassungen anzeigen
vibhakti aur vachan kaise pahchane || विभक्ति और वचन को Trick से पहचाने ।। by pankaj sir
🦿 Langkah 02: Huruf Kapital | Fundamental Bahasa Indonesia Alternatifa
are you okay? | Award-Winning Short Film
CERISMA (Ceramah Islami Ramadhan) 2025 KKG PAI Kabupaten Lamongan dari Kecamatan Bluluk
CERISMA (Ceramah Islami Ramadhan) 2025 KKG Pai Kabupaten Lamongan dari Kecamatan Karangbinangun
i became a SECURITY guard... (VR)
- 00:00:00So next we have our keynote speaker
- 00:00:03who's joining us from Hamburg, Germany, probably
- 00:00:07as the first thing for his Friday, since I hope
- 00:00:10is sunny over there for his morning.
- 00:00:12So he's Eric, head of technology for ThoughtWorks Germany,
- 00:00:17and throughout Eric's 25 years in technology
- 00:00:20he has witnessed the rise and sometimes
- 00:00:23the fall of many technologies.
- 00:00:26Always curious, he seeks to understand
- 00:00:28the potential of these new technologies
- 00:00:31while trying to figure out how to apply hard
- 00:00:34won experience and proven practices.
- 00:00:37He's also an advocate of Agile values and open source
- 00:00:42software.
- 00:00:43So today he will be providing our keynote speech,
- 00:00:47architecture without architects.
- 00:00:50What a wonderful name, I'm so curious to know
- 00:00:52how this is possible.
- 00:00:54And let's give a warm welcome to Eric for the closing
- 00:00:58keynote of today.
- 00:01:04So hello, thank you very much for the warm welcome,
- 00:01:07and let's dive straight into the topic.
- 00:01:09I'm happy to hear that the title piqued your interest,
- 00:01:12I hope I can satisfy and explain what we are talking about
- 00:01:17and why it can actually make sense
- 00:01:18as you alluded to because it is not totally obvious how
- 00:01:22that can work.
- 00:01:23To start let me share my slides, which
- 00:01:28you should hopefully see now.
- 00:01:30MALE MODERATOR: Yes we can.
- 00:01:31ERIC: Good
- 00:01:32MALE MODERATOR: Very good.
- 00:01:33Cool.
- 00:01:34So architecture without architects.
- 00:01:37Let's start to talk about architects
- 00:01:40to kick this off really.
- 00:01:42What is an architect?
- 00:01:43And I guess in computer science, which
- 00:01:45is a relatively young discipline we are borrowing words,
- 00:01:48we're taking metaphors, we're taking terms
- 00:01:50from other disciplines to describe
- 00:01:52better what we are doing.
- 00:01:54And there was one thing, I guess many of us recognize,
- 00:01:57in writing software it wasn't just writing code
- 00:01:59at a very early stage already.
- 00:02:0130, 40 years ago there was more than just
- 00:02:03writing a few lines of code to solve a business problem.
- 00:02:06And we're looking for a term, and a term
- 00:02:08that had been applied in other disciplines
- 00:02:10as well was this metaphor of architecture.
- 00:02:14Sometimes, and I know this at least [AUDIO OUT]
- 00:02:19the real building architects aren't even that happy
- 00:02:21about other people calling themselves architects.
- 00:02:24So they really want to make sure that we call ourselves
- 00:02:26at least software architects or something
- 00:02:28to distinguish from the true architects.
- 00:02:31But nonetheless, I think it is important to briefly look
- 00:02:34at what real architects are doing.
- 00:02:35And if you look at that picture, the architect
- 00:02:38is the one with the white helmet.
- 00:02:40He's the one who's drawing the plans.
- 00:02:43He's actually not really drawing the plans
- 00:02:45he's actually the one who probably
- 00:02:47did the broad strokes designs.
- 00:02:49The plan that we're seeing in the hands
- 00:02:51here were probably done by structural engineers,
- 00:02:53by other people.
- 00:02:55And these plans if you look at them, they are super detailed,
- 00:02:59you can see the physical size and the picture of that plan.
- 00:03:02But what is also and I guess this
- 00:03:03is intuitively clear to all of us but not often talked about,
- 00:03:08when you look at those plans and in the detail
- 00:03:10you will see that they are very low level of abstraction.
- 00:03:14For example, if you look at the skyscraper
- 00:03:16in the background that has 10, 20, 30 storeys,
- 00:03:19it has multiple similar windows.
- 00:03:21But in these architectural plans we
- 00:03:23don't have those abstractions that we
- 00:03:25take for granted when we write software.
- 00:03:27If you want 10 stories you're probably
- 00:03:29drawing 10 stories in the plan.
- 00:03:32Probably also because each story is
- 00:03:33a little different for practical reasons.
- 00:03:36But also when you have windows, you
- 00:03:38don't have a for loop in the plan that says,
- 00:03:40this window 20 times, you draw the same window 20 times.
- 00:03:45So what we're really seeing here is
- 00:03:47when we look at that picture, that plan is much more
- 00:03:51detailed, it's almost like precise instructions of how
- 00:03:54to build something which is, when you think about it,
- 00:03:57more akin to how we write code.
- 00:04:00This is more really like constructing the computer
- 00:04:03to do something.
- 00:04:04And maybe that's not completely surprising then when
- 00:04:07we think what do we call the phase when the software,
- 00:04:10when the source code is compiled and made ready for deployment
- 00:04:14on production system, we call it the build.
- 00:04:17So basically, what we are doing for a long time with the source
- 00:04:21code we are writing but now increasing the odds
- 00:04:23with infrastructure as code, we are doing the same things,
- 00:04:26those plans, we are creating the plans.
- 00:04:28The actual building phase is done entirely by the computer.
- 00:04:33When you think about it that way you come to the realization
- 00:04:36that what these people are doing is exactly what the software
- 00:04:40developers are doing.
- 00:04:42So the people who are programming or writing
- 00:04:44the source code, the infrastructure people writing
- 00:04:46the infrastructure as code scripts and other descriptions,
- 00:04:50they are the ones who are doing the plans,
- 00:04:51they're not the building people.
- 00:04:53So in many ways this metaphor is really quite misleading.
- 00:04:57Also if you think about the real world,
- 00:04:59an architect is more like a business analyst.
- 00:05:01He's talking to the customers, he's
- 00:05:03finding out what they need.
- 00:05:04He's not the one writing the detailed plans.
- 00:05:08It is all interesting already but I
- 00:05:10think the biggest issue with the metaphor
- 00:05:12is that the term architect in the building industry, what
- 00:05:17we--
- 00:05:17the connotations are there for most people
- 00:05:20who are not completely in the IT industry all the time.
- 00:05:23The architects are focused on the construction phase.
- 00:05:26When the building is finished, when the tenants have moved in,
- 00:05:30the architecture is done.
- 00:05:32But that's not the case.
- 00:05:33If you think about your enterprises, your businesses,
- 00:05:36how much does something really change?
- 00:05:38I would argue it changes a lot, it's never really finished.
- 00:05:41This skyscraper at some point will be finished.
- 00:05:44You're not going to add 20 new stories to it.
- 00:05:46You're not going to change the ground floor.
- 00:05:48You're not going to change the shape.
- 00:05:50You're not going to change the color and all these things,
- 00:05:52the materials.
- 00:05:53But that's precisely what we do with software.
- 00:05:55So we have to be really, really careful
- 00:05:57that we're taking these metaphors,
- 00:05:59that we don't mentally put ourselves into the wrong state.
- 00:06:03That we take what we intuitively know
- 00:06:05from the world about building architecture
- 00:06:08and apply that thinking, accidentally almost,
- 00:06:11to our perception of what we do with software because it
- 00:06:14will mislead us.
- 00:06:17This is a known problem.
- 00:06:19This has been a problem for many years,
- 00:06:21I've actually used this picture even 10 years ago.
- 00:06:24And one thing that I have seen is
- 00:06:26that some people have said, what are better metaphors?
- 00:06:29And one thing that struck me over the years is this one.
- 00:06:32Some people have said, I feel more like a gardener.
- 00:06:35Yes, every now and then I'm planting new plants,
- 00:06:39but the vast majority of time I'm
- 00:06:41actually looking after the existing garden.
- 00:06:44I'm looking after the plants that were there many years ago.
- 00:06:48The plants are also changing, I need
- 00:06:49to have a plan of how the change of the-- sorry, the change
- 00:06:53of the plants over time actually makes my garden look like,
- 00:06:56makes the business that I have about maybe growing crops
- 00:07:02or so, how that actually works.
- 00:07:03And also what is part of that metaphor is to say,
- 00:07:07let's weed out some old plants.
- 00:07:08Plants wither and die, we have to have a plan for that too.
- 00:07:11And I think this is a much better metaphor
- 00:07:13if you think about it.
- 00:07:14Also, I mean I've been involved with a lot of strategic IT,
- 00:07:18if you look at where the budgets are usually
- 00:07:20spent in enterprises, the vast majority
- 00:07:23is on maintenance and not so much on what
- 00:07:25is often even called R&D. But the architectural metaphor
- 00:07:30really focuses only on one thing.
- 00:07:32The question is, why don't we call ourselves gardeners?
- 00:07:35I've seen a few people do that, very, very few.
- 00:07:39I really think it's a very simple answer, oh, we're
- 00:07:42creating for prestige.
- 00:07:43Architect is a much more prestigious title
- 00:07:45and we identify ourselves much more
- 00:07:47with being an architect than with a gardener.
- 00:07:50But if you're talking about the honesty of what we're really
- 00:07:53doing, I think this is much closer to the work
- 00:07:57that we are doing.
- 00:07:58And by the way I'm not encouraging
- 00:07:59you to change your job titles if your job
- 00:08:01title is architect to gardener.
- 00:08:03It can be a thought provoking thing
- 00:08:05to do to start this conversation.
- 00:08:07I think we have to accept that is what we call it,
- 00:08:09but I do believe we need to be aware of the bias.
- 00:08:13And this is-- I'm going to present you four conclusions.
- 00:08:16This is the first conclusion, architecture
- 00:08:18is a tricky and to a certain extent even dangerous metaphor.
- 00:08:21You have to be mindful of what connotations you are arising
- 00:08:25and be mindful that you might set yourselves off
- 00:08:28in a way of thinking that might not
- 00:08:31be the best way of thinking when it
- 00:08:32comes to complicated software systems.
- 00:08:36I believe you want to check.
- 00:08:38Ah, sorry.
- 00:08:39I just saw check message, I just wanted to make sure
- 00:08:41that there were no questions.
- 00:08:43I would encourage you anyway to ask those questions on Slack.
- 00:08:47I will be joining select after I finish the talk
- 00:08:49and I'm happy to stay on for a while, half an hour
- 00:08:52or longer to answer many of your questions.
- 00:08:55So moving back to the actual presentation.
- 00:09:00Now that we talked about architect the term
- 00:09:02and what it means for us, let's talk about what the architects
- 00:09:05are actually doing.
- 00:09:08And one thing that I've seen quite a bit
- 00:09:09is architects are creating abstractions.
- 00:09:13They're saying, as an architect my role is not
- 00:09:16to be in the code.
- 00:09:17Oftentimes you hear people saying, I get my hands dirty.
- 00:09:20By the way, interesting, that sounds like the gardener
- 00:09:23metaphor again, right?
- 00:09:24But what I've often seen is that architects are saying,
- 00:09:27I want to talk about creating frameworks so developers can't
- 00:09:30make mistakes, or in a more trusting environment
- 00:09:34so developers are more productive.
- 00:09:36We create these common frameworks,
- 00:09:38we create these abstractions that other people
- 00:09:40can build upon.
- 00:09:42I would argue that's not a bad idea, abstractions are good.
- 00:09:44Without abstractions nothing in computer science
- 00:09:47would be where it is today.
- 00:09:49But again, we need to be conscious that the abstractions
- 00:09:52and what we are doing with the term
- 00:09:53abstractions are well understood.
- 00:09:56This year is, in pseudocode, an example from a real engagement
- 00:10:00that I worked on many, many years ago.
- 00:10:02The idea here really was, if you think
- 00:10:04about a website that presents images that need to be tagged.
- 00:10:07So a tag could be something like a building,
- 00:10:10could be tagged to Singapore, could be tagged to people,
- 00:10:13right?
- 00:10:13So the images needed to be tagged,
- 00:10:16and there was a functionality in the admin
- 00:10:18part of the application to see which
- 00:10:20of the tags that were created in the taxonomy were not used.
- 00:10:25And this was the code--
- 00:10:26as I said, this is pseudocode-- but that
- 00:10:28was the code that was written.
- 00:10:29So you're iterating in the foreach loop of all the tags
- 00:10:33and then you saying, tag.images.count.
- 00:10:36I'm going from the tag to the images,
- 00:10:38and if the count is zero, obviously the image is not used
- 00:10:41and then I'm sticking the tech into the collection
- 00:10:43of unused tags.
- 00:10:46This is implemented in a high level programming language,
- 00:10:48the images are stored in some data store,
- 00:10:51let's for the sake of the argument
- 00:10:52assume it's a relational database,
- 00:10:54and we can see here it's obviously
- 00:10:57some object relational mapping technology that is being used.
- 00:11:00But do you-- can you imagine immediately
- 00:11:02what is happening here?
- 00:11:03Let's take a tag that is probably used quite a bit,
- 00:11:06like news, or Singapore.
- 00:11:08So tag.images will trigger a load of all the images that
- 00:11:12belong to the tech into memory.
- 00:11:14Then in memory the collection is being counted very quickly,
- 00:11:17of course, the algorithm decides the count is 20,000
- 00:11:20and not zero and moves on.
- 00:11:23But effectively, while doing this
- 00:11:25you are bringing the entire database into memory.
- 00:11:29The person who wrote the code wrote the right code
- 00:11:31from a programming perspective but they
- 00:11:34were unaware of the abstraction underneath.
- 00:11:37They saw the abstraction and they programmed according
- 00:11:39to the rules that the abstraction presented
- 00:11:42but did not realize what they were doing.
- 00:11:44Luckily we had performance tests that
- 00:11:46very quickly showed the issue.
- 00:11:48And by the way, in later years when we revisited stories
- 00:11:51like these, people said, oh yeah,
- 00:11:53but that was because this was more procedural,
- 00:11:55today everything is better because we
- 00:11:56use functional programming.
- 00:11:58And to be honest with you, this is again pseudocode,
- 00:12:01maybe slightly closer to Java in a more functional approach.
- 00:12:04I'm creating a stream of all the tags
- 00:12:06and I'm using a filter and an anonymous function
- 00:12:09but you see it's the same problem,
- 00:12:11t.images.count, same thing.
- 00:12:13I'm writing idiomatic code in the abstraction
- 00:12:16that I'm operating on, do malfunctional programming,
- 00:12:20and still the underlying implementation
- 00:12:23of that abstraction still kills me if you will.
- 00:12:26Because t.images still eagerly loads-- sorry,
- 00:12:29lazily loads all the data into REM.
- 00:12:31I still need to understand.
- 00:12:33The programming paradigm at that level of abstraction
- 00:12:35doesn't help me, the problem really
- 00:12:37is in the implementation of the abstraction.
- 00:12:41Another example, a real world example.
- 00:12:43This was from a financial institution.
- 00:12:46A quote here is a quote for a possible deal.
- 00:12:50Code message as you can see in the top line
- 00:12:52was a Java object in that case and the developers
- 00:12:55could work on that level.
- 00:12:56That was built on an abstraction layer that converted that code
- 00:12:59message into some format on another abstraction layer that
- 00:13:03made that into a message, on the message bus.
- 00:13:05The message bus was implemented somehow.
- 00:13:07There was another abstraction layer
- 00:13:09before it hit the operating system, and then at some point
- 00:13:11it hits the networks in the operating system
- 00:13:14canal, Linux most likely.
- 00:13:16And what do we see here?
- 00:13:17That is what the interface definition of the network is.
- 00:13:20And what's happening now is you have a very high level
- 00:13:22of abstraction.
- 00:13:23You have that quote message where
- 00:13:25you can say, what currency, what instrument am I
- 00:13:27trading at the very top.
- 00:13:30And then at the very bottom, you have this number, MTU,
- 00:13:34the maximum transfer unit, 1,500 bytes on ethernet normally.
- 00:13:38And what was essential for this trading system
- 00:13:40was that it was fast, but it meant
- 00:13:43all the messages needed to fit into a single packet
- 00:13:46on ethernet.
- 00:13:47So at the moment, you don't notice
- 00:13:50that, you change one field in the quote message on the Java
- 00:13:53level, you're adding one instance variable.
- 00:13:56And now the serialize-- to all these layers of abstraction,
- 00:14:00the serialized message format goes from 1,480 bytes to 1,540.
- 00:14:07You don't think about that at all
- 00:14:08when you're dealing in the Java land.
- 00:14:10But on the network level you've now split the packets
- 00:14:13and you're creating a huge issue because you
- 00:14:15need to reassemble the packets, you need to look at sequence,
- 00:14:18and so on.
- 00:14:19So again, you really, really cannot forget about how
- 00:14:22your abstraction is implemented, and if you talk about
- 00:14:25architecture as saying creating abstractions,
- 00:14:27that's a good thing.
- 00:14:29But to say we create abstractions and nobody
- 00:14:31needs to know what happens underneath, that is
- 00:14:33a very, very slippery slope.
- 00:14:37Another thing, another story.
- 00:14:39I was working with a large company, maybe some of you
- 00:14:42recognize the visual identity, windows phones aren't really
- 00:14:45a thing anymore.
- 00:14:46But what we were building, we were
- 00:14:47building the API for all of these applications, places.
- 00:14:51Like the restaurant that you see there in London.
- 00:14:54How many stars does it have?
- 00:14:55Where are the restaurants on the map?
- 00:14:57Or if I said, for example I'm limiting this to restaurants
- 00:15:01of a specific cuisine, I only see
- 00:15:04the restaurants of that cuisine, or in the case as you can
- 00:15:07see in the middle in the search there,
- 00:15:08I want to have dining here.
- 00:15:10So this application running on mobile phones,
- 00:15:12you can see at the bottom running on websites,
- 00:15:15on photo reviews and so on, that needs an API at the back end.
- 00:15:19And how do you build this?
- 00:15:21We have a lot of theory around REST,
- 00:15:23around hypermedia as the state--
- 00:15:26as the engine of application state and so on.
- 00:15:29There's a lot of theory, they're maturity models.
- 00:15:31We were aware of all of them, and yet we consciously
- 00:15:35and knowingly violated them on an architectural perspective.
- 00:15:39This is, and you can actually see probably
- 00:15:41from the screenshot, how old the browser is.
- 00:15:43Again, this is many years ago and he was already a problem--
- 00:15:47not a problem, a point of discussion back then.
- 00:15:49So this is the real search result. If I did REST,
- 00:15:53I would not do most of this.
- 00:15:54I would probably-- you can see this
- 00:15:56at the very bottom, the results have items,
- 00:15:59and at the very bottom, you see the type and the type
- 00:16:03is here correctly, I would argue,
- 00:16:05is a hyperlink, so you can get actually
- 00:16:06more information about the type of the response, and then
- 00:16:09the href, where is the response?
- 00:16:11This should be where I can find the search results.
- 00:16:14This would be proper REST.
- 00:16:15And what have we done, we have included information
- 00:16:19like the icon, doesn't belong there.
- 00:16:21The icon would belong to the resource of the actual search
- 00:16:24result, it is hyperlinked at the bottom.
- 00:16:27We've included some information about the vicinity,
- 00:16:30you can see that agreeing towards the bottom.
- 00:16:32Like where is it in Berlin, why would that
- 00:16:34be in the search results?
- 00:16:35The search results shouldn't include
- 00:16:37that if you follow REST, that should not be in there.
- 00:16:40Even worse, if you look further up, in the result,
- 00:16:43we've repeated the position that was given to the server.
- 00:16:48Why would we repeat that?
- 00:16:49Because it makes it easier for the applications.
- 00:16:52What we've also done is the distance.
- 00:16:54Why would we include the distance in meters?
- 00:16:57Normally that can be calculated.
- 00:16:59You have the geolocation of the user in the client application,
- 00:17:02the server tells you where the place is, why would we
- 00:17:06do the calculation?
- 00:17:07Why did we do it?
- 00:17:08We wanted that API to gain acceptance.
- 00:17:11We wanted people to use the API and we
- 00:17:13wanted that they didn't have to go to Wikipedia
- 00:17:15and look at the formula how to calculate distance
- 00:17:18between to lat longitude paths, and wanted
- 00:17:21to do the work for them.
- 00:17:22Similarly, we included the category.
- 00:17:24Because again if you think about it,
- 00:17:25if the map that I showed you, if here for example
- 00:17:28this is a bar or pub, if you want
- 00:17:30to show different icons on a map,
- 00:17:32you quickly have a one class end problem.
- 00:17:34You do the search and if you follow true REST,
- 00:17:36the information would only be hidden, hidden.
- 00:17:39Would only be in the actual results,
- 00:17:41you would not only do the one search,
- 00:17:43you would do for each of the search results,
- 00:17:45do a specific request to find out more information.
- 00:17:48And that is clearly unacceptable for the user.
- 00:17:51So what I'm trying to say here is that we have ideas,
- 00:17:53and I'm not saying they're wrong,
- 00:17:55we have ideas about architecture,
- 00:17:57but we need to understand what is
- 00:17:58more important is user experience of the system we are
- 00:18:01building and we have to judiciously deviate
- 00:18:05from architectural principles.
- 00:18:06We have to understand why they are there,
- 00:18:08we shouldn't just recklessly throw them overboard
- 00:18:11or say we don't care.
- 00:18:13But they don't rule.
- 00:18:14What rules is in the end user experience.
- 00:18:16And having a search result include
- 00:18:18those items, like we display them
- 00:18:19on the map within two seconds, is way better than doing pure
- 00:18:24and clean and REST by the book and take half a minute
- 00:18:27to show the user the results.
- 00:18:31That means, of course, and that's my second conclusion,
- 00:18:34architecture and development cannot be separated.
- 00:18:37You have to understand what the impact is
- 00:18:42when you're implementing the architectural pattern.
- 00:18:45You can't just sit there and say,
- 00:18:46the architecture says we need to have REST.
- 00:18:49Look at the book about REST, look about the maturity model
- 00:18:53and implement it that way and follow that to the letter.
- 00:18:56You have to understand the developmental impact.
- 00:18:59And I would go even further in the example I shared with you,
- 00:19:01we also did some actual measurement of how it performed
- 00:19:05in the real world and we noticed on the 3G and nowadays LTE
- 00:19:09networks, it didn't make a difference
- 00:19:11from a latency perspective, whether you transmitted
- 00:19:14one kilobyte or 15 kilobytes.
- 00:19:16So it was actually using something
- 00:19:19at even a lower level on how the network stack was implemented
- 00:19:22or maybe even the back end of the mobile phone network
- 00:19:26that we exploited, by saying rather than sending
- 00:19:30one kilobyte of search results, we
- 00:19:32can enrich the search result up to a level of 15 kilobytes
- 00:19:35and provide more information in the same response
- 00:19:37because it doesn't increase the response time
- 00:19:40and yet creates a much richer user experience.
- 00:19:42So architecture was informed by something that,
- 00:19:45and I showed you that on the network level as well,
- 00:19:48architecture at the high level was informed by implementation
- 00:19:51details on a level like, I don't know,
- 00:19:53five or six abstraction layer stern.
- 00:19:55So you can't separate them, you can't do architecture upfront
- 00:19:59and then implement it.
- 00:20:00You need to understand how you implement it
- 00:20:02and then that changes your architecture.
- 00:20:05I will come back to that very, very much later in this
- 00:20:07talk when I'm saying that even sometimes the cloud
- 00:20:10cost, the cost that you need to pay for resources in one
- 00:20:14of the public cloud providers can also
- 00:20:16impact the architecture.
- 00:20:17And again I would argue it's the right thing.
- 00:20:21But then if I'm saying architecture and development
- 00:20:24can't be separated, if I'm saying architecture
- 00:20:26is a dangerous metaphor, what most developers are doing
- 00:20:29would be similar to what architects in the building
- 00:20:31sense do in the real world, what do architects normally do?
- 00:20:36And one of the things I've seen a lot is design diagrams
- 00:20:39and again we have done this for many years,
- 00:20:42we've looked at visualization of what was actually implemented.
- 00:20:46And this here is a real example of a system.
- 00:20:48This is actually a standard spring Spring Boot application
- 00:20:51and what we're seeing here is the individual context,
- 00:20:55and, of course you can't read this on your screens,
- 00:20:57the individual white boxes are components
- 00:20:59as part of the spring architecture,
- 00:21:01and the black lines are showing the true dependencies
- 00:21:04between them.
- 00:21:05And what I would argue is that this
- 00:21:07is a mess that most developers can't keep in their head.
- 00:21:11The architectural diagram looks like this.
- 00:21:14It was a view controller layer, business object security
- 00:21:18across those two layer and data access objects at the bottom.
- 00:21:21I think it's not bad to have this diagram,
- 00:21:24but I think that diagram alone is not sufficient.
- 00:21:27The data access objects you can see on the right hand
- 00:21:29side in that more vertical box, these are all the data
- 00:21:32access objects.
- 00:21:33The business object is the layer at the very top of the diagram,
- 00:21:37but you can see that maze of dependencies between them,
- 00:21:40and that is not shown in the architecture diagram.
- 00:21:43So what I would argue is you can draw diagrams,
- 00:21:46and maybe somebody should draw that diagram,
- 00:21:48but this is a tiny fraction of the real work,
- 00:21:51and again, it is only a conceptual picture
- 00:21:53that doesn't really help you very much in the majority
- 00:21:57or in the face of your engagement
- 00:21:59when you're building the software.
- 00:22:00What really helps you there is the true understanding,
- 00:22:03you have to diagnose what is wrong with this picture.
- 00:22:06Because that picture here is so agreeable
- 00:22:08that hardly anybody would object to.
- 00:22:11So be a bit mindful of design diagrams that
- 00:22:14are done upfront, also I would always
- 00:22:16argue that at least half the time, if not more often,
- 00:22:20the design diagrams that exist on the wikis,
- 00:22:22on Confluence, wherever you stole them, often are outdated
- 00:22:26and don't resemble what is actually implemented.
- 00:22:30And these visualizations that I showed you,
- 00:22:32they don't lie because they show you
- 00:22:34what is actually implemented.
- 00:22:35Unfortunately, the truth is often a bit more ugly.
- 00:22:40So other things, design patterns.
- 00:22:42I think this is a very well covered area.
- 00:22:45We're not inventing many new patterns and I would argue that
- 00:22:48developers should be familiar with the patterns and be able
- 00:22:50to pick the patterns. , Similarly I talked about
- 00:22:53frameworks.
- 00:22:54Who is writing the frameworks today,
- 00:22:56most of the frameworks we use are
- 00:22:58being harvested from real use, be that at Google, at Facebook,
- 00:23:01at some of the Silicon Valley giants, other organizations.
- 00:23:04They're usually open source software
- 00:23:05that we are pulling in.
- 00:23:07And again, should an architect really
- 00:23:09make the choice what framework to use,
- 00:23:11or should that be the developers to understand
- 00:23:12the constraints of the actual implementation much better,
- 00:23:15especially bearing in mind what I said earlier
- 00:23:18that the implementation of the framework
- 00:23:20needs to be known that the abstraction is good,
- 00:23:23but you need to understand how it is implemented.
- 00:23:26Other artifacts that go into the process.
- 00:23:28I'm not talking about the artifacts that come out
- 00:23:30of the build that get deployed, I'm
- 00:23:32talking about the artifacts that go
- 00:23:33into the software development process, other code.
- 00:23:36And I like that idea.
- 00:23:37A Lot of people that I've seen have
- 00:23:39called themselves coding architects
- 00:23:42to emphasize the fact that they're also writing code.
- 00:23:44That they live with the consequences of their designs.
- 00:23:47That they don't stop at the diagram with the four boxes
- 00:23:50I showed you, but that they understand the consequence
- 00:23:52and understand the diagram that I also showed you
- 00:23:55with the hundreds of lines and hundreds of boxes
- 00:23:58that are connected by all those lines.
- 00:24:00I like that idea.
- 00:24:01Code is an important artifact, but if you
- 00:24:03are coding architect, you could also
- 00:24:05say you're an architecting developer.
- 00:24:07I think it becomes one and the same thing really.
- 00:24:09And then, of course, tests.
- 00:24:11Tests are hugely important artifact.
- 00:24:13If you ask me what is the best thing you
- 00:24:15can do to become a better IT organization
- 00:24:17I would say test automation.
- 00:24:19But again, here the tests need to be done hand
- 00:24:21in hand between developers and people
- 00:24:24who wear a hat of quality assurance.
- 00:24:26I don't think you should outsource this
- 00:24:28and I think hardly anybody would agree or would
- 00:24:31say that is the role of software architects to write tests.
- 00:24:35So, that brings me to maybe the most controversial
- 00:24:38of my four conclusions.
- 00:24:39And that is, most of what architects
- 00:24:41have done traditionally should be
- 00:24:43done by developers, or by tools, these visualization tools,
- 00:24:47or maybe not at all.
- 00:24:50I let that sit with you for a second.
- 00:24:56And so, but why do we have such a fascination with architects?
- 00:25:04As I said one this clearly, and I apologize for saying it so
- 00:25:07bluntly, but clearly prestige.
- 00:25:09There's an idea that there's a career path.
- 00:25:11That once you hit a glass ceiling as developer,
- 00:25:13you have to become an architect to progress in your career.
- 00:25:17But I think there's something much, much deeper in this.
- 00:25:21And that has to do with the idea of how we human beings
- 00:25:24talk about evolution and how we think about complex systems.
- 00:25:29I guess many of us know how evolution works,
- 00:25:32we actually see with the COVID pandemic at the moment
- 00:25:34how that virus also evolves over time.
- 00:25:37There's a lot of fascinating things
- 00:25:38we can even remind ourselves.
- 00:25:40But I often got reminded of it when I look at say--
- 00:25:44when my son was younger and we went to the zoo
- 00:25:46and we saw monkeys in the zoo and I
- 00:25:48knew 90% of the DNA of a chimpanzee
- 00:25:51was the same as our DNA.
- 00:25:53It is hard to imagine, sometimes it feels a bit odd too,
- 00:25:55doesn't it?
- 00:25:56It feels uncomfortable.
- 00:25:58Then when I talk about evolution,
- 00:26:00you've seen the picture of that man on the picture for a while
- 00:26:03now, this is not Charles Darwin.
- 00:26:05It is actually a person called William Paley,
- 00:26:07and he lived way before Charles Darwin.
- 00:26:10The reason why I have him here is
- 00:26:12he wanted to prove that God exists.
- 00:26:15And he came up with this idea and he
- 00:26:16said, if you walk along a country path
- 00:26:20and you stumble across the mechanical watch,
- 00:26:23what would you think?
- 00:26:24Where did this watch come from?
- 00:26:26Did it, poof, just come into existence
- 00:26:29or did America have to do this?
- 00:26:31And he was arguing that because these watches don't just
- 00:26:35appear out of nowhere, there needs to be a maker.
- 00:26:38And his line of argument then continue to say,
- 00:26:41if something as complex as a human being exists,
- 00:26:44it also doesn't just come into existence,
- 00:26:46there needs to be a maker who created that complex organism.
- 00:26:49And that of course was then his conclusion
- 00:26:52that God must exist because who else would
- 00:26:55have created the human beings.
- 00:26:56There are many flaws in this argument
- 00:26:57I don't want to debate, but I think
- 00:26:59the underlying idea is clear, as humans
- 00:27:01we are uncomfortable with complex systems just appearing.
- 00:27:05We believe there needs to be some unified single force
- 00:27:09behind it to create these systems.
- 00:27:11This is in popular culture.
- 00:27:13I mean this is from The Matrix movies.
- 00:27:15They have The Architect even who is behind all
- 00:27:17of this, The Architect.
- 00:27:19This is just such so ingrained in us
- 00:27:21that we believe that must be the case.
- 00:27:24But I have hope for you.
- 00:27:25It's a metaphor I've used for a long time also, town planning.
- 00:27:30I think this makes it very clear to many people.
- 00:27:34A town, and this is a model of London, a relatively
- 00:27:37contemporary model of London.
- 00:27:39That is a complex organism if you will.
- 00:27:42A complex achievement of human civilization.
- 00:27:45And it didn't just spring into existence.
- 00:27:47It evolved over several thousand years.
- 00:27:50And of course, nobody can say that whoever founded Rome,
- 00:27:53you could argue whether it was the people who
- 00:27:55lived there first or maybe the Roman Empire
- 00:27:572000 years ago when they formally founded whatever
- 00:28:01formally means in that case, whenever they formally founded
- 00:28:04London, they didn't plan, they didn't
- 00:28:06have a plan for what London would
- 00:28:07look like 2000 years later.
- 00:28:10They came up with something that worked for them at the time,
- 00:28:13of course they were visionary enough to think
- 00:28:15ahead a little bit of how it could possibly evolve,
- 00:28:18but nobody can tell me that they knew what it would
- 00:28:20be needed 2000 years later.
- 00:28:22And yet we have a complex and reasonably functioning city.
- 00:28:27You could always argue traffic jams are a pain,
- 00:28:30maybe you could do something about the traffic jams,
- 00:28:32but I would even argue and I've seen those, for example--
- 00:28:35I lived in Australia for a while,
- 00:28:36if you look at Canberra which is a planned city, that
- 00:28:38doesn't solve the issue.
- 00:28:40More lanes to a highway will just attract more traffic.
- 00:28:43So what we are arguing is that a functioning
- 00:28:45system like a city of London could be created over time,
- 00:28:50it evolved.
- 00:28:51The cool thing though is, there are
- 00:28:53some things we can learn if we accept this town planner
- 00:28:56metaphor from the town planners.
- 00:28:58Because they do have rules, they didn't
- 00:29:00say precisely what needed to go where, but they have rules.
- 00:29:03They are talking about say something like a conservation
- 00:29:05area.
- 00:29:06An area where old houses exist and they must stay that way.
- 00:29:10You can see some parks here, these are protected,
- 00:29:13you can't just change them.
- 00:29:14You can't put an industrial factory
- 00:29:17in the middle of a residential area,
- 00:29:19there are these so-called zoning laws.
- 00:29:21But even then, what we've seen over time
- 00:29:24these zoning laws are changing.
- 00:29:26For a while, there was a big segregation.
- 00:29:27Offices in one part of the city and then leafy suburbs
- 00:29:30where people would live.
- 00:29:31We're seeing how as we learn more
- 00:29:34and how fashions change that is also changing.
- 00:29:37Now we're trying to get more apartments back into the area.
- 00:29:40We want to move offices a bit farther out.
- 00:29:42So even though we have rules at a higher level,
- 00:29:45even those rules evolving over time.
- 00:29:48But in the remainder of my talk, I
- 00:29:50want to go a bit more into those rules,
- 00:29:52into what we can learn from the town planners.
- 00:29:54But maybe before I do that, the fourth and final conclusion
- 00:29:58that I want to present, architecture
- 00:30:00is mostly or probably even exclusively
- 00:30:03an ongoing activity.
- 00:30:04It is unlike the building architecture,
- 00:30:07an upfront thing that happens in the construction phase.
- 00:30:10The construction phase of most IT landscapes
- 00:30:13is never finished if you talk about enterprises, if you talk
- 00:30:16about all sorts of other areas.
- 00:30:18Maybe one small niche case that I'm aware of are video games.
- 00:30:23These are sometimes often finished, many of them anyway.
- 00:30:27You write them, you sell them, maybe a few patches,
- 00:30:29downloadable content, but they are mostly finished.
- 00:30:32That's an exception.
- 00:30:33But for most of the IT, and I guess most of you
- 00:30:35work in enterprise IT, I would argue
- 00:30:37that you don't have a construction
- 00:30:39phase like with a skyscraper and then you
- 00:30:41use a phase where that is being used.
- 00:30:45So coming back to this idea of town planning,
- 00:30:49of having a large complex system that evolves over time, that
- 00:30:51adapts to the needs of its users, the inhabitants
- 00:30:54of the city, e-commerce and so on, how would that look like?
- 00:30:58Let's talk about microservices.
- 00:31:01If we talk about architecture, oftentimes you have people,
- 00:31:06you have architects who then say,
- 00:31:07I want to focus on the macroarchitecture.
- 00:31:10And it starts off innocently.
- 00:31:13Somebody says REST, HTTP, JSON, and I talked to you at length
- 00:31:17about what REST does actually mean when
- 00:31:20you talk about implementation.
- 00:31:21But what happens then is OK, the people
- 00:31:23who are writing the microservices
- 00:31:24are saying, well, sure HTTP, JSON,
- 00:31:27we put some end point on our microservices, all done.
- 00:31:31But then the slippery slope starts.
- 00:31:35Then you start getting to pictures like this.
- 00:31:38People are saying I don't care about the microarchitecture,
- 00:31:40well, what's happening inside the microservices?
- 00:31:42Hopefully, they're not building frameworks
- 00:31:44that must be used across all microservices.
- 00:31:47But the architects are then saying,
- 00:31:48I want to look at the macroarchitecture,
- 00:31:50and then categorizations appear.
- 00:31:51Like that service E that I have in here, the ecoservice.
- 00:31:56That's a backend for frontend, because I suddenly
- 00:31:59have a mobile interface and it doesn't
- 00:32:00want to call the different services, like what I told you,
- 00:32:03violating RESTs for example.
- 00:32:05Or we have services G and F, they
- 00:32:07are different type of service, they only provide data
- 00:32:10to other microservices.
- 00:32:11A, B, C, and D are still normal microservices.
- 00:32:14But then we have API gateways, we have the user interface
- 00:32:19layer, and so on.
- 00:32:20And suddenly, the entire debate and the entire argument
- 00:32:23is happening on that level, but in the end
- 00:32:26this is the wrong level because what we really
- 00:32:28care about is implementing business functionality.
- 00:32:31If we get stuck in arguing is this the backend service,
- 00:32:34is service F, should there be purple on the diagram,
- 00:32:37or in this turquoise color?
- 00:32:38Then we're having all these fruitless discussions
- 00:32:40that I guess many of us have been involved In,
- 00:32:42and are so frustrating because we're not solving business
- 00:32:45problems with that.
- 00:32:46We are debating at a high level architectural concerns
- 00:32:49that don't really help us achieve the goals.
- 00:32:51Of course it is aware, I'm not saying
- 00:32:54you should not know what a backend or frontend pattern is.
- 00:32:57I'm not saying you shouldn't talk about reuse of data access
- 00:33:00layers, I understand that.
- 00:33:02What I'm saying is the conversations
- 00:33:04we're having shouldn't be focused around that.
- 00:33:07You should reduce all of that to the minimum background noise.
- 00:33:11You should probably have a guild, you should have people--
- 00:33:13you should have people focusing on architecture that
- 00:33:15are implementing the services.
- 00:33:17They should come together on a given
- 00:33:19cadence, every week, every second week,
- 00:33:22and debate these concerns.
- 00:33:24There's much more to be heard here in that space.
- 00:33:26about what those discussions can look like,
- 00:33:27but it shouldn't be in the foreground,
- 00:33:29it shouldn't be deemed the most important thing.
- 00:33:31The most important thing is to deliver business value,
- 00:33:34not pretty diagrams.
- 00:33:38And ultimately, I could--
- 00:33:39I debated with myself whether to put the sentence on this slide.
- 00:33:42I'm only going to tell you that.
- 00:33:44You should really focus on what you want,
- 00:33:46and that is what your users and your business wants.
- 00:33:49These diagrams focus on how to achieve it.
- 00:33:53That's not unimportant as I said earlier,
- 00:33:55it's not the most important thing, no.
- 00:33:58So how do you focus on what you want
- 00:34:02when it comes to these concerns over how to achieve it?
- 00:34:07And that is the idea that has been crystallized much more
- 00:34:11over recent years, and I would argue very well explained
- 00:34:14in the book some of my colleagues
- 00:34:15have written called Building Evolutionary Architectures.
- 00:34:19And this on the right hand side of the slide
- 00:34:21is their definition of an evolutionary architecture.
- 00:34:23It says it supports guided incremental change
- 00:34:26across multiple dimensions.
- 00:34:27We've talked quite a bit, or I have talked quite a bit,
- 00:34:30about incremental change.
- 00:34:31Across multiple dimensions, I can
- 00:34:33explain easily this is look at performance, look at security,
- 00:34:37look at all the different areas, often, these
- 00:34:40are called the non-functional requirements,
- 00:34:42the cross functional requirements, or sometimes
- 00:34:44for short, the ilities, because most of those words on ility.
- 00:34:48Scalability and so on.
- 00:34:51What I want to focus on going back to the town planning
- 00:34:54metaphor is this word here, guided.
- 00:34:56How do you guide the evolution of a complex system
- 00:35:00assuming you're on board with my idea of saying
- 00:35:02that these systems have to evolve,
- 00:35:04that you can't plan them up front?
- 00:35:07And this is something that Rebecca
- 00:35:09who is one of the co-authors of the book, our CTO,
- 00:35:14is probably not so surprising because she also knows
- 00:35:16about evolutionary computing.
- 00:35:19And what we have there are these so-called fitness functions.
- 00:35:22This is a picture actually from a video game
- 00:35:24but it gives you an idea.
- 00:35:26What people have tried to do is with genetic programming they
- 00:35:29set, there is a fitness function, and on this screen
- 00:35:31you can see several of them.
- 00:35:33At the top you see the budget.
- 00:35:34This bridge you consume or it can
- 00:35:36be built in this model, of course this
- 00:35:38is the only model, for 22,000 game dollars.
- 00:35:43And at the moment you can see the red car,
- 00:35:45creates 64.8% of structural load on the bridge.
- 00:35:49If that reaches 100% the bridge collapses.
- 00:35:51So here we have two fitness functions.
- 00:35:53We are saying it needs to hold the car, it can't collapse,
- 00:35:57and it needs to be cheap, it needs to stay in the budget.
- 00:36:00And what happened is these fitness
- 00:36:01functions were then given in evolutionary computing
- 00:36:04to genetic programming and the algorithm
- 00:36:06would find the best solution.
- 00:36:08And this was actually also used for real world bridges
- 00:36:12and the bridges looked even weirder than that one.
- 00:36:14And people realized there was another fitness function.
- 00:36:16It needs to look trustworthy to human beings.
- 00:36:20But that's beside the point.
- 00:36:21The idea really is you can see in this bridge example,
- 00:36:24there are different fitness functions,
- 00:36:25and sometimes they're contradictory.
- 00:36:27I can make a rock solid super-saver bridge
- 00:36:29but I might exceed the budget.
- 00:36:31The key goal is to find the trade-offs.
- 00:36:33And that's exactly what we see in computer science
- 00:36:35and in enterprise computing as well.
- 00:36:38We have these requirements that are often
- 00:36:41hard to meet at the same time.
- 00:36:43One is easy to meet but multiple at the same time
- 00:36:45can be tougher.
- 00:36:47So this is the definition of evolutionary computing.
- 00:36:51So it's this objective function that
- 00:36:53summarizes how close the design solution is
- 00:36:55to achieving the set of aims.
- 00:36:57As I showed you with the costs, with the budget
- 00:36:59for the bridge as well as the structural integrity.
- 00:37:04We can vary this and say an architectural fitness
- 00:37:08function provides an objective integrity
- 00:37:11assessment of some architectural characteristics.
- 00:37:13And that's what I said, performance, reliability, these
- 00:37:17are the characteristics.
- 00:37:19And I recognize that this sounds awfully abstract.
- 00:37:22I guess the fitness function concept is relatively clear,
- 00:37:24but how do I do this?
- 00:37:25You have these concerns, you have stakeholders
- 00:37:27in your business who say this thing must be up 24/7,
- 00:37:30we want five nines, all these statements that come out.
- 00:37:33How do you get that into a fitness function.
- 00:37:36So I want to spend the next few minutes
- 00:37:38to talk about some fitness functions to give you
- 00:37:40an idea of what they can look like.
- 00:37:41And I've chosen delivered-- there's many, many of them.
- 00:37:44I've chosen the few that give you
- 00:37:46an idea of the breadth to kind of spur
- 00:37:49your imagination a little bit.
- 00:37:52So coupling is an important one.
- 00:37:54We often talk about coupling and layering.
- 00:37:56This can even be and this is a true example, minus, of course,
- 00:38:00the renaming of the packages, this
- 00:38:01can even be done in your code.
- 00:38:04There's jdepend which is a Java-based package that
- 00:38:07allows you to define and you can see that in the top lines here
- 00:38:10the persistence web util they're defined as packages.
- 00:38:15And this is actually looking into your real code,
- 00:38:17into the real implementation.
- 00:38:19And then I can say in the lines further down
- 00:38:21persistence is allowed to depend upon utility
- 00:38:24and web is also allowed to depend on utility.
- 00:38:28Then I'm saying jdepend analyse, this is why it's running,
- 00:38:32and then I'm saying, is it true that my constraints are
- 00:38:37matched.
- 00:38:38And he have a fitness function.
- 00:38:40We have an architectural principle
- 00:38:41that says we don't want a dependency on web
- 00:38:45and persistence, is not allowed.
- 00:38:47But rather than drawing that into a diagram,
- 00:38:49writing it on a wiki, we are putting that
- 00:38:51into a fitness function that I can run as part of my build.
- 00:38:56So here I have a very, very simple,
- 00:38:58very easy to understand fitness function.
- 00:39:00It would be ideal if I could show you 20 of them,
- 00:39:03but time doesn't permit.
- 00:39:04I'll give you a different one.
- 00:39:05This is actually, and I must say this,
- 00:39:07this slide is not my slide, it's purely
- 00:39:09copied from public resources from Apple's Worldwide
- 00:39:12Developers Conference in 2019.
- 00:39:15What Apple does is it allows the authors and the organizations
- 00:39:18behind applications to measure certain things in production.
- 00:39:22And here what we see this is launch time.
- 00:39:25How long does it take to launch a mobile phone,
- 00:39:27a mobile application on your iPhone.
- 00:39:29And the developers do get the data back from Apple.
- 00:39:32And what you can see here is you can see the application
- 00:39:35versions on the bus, from 1.0 to 1.0.8 on the right hand side.
- 00:39:40And they are measuring the launch time.
- 00:39:42And the fitness function here could
- 00:39:44be something the launch time itself
- 00:39:47but you could introduce a threshold
- 00:39:50to say if that goes over 1,500 milliseconds my application is
- 00:39:54not fit for purpose.
- 00:39:55It takes too long and our users will abandon the application.
- 00:39:59So what you're doing then is you're saying,
- 00:40:00I'm measuring an objective thing.
- 00:40:03How long does it take.
- 00:40:04You're not even measuring this in development,
- 00:40:06you're actually measuring this in production.
- 00:40:08You're moving this into production.
- 00:40:10And then you say, OK but isn't that irresponsible, isn't
- 00:40:12that too late?
- 00:40:13You could argue maybe.
- 00:40:15But if it is in a small scale like here,
- 00:40:17you can see oh, we maybe went overboard,
- 00:40:19in the field the application takes too long
- 00:40:21and you can spend the next development
- 00:40:23cycle to actually improve.
- 00:40:24You can put a priority on improving the load
- 00:40:27time, the start up time of the application
- 00:40:29and then hopefully, when version 1.0.9 comes out
- 00:40:32you can actually demonstrate a clear business value, what
- 00:40:35your real users are seeing, that your application is now
- 00:40:38fit up for purpose again.
- 00:40:42Very similarly, resilience.
- 00:40:45Everybody wants to talk about resilience.
- 00:40:47How do your system is resilient?
- 00:40:50You're trying to break it.
- 00:40:51Netflix made available the Simian Army.
- 00:40:53Open source software that allows you to misconfigure and destroy
- 00:40:57instances in your production environment.
- 00:40:59On the right hand side, I've shown
- 00:41:00you something from a software as a service
- 00:41:02system called Gremlin that does something very similar.
- 00:41:05The idea with chaos engineering is to stand by your words.
- 00:41:10To say, I'm not only architecting a resilient
- 00:41:13application, I'm demonstrating to everybody, my stakeholders
- 00:41:16and everybody in production, it is
- 00:41:18OK to kill a few microservices because that's
- 00:41:21what could happen if Amazon loses one region,
- 00:41:24but I demonstrate that it does actually work.
- 00:41:27This is a metaphor for an entire talk,
- 00:41:29if you've not come across the concept I'd strongly
- 00:41:32advise you to read up on it.
- 00:41:34The last example, oops, the last example I want to show you
- 00:41:38is this here.
- 00:41:38Dependency drift.
- 00:41:40Many of us are using open source software packages,
- 00:41:43and I mentioned that earlier, oftentimes published
- 00:41:45by the Silicon Valley giants.
- 00:41:47The CS Angular for example, coming out of Google.
- 00:41:49And oftentimes we are in an enterprise context that
- 00:41:52lives by the enterprise rules.
- 00:41:54But we are taking open source software
- 00:41:55that lives by the Silicon Valley rules
- 00:41:58and that often is a cause problems.
- 00:42:01What I'm seeing here is, this was a real world example again.
- 00:42:05An application that uses version seven of Angular.
- 00:42:08You can see this in many, many different places
- 00:42:10here in the output.
- 00:42:12You can see it uses angular animations,
- 00:42:14current major version used in the engagement is
- 00:42:18version seven made available from Google is version 10.
- 00:42:24If you then look at the documentation,
- 00:42:26you will see the version seven is not really
- 00:42:28supported anymore.
- 00:42:28Google only support-- I mean, this is maybe in edge case,
- 00:42:31but nine and eighth are probably supported better,
- 00:42:34if you were in version six you would definitely
- 00:42:36have a problem.
- 00:42:37So your dependencies are drifting,
- 00:42:39you're drifting behind.
- 00:42:40You don't spend enough time keeping up to date.
- 00:42:42You think, well, we chose version seven when we started
- 00:42:44the project, when we started this product, that was good,
- 00:42:47never change a running system.
- 00:42:49But the internet giants they change
- 00:42:51and they make the improvement and security changes
- 00:42:53only in the newer version.
- 00:42:54So you really-- by accepting their frameworks you
- 00:42:57have to accept their way of working
- 00:42:59and have to stay current.
- 00:43:00If you don't believe me, this is the true output
- 00:43:04from that system and you can see in the top line I'm
- 00:43:06running NPM audit, the node package manager,
- 00:43:09and at the very bottom, you can see
- 00:43:111,854 vulnerabilities found.
- 00:43:14I'm three major versions behind, I'm behind from version 10
- 00:43:17to seven.
- 00:43:18You could argue this is all small fry, doesn't concern me,
- 00:43:21but you see also hopefully in that picture 23 of them
- 00:43:25are high impact vulnerabilities, and one of them
- 00:43:28is enough to cause a major data leak in your business.
- 00:43:32So again, dependency drift says how
- 00:43:34fit your system is to be actually secure running
- 00:43:37into production.
- 00:43:41So, I've shown you coupling, performance, resilience,
- 00:43:45dependency drift, there are many others, I alluded to them.
- 00:43:47Cloud cost, license compatibility,
- 00:43:50there are so many fitness functions you can think about,
- 00:43:52and I think if you will, the role of an architecture team,
- 00:43:56of a team who talks about architectures, maybe
- 00:43:58to think about how he can translate the ideas that you
- 00:44:03have, the business requirements of your systems
- 00:44:06into these fitness functions.
- 00:44:07Like the town planners, they have
- 00:44:09ideas about how the city should evolve
- 00:44:11and they come up with these rules about how
- 00:44:13the town should evolve.
- 00:44:14They're not telling you how to build a building,
- 00:44:16but they're telling you rules that
- 00:44:18can be measured of how the outcome should look like.
- 00:44:22And that brings me to the last thought of this talk.
- 00:44:25Maybe if we talk about architects, maybe architects
- 00:44:30are guides, like that person in the picture here with the hat.
- 00:44:34He's bringing the tourists through the jungle.
- 00:44:37He doesn't carry them across the river.
- 00:44:39And he's probably pointing at a bird or some animal in a tree,
- 00:44:42he's showing them where that animal is
- 00:44:44and it is up to the people to look at it.
- 00:44:46He's not climbing up the tree, carrying down the bird
- 00:44:49and holding it in front of them.
- 00:44:50The architects should not be, and unfortunately I've
- 00:44:53heard this, they're not parents, they're not
- 00:44:54protecting the people.
- 00:44:55I think they should guide them.
- 00:44:57And I really honestly believe these ideas of fitness function
- 00:45:00in an evolving architecture are the closest
- 00:45:03we've gotten to, to that image.
- 00:45:05To that idea of guiding people to do the right thing,
- 00:45:08but guiding the people who are up to their neck
- 00:45:11in the actual implementation to guide
- 00:45:13them to do the right things.
- 00:45:16And that is my overall summary.
- 00:45:25Thank you so much, Eric.
- 00:45:28I truly enjoy your analogies.
- 00:45:30Wow.
- 00:45:31Next time if someone asks me what is architect,
- 00:45:35I have a lot of resource to answer,
- 00:45:37and I love your analogies for sure.
- 00:45:40And what a coincidence, today actually in Singapore
- 00:45:43we are having these [INAUDIBLE] discussions, talking
- 00:45:46about all the titles, where we are saying we
- 00:45:50don't have to put our official title in your name card
- 00:45:53and what are some of the interesting thing
- 00:45:55we like to put our name card.
- 00:45:57So from gardeners to coding architects
- 00:46:00to guides, wow, so many inspirations.
- 00:46:03And I really love how you go down
- 00:46:06to the core reality of what exactly
- 00:46:09we are doing as architect and tear off all the prestige
- 00:46:14layers on top of it.
- 00:46:15Thank you so much for this show Eric.
- 00:46:19I really, really enjoyed it.
- Software Architecture
- Agile Values
- Gardening Metaphor
- Fitness Functions
- Ongoing Evolution
- User Experience
- Architects
- Software Development
- Complex Systems
- Guidance