Temat: Czy praca z .Net czasem męczy tak jak praca z PHP/Linux ?
Marcin M.:
Zgoda - da się wszystko rozwiązać, ale niespodzianki typu 'linux nie wstał po aktualizacji',
1. ZAWSZE, ale to bezwzględnie ZAWSZE należy mieć środowisko testowe i produkcyjne. Oba dobrze odizolowane od siebie, na osobnej maszynie, czasem nawet w osobnej sieci (bo puścisz omyłkowo skrypt nie na tej bazie co trzeba, bo nie zmieniłeś IP serwera itp., bo wirus, bo włamanie, itd.)
Produkcyjne jest święte. Na testowym można się bawić.
Dotyczy to zresztą nie tylko programowania, bo w mojej działce (analiza danych w badaniach klinicznych), gdzie powstają skrypty i raporty.
Właśnie przygotowuję na piątkową konferencję prezentację n/t przygotowania środowiska pracy dla biostatystyka. Będę poruszał m.in. i te zagadnienia - aktualizacje, biblioteki procedur statystycznych (coś jak DLL), "piekło zależności i wersji", uszkodzenia sprzętu i wszystkie te nieszczęścia, które spędzają sen z powiek. A ja muszę mieć wszystko "pod parą" 24/7. Dlatego bardzo poważnie podszedłem do tych kwestii i okazało się, że da się tu wiele zdziałać.
2. Do realizacji pkt1. świetnie nadają się maszyny wirtualne. W obecnych czasach, przy obecnych mocach maszyn i cenach RAMu, można spokojnie mieć wszystko zwirtualizowane.
Maszyna wirtualna z kompletem softu + backup przyrostowy w chmurze na osobnej maszynie (może być "lokalna" np. na lsyncd+rsync, może być zdalna - DropBox, OneDrive + TrueCrypt dla bezpieczeństwa) + repozytorium kodu + zdalny dostęp po VPN (gdybyś musiał pracować zdalnie) to podstawa.
Do niektórych z tych zadań świetnie nadadzą się właśnie takie tanie komputerki jak wspomniane już RPi, 150zł, a uciągnie SVN, lsyncd i parę innych rzeczy dla niewielkiego zespołu.
Dodatkowo VM zapewnia spójne środowisko dla całego zespołu - raz przygotowujesz maszynę, każdy sobie ją kopiuje i macie to samo. Są do tego nawet specjalne narzędzia:
3. W poważnej pracy NIGDY nie aktualizuje się wszystkiego jak leci, bo potem kończy się tak, że jakaś pierdoła położy Ci projekt za pięć dwunasta, bo Linux nie wstaje, bo IDE się nie włącza, bo właśnie zmienił się interfejs biblioteki.
Zamraża się wersje wszystkiego, co się ma, od serwera i bazy danych po najmniejszą bibliotekę użytą w projekcie. Taka jest idea chociażby Debiana (stable - Wheezy). Tak się postępuje w poważnie prowadzonych projektach, gdzie wpadka z powodu "bo się zaktualizowało i nie wstaje" oznacza kary umowne, a co najmniej utratę prestiżu i kupę stresu.
Aktualizacje przeprowadza się zawsze na środowisku testowym i to nie oryginalnym, tylko na jego kopii, by w razie problemów błyskawicznie wyrzucić je do kosza i przywrócić nowe. Jak masz je na wirtualce, to po prostu kopiujesz plik VHD, VBox czy tam inny i jedziesz z robotą.
Aktualizacji nie robi się wszystkich na raz. Po aktualizacjach bibliotek przeprowadza się gruntowne testy. Przydają się odpowiednie techniki projektowania ułatwiające zachowanie kompatybilności wstecznej, gdyby coś zawiodło, np. wzorce strategii i modułów - pluginów (nie działa ta wersja na tym libie, to wracamy do starej bez "revertowania" MB kodu).
Po prostu zastanawia mnie czy pracując z .Net również występuje wysokie prawdopodobieństwo natrafiania na takie miłe niespodzianki (pomijając fakt, że z pewnością .Net ma inne swoje przyległości).
ASP.NET, podobnie jak PHP, to stabilne rozwiązaniach, wykorzystywane w rozwiązaniach rangi korporacyjnej. Ale - i pisał to już Sebastian - możesz dołożyć cudzy komponent, który roz....li wszystko w drobny mak.
A zatem - warsztat. Zanim podejmiesz decyzję, że czegoś używasz, SPRAWDŹ TO. Nigdy nie sięgaj po komponent, którego nie testowałeś. Jak znajdziesz coś nowego a fajnego, napisz prosty projekt, w którym to coś przetestujesz. Inaczej grasz w rosyjską ruletkę.
Dariusz R.:
też nie mam zaufania do Linuxa, bo faktycznie może sprawiać problemy ale one wynikają raczej z nieznajomości tego systemu,
"Od zawsze" byłem fanem Windows, bo są dla mnie naturalne (bo je znam od Windows 3.0), bo je lubię, bo upraszczają wiele rzeczy, bo wszystko mi ze sobą "gada" (zwłaszcza od czasów .NETa, na którym stoi już wszystko co pod Windows), ale to właśnie Linuksowi (a konkretnie Debianowi i CentOSowi) ufam jak żadnemu Windowsowi. Niestety, trzeba go dobrze poznać - ale to jak wszystko.
Ten post został edytowany przez Autora dnia 15.10.14 o godzinie 17:34