Every software application has an architecture, regardless of whether the project team has a designated architect.
And every team has a guiding architect, regardless of their designation.

Somebody needs to establish and nurture it. Ignoring this imperative leads to spagheti systems - non-maintainable and brittle. Many of us working in software delivery teams do what can be called ‘architectural work’, without having the labels (designation). And most software projects will have a small set of senior developers who create a workable architecture - whether they document it or not.
So architecture is as much a skill, as it is a role.

While all of that goes into creating an application, the underlying principles that guide the architecture need to be informed by business requirements.

When architectural decisions are technology-driven, it is largely owing to (Enriquez, 2018) :

  1. Familiarity: wanting to stay in the comfort zone of what one already knows
  2. Resume imperatives: wanting to brandish the latest technology in one’s skillset

What is Software Architecture

At a conceptual level, architecture is simple: you apply patterns, create perspectives, etc. However, reality is complex: you release a product and entropy takes over.

Similarly, dev teams face day-to-day struggles from opposing pulls of speed, quality, cost, etc.

(Fowler, 2002) paraphrases a now widely mis-interpreted post by Ralph Johnson:

‘architecture is subjective, a shared understanding of a system’s design by the expert developers on a project - in the form of the major system components and how they interact.
It’s about the decisions that developers wish they could get right early on, because they’re perceived as hard to change. In the end, architecture boils down to the important stuff - whatever that is.’

Most contexts reduce this simplisticaly to the following, without attribution, highlighting the dangers of quoting out of context:

‘architecture is the stuff that is hard to change - the important stuff - whatever that is’

This leads to the urban myth that architecture is inherently hard to change - something that doesn’t dovetail with agile.

Architecture:

The goal of architecture is to enable early and continuous delivery of business value from the software being developed.

Why create one?

Architectural Styles

APIs

Glossary

Artefacts: architecture deliverables such as models, templates

References

  1. Enriquez, A., R. & Salazar. (2018). Software Architecture with Spring 5.0. Packt.
  2. Fowler, M. (2002). Patterns of Enterprise Application Architecture. Addison-Wesley.