Wpis z mikrobloga

W swojej pracy jako #programista15k zarówno ja jak i koledzy z pracy często napotykamy problem konfiguracji środowiska programistycznego w nowym projekcie. Często żeby uruchomić lokalnie projekt rozwijany przez inny team trzeba upewnić się, że mamy zainstalowaną odpowiednią wersję interpretera/kompilatora, różnych bibliotek, jakichś narzędzi pomocniczych. Dodatkowo trzeba te narzędzia skonfigurować wg specyficznych potrzeb danego projektu, być może wkleić w terminalu różne "mantry" dotyczące połączenia się z usługami/providerami cloudowymi. Nawet gdy plik README w repozytorium zawiera te wszystkie instrukcje to ich wykonanie zabiera mimo wszystko czas, a i wtedy zdarza się, że instrukcje przestają być aktualne i trzeba prosić o pomoc kogoś, kto w tym projekcie już wcześniej uczestniczył. To wszystko zabiera cenny czas i często powoduje frustracje, bo zamiast pisać kod walczymy przez ileś godzin z narzędziami.

Spotkaliście się w swojej pracy z podobnymi problemami? Zdaję sobie sprawę, że można je rozwiązać poprzez większy rygor w kwestii dokumentacji, użycie maszyn wirtualnych, Dockera, Vagranta lub też przez samodzielne pisanie skryptów konfigurujących projekt, ale chodzi nam po głowie stworzenie narzędzia, które by to ułatwiało bez potrzeby marnowania zasobów na te rzeczy. Czy uważacie, że jest to coś, co by Wam się przydało w codziennej pracy?

Jeśli masz 2 minuty to wypełnij proszę krótką ankietę na ten temat: https://forms.gle/TUXxxg6GgYf6PGWF9 Dzięki temu będziemy wiedzieli, czy w ogóle jest sens się za coś takiego brać ( ͡° ͜ʖ ͡°). Jeśli okaże się, że jest zapotrzebowanie to zawołam plusujących gdy już coś faktycznie powstanie.

#programowanie #webdev
  • 9
@WhiskyRomeo: Docker, szczególnie na makach, jest dość zasobożerny (tym bardziej jeśli masz odpalonych w nim wiele różnych rzeczy) i ma nie od dziś spore problemy z wydajnością. Jeśli przykładowo pracujesz nad aplikacją frontendową w JS i chcesz mieć hot module reload, to musisz podmontować cały katalog projektu jako wolumen dockerowy, ale wtedy wywołanie npm/yarn zajmuje kilkukrotnie dłużej niż natywnie. Są na to hacki (docker normalnie nie pozwala na exclude tylko
@maver: możesz zrobić prosty skrypt bash/powershell który za rączkę poprowadzi i ustawi odpowiednie zmienne środowiskowe i poinstaluje co potrzeba, ale problem jest taki że ktoś to musi później utrzymywać i nagle dowiadujesz się że ostatnia zmiana skryptu była 2 lata temu podczas gdy projekt jest na bieżąco rozwijany. Wszystko zależy od projektu, budżetu, podejścia firmy.
@Bellissimo:

ale problem jest taki że ktoś to musi później utrzymywać


Otóż to. I praktyka pokazuje, że niestety bardzo często tego rodzaju skrypty pisane "z łapy" bardzo szybko się dezaktualizują, bo programiści są leniwi (wiem z doświadczenia ( ͡° ͜ʖ ͡°)) i nie chce im się utrzymywać rzeczy, których nie muszą utrzymywać.

Mam w głowie pewien pomysł jak można by ten problem rozwiązać, ale jest to dość
@laki1:

robisz npm install i masz to co powinno być


W idealnym świecie tak to działa, ale rzadko kiedy wszystko jest idealnie. Nigdy nie spotkałeś się z tym, że na przykład wersja Node na Twojej maszynie była nie ta, bo jakaś paczka wymagała konkretnej? Albo projekt wymagał uruchomienia jakiegoś innego serwisu, redisa, bazy danych, ustawienia prywatnego repozytorium NPM czy innych tego typu rzeczy? To wszystko wydaje się oczywiste jak już pracujesz
Zdaję sobie sprawę, że można je rozwiązać poprzez większy rygor w kwestii dokumentacji, użycie maszyn wirtualnych, Dockera, Vagranta lub też przez samodzielne pisanie skryptów konfigurujących projekt, ale chodzi nam po głowie stworzenie narzędzia, które by to ułatwiało bez potrzeby marnowania zasobów na te rzeczy.


@maver: powodzenia, jakby to było możliwe, to nikt nie robiłby tego co napisałeś wyżej. Jak napiszesz swoje narzędzie to będzie pewnie działało na twoim systemie i dla
@maver: Nie za bardzo to rozumiem. Pracuje na ogromnym projekcie na maku wszystko w kontenerach dokerowych. Wszystkie wymagane zewnętrzne aplikacje również. Katalogi z kodem montują sie ze ścieżki z pliku env. Ze stoperem w ręku odpalenie doker-compose przez kogoś innego a potem npm run hot nie powinno trwać więcej niż 10 minut.