Projektowanie (design) vs. architektura (architecture) [Head First – Software Architecture]

Decyzje projektowe możemy przypisać do tych bardziej projektowych i tych bardziej związanych z architekturą. Przykładowo wybór stylu (mikro usługi czy monolit) będzie decyzją bardziej architektoniczną. Z drugiej strony zmiana pozycji przycisku w interfejsie użytkownika będzie decyzją projektową.

Trochę więcej przykładów

ArchitekturaPomiędzyProjektowanie
Decyzja o użyciu bazy grafowejWybór frameworka dla front-enduWybór biblioteki parsującej pliki XML
Migracja do mikro usługRozbijanie serwisuRozbijanie klasy

Ale po co mi to?

Po to, żeby wiedzieć kto ma podjąć decyzję odnośnie systemu – czy mogę sam to zrobić jako programista (projektowanie) czy może powinienem biec do architekta aplikacji (architektura).

Jak mogę sobie pomóc w określeniu?

Istnieje kilka strategii pomagających z ustaleniu czy decyzja jest bardziej architektoniczna czy projektowa:

Decyzja strategiczna czy taktyczna

Decyzje strategiczne to te długoterminowe. Taktyczne są raczej krótkoterminowe. A więc im bardziej strategiczna jest decyzja tym bardziej przynależy do decyzji architektonicznych. Jeśli chodzi o decyzje taktyczne, to najczęściej należą do dziedziny projektowania.

Pomocnicze pytania:
1. Jak dużo czasu potrzebujesz na podjęcie danej decyzji (im dłużej, tym bardziej strategiczna)?
2. Jak dużo ludzi potrzeba do podjęcia decyzji (im więcej, tym bardziej strategiczna)?
3. Czy decyzja dotyczy czegoś co będzie przez długi czas z nami, czy raczej czegoś na chwilę (jeśli to pierwsze to mamy do czynienia z decyzja strategiczną)?

Decyzja wymaga dużo lub mało wysiłku

Przykładowo przejście z architektury warstwowej do mikro usług będzie wymagało dużo czasu i będzie to przez to decyzja bardziej strategiczna. Z drugiej strony zmiana nazwy klasy będzie wymagała (zazwyczaj) nie dużo wysiłku, stąd będzie to decyzja bardziej projektowa.

Decyzja wymaga dużych lub małych kompromisów

Przykładowo rozbicie klasy na mniejsze będzie powodowało powstanie kilku mniejszych. Ten kompromis wydaje się być mały – decyzja bardziej projektowa. Z drugiej strony wybór architektury mikro usług będzie dawał: skalowalność, elastyczność… ale z drugiej strony mamy: koszty, złożoność, wydajność… No i te wyglądają na poważniejsze kompromisy – decyzja bardziej architektoniczna.

Warto zajrzeć

1. Cztery wymiary architektury [Head First – Software Architecture]

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *