niedziela, czerwca 28, 2015

Architektura

Od półtora roku pracuję w "prawdziwym Agile".
Działa to całkiem nieźle (nawet w sytuacji gdy jeden z kluczowych ludzi w procesie nie robił swojej roboty to team był w stanie robić dobry produkt), ale jak na razie były to małe aplikacje, albo architektura była już wcześniej ustalona.
Dlatego zastanawiam się jak powstaje architektura w Agile?

Kiedy powinna zapadać decyzja co do tego, że będziemy stosowali microservice'y, albo monolit?
Albo jak powstaje architektura w takich produktach jak Chrome?

Na "czuja" wydaje mi się, że to jest gdzieś na początku projektu, a później team porusza się tylko w obszarze bliskiego sąsiedztwa od tej nadanej architektury.
Jeśli np. uzna się, że używamy microservice'ów to później team tylko ogranicza się do dzielenia funkcjonalności na microservice'y.
Trudno jest ewolucyjnie dojść do przejścia na monolit (chociaż z microservice'ów do monolitu chyba dużo łatwiej przejść niż w drugą stronę).
W takim Chrome'ie znów decyzja dotycząca tego, że każda tabka (albo zestaw tabek ;-)) ma swój oddzielny proces zapadła na samym początku. W Firefoksie mieli straszne problemy z przejściem na taką architekturę i w końcu odpuścili.

Czyli co? W Agile najważniejsze decyzje architektoniczne podejmuje się na początku projektu?
To się jednak kłóci z całą ideologią "emergentnej" architektury.

Trudno ewoluować architekturę, w biologii się da bo każdy organizm (bardziej złożony) przechodzi przez embriogenezę gdy jest budowany. Produkt w IT istnieje, kod istnieje, bazy istnieją, nie są tworzone przy każdej iteracji w procesie embriogenezy.

Może więc decyzja o podejściu microservice'owym to nie jest decyzja architektoniczna? Może to jest "metaarchitektura"?
Może wybór podejścia microservice'owego odbywa się na początku i jest wyborem, który pozwala bardziej agilowo podchodzić do problemu?

Ktoś ma jakieś pomysły? Albo lektury?
A najlepiej doświadczenie? ;-)


Podobne postybeta
Takie tam przemyślenia i refleksje ;-)
A może niepotrzebnie aż tyle śpimy?
Dziwna sprawa
Jak to rzeczy proste okazują się trudnymi ;-)
Jak szybciej znaleźć mniejszą i większą wartość? [opisowy tytuł, który niewiele mówi ;-)]