W nowej pracy startuje relatywnie nowy projekt, zapytałem więc jak podchodzimy do odpalenia aplikacji lokalnie, czy przygotujemy jakiegoś docker-compose
, czy przynajmniej jakieś readme? Wiem, że w greenfieldzie to nie jest aż taki problem jak w legacy, ale zdarzyło mi się spędzić dosłownie 2 dni żeby uruchomić jakiegoś klocka napisanego przez niemieckich architektów, który do działania potrzebuje 100 zewnętrznych zależności, które nie są nigdzie opisane. W każdym razie, odpowiedź mojego nowego teamu mnie zaskoczyła, zapytali "ale po co uruchamiać aplikacje lokalnie?". Odpowiedziałem, że chociażby po to by po skończonym developmencie przetestować manualnie to co się zrobiło, czy też zobaczyć czy spring w ogóle wstaje z takim a nie innym configiem. Odpowiedź na to brzmiała "my mamy dobre testy, nie musimy aplikacji już odpalać". Chwilę jeszcze przedyskutowaliśmy temat, ale generalnie moje argumenty nie miały dla nikogo sensu.
Efekt? Aplikacje są wdrażane na deva i nie działają, bo testy mimo wszystko nie są idealne, wiele przypadków jest jednak pominiętych i to wychodzi dopiero gdy ktoś przejdzie po takim API od A do Z. Często są różnice między propertiesami w testach a na środowisku przez co aplikacja działa po prostu inaczej (flyway.enabled: true/false
). Mało tego, wychodzą nawet takie błędy jak zła konfiguracja beanów, przez co spring w ogóle nie wstaje. Tutaj według mnie prawdziwy hit - komuś nie wstawał spring, zamiast zainstalować lokalnie / uruchomić obraz o ile pamiętam, elasticsearcha i wtedy po prostu kliknąć shift + F10
, to ta osoba wolała commitować 1 linijkowe zmiany i odpalać je w CI/CD. W efekcie potrzeba było 5 czy 6 takich commitów.
Pytanie wiec, jak to u Was wyglada? Tez uważacie że testy automatyczne są wystarczające? Czy jednak przed commitem uruchamiacie lokalnie efekty swojej pracy?