3 Software architecture: what is it, why does it matter and who does it?

 

This chapter covers

  • The definition of software architecture
  • Why architecture is important
  • The concept of architectural styles
  • Defining an architecture and who does it

Software architecture is a crucial aspect of software development. A lot of time and attention is devoted to architecture. Organizations are filled with architects and developers aspiring to become architects. There are conferences that dedicate entire tracks to must-know architectures. Yet, for all this focus, surprisingly little attention is given to what software architecture truly is and the discipline that underpins it.

This gap in understanding becomes particularly important when using the microservice architecture. Before we can effectively apply the microservice architecture — when and how to use it — we need a solid foundation in architecture fundamentals. That means stepping back to examine core concepts — after all, without this understanding, you risk repeating the mistakes of the FTGO organization, as described chapter 2.

3.1 What is software architecture and why does it matter?

3.1.1 An application as a black box

3.1.2 Software architecture: a way to reason about your application

3.1.3 Why architecture matters

3.2 Software architecture is multidimensional

3.2.1 Domain view

3.2.2 Component view

3.2.3 Deployment view

3.2.4 Build view

3.2.5 +1 Scenarios

3.3 Overview of architectural styles

3.3.1 Layered architecture

3.3.2 About the hexagonal architecture style

3.4 Architecting: what is it, who does it and when?

3.4.1 Architecture as a series of design decisions

3.4.2 Who defines an application’s architecture?

3.4.3 When to architect?

3.5 Summary