Rozmawiał z kimś o dodaniu kodu inicjalizacyjnego podczas uruchamiania aplikacji i narzekał, że powoduje to wydłużenie czasu uruchamiania. Naprawdę nie mógł podać powodu (przeczucie lub coś w tym rodzaju, nie wiem). To nie jest aplikacja do intensywnego użytku i zaczyna się za około minutę, wdrażamy kilka razy w roku.
Pamiętam, jak jakiś czas temu czytałem takie porady na pytania dotyczące SO, ludzie zalecający zainicjowanie podczas uruchamiania zamiast dostępu do strony z pieczęcią „jeśli możesz sobie pozwolić na karę”.
Pracowałem z aplikacjami internetowymi, które zaczęły się od 30 sekund do 4-5 minut, ale po uruchomieniu działały.
Więc czego mi brakuje? Chyba że jest to tak ważna aplikacja jak ... nie wiem ... dla rynku finansowego, aplikacji medycznych, eksploracji kosmosu itp., Czy to naprawdę tak ważny czas uruchamiania?
PS Mam na myśli wyłącznie aplikacje internetowe, aplikacje na komputery muszą zacząć błyskawicznie.
źródło
Odpowiedzi:
Może to być duży czynnik podczas programowania: jeśli twoja platforma nie obsługuje zmiany kodu w uruchomionej aplikacji, czas uruchamiania staje się częścią cyklu sprzężenia zwrotnego, a nawet 30 sekund jest bolesne i zagraża wydajności.
Dla środowiska produkcyjnego to naprawdę nie ma znaczenia; albo niewielkie przestoje są dopuszczalne, a 5 minut to wciąż niewiele, albo nie, i trzeba wprowadzić jakieś przełączenie na żywo.
źródło
Sądzę, że dzieje się tak, gdy słynna dialektyczna zasada Hegla dotycząca przejścia od ilości do jakości faktycznie działa.
Widzisz, czas jest zawsze ważny. Zgadzam się ze słowami Michaela Borgwardta na temat znaczenia szybkiego budowania podczas programowania / testowania, ale nalegam, że (może być w inny sposób) jest również bardzo ważny dla produkcji.
Każdy programista, który wdrożył jakiś zły kod do produkcji, wie, że poprawka udostępniona w ciągu 5 minut i 1 minuty to naprawdę bardzo różne rzeczy.
źródło
Prawdziwe pytania dotyczą tego, czy aplikacja będzie działać bez inicjalizacji. Mamy nowych pracowników, którzy mają obsesję na punkcie „wydajności”, moja odpowiedź brzmi: nie obchodzi mnie, jak szybko dajesz złe wyniki. IMHO skraca rogi, algorytmy zniekształcania, ponieważ „tak będzie szybciej”, a inne świetne pomysły wprowadzają tylko błędy.
Jeśli wymagana jest inicjalizacja, zrób to. Ile czasu zostanie zmarnowane, gdy użytkownicy końcowi uzyskają błędne wyniki, ostatecznie stwierdzą, że aplikacja internetowa jest niewłaściwa, zadzwonią i złożą skargę, a Ty będziesz musiał wrócić i debugować / naprawić / przetestować / wdrożyć ponownie? teraz zapytaj kolegę, jak zaoszczędzono czas. (założę się, że i tak rdzenie serwera są w 99% bezczynne)
źródło
To pytanie nie dotyczy żadnej konkretnej platformy. Istnieją platformy, na których czas uruchamiania jest naprawdę bardzo ważny.
Na przykład w Google App Engine; jeśli twoja strona nie jest uzyskiwana (lub raczej jest uzyskiwana rzadziej niż inna aplikacja w tym samym węźle), zostanie ona od czasu do czasu rozładowana.
Tak więc, jeśli masz 99% niższej częstotliwości dostępu do witryny, to czas uruchomienia to czas dostępu; twoja aplikacja jest restartowana przy prawie każdym dostępie. jeśli są w top 1%, a następnie aplikacja jest podręczny się na wielu węzłach i chociaż wiele dostępów strona powróci z już rozpoczął przykład, niektórzy nadal nie będzie, a więc musisz przerywany, długi czas dostępu .
To samo dotyczy wielu innych środowisk hostingowych. Wycieki w bibliotekach stron trzecich, a nawet we własnym kodzie, które po prostu wymknęły się wykryciu, mogą oznaczać, że jedynym niezawodnym sposobem na uruchomienie usługi sieci Web jest przeładowanie jej co tyle żądań (często od 100 do 10 000), i tak dalej czas uruchomienia jest często opłacany. Używanie tego wzorca jest dopuszczalne, gdy aplikacja jest nieszczelna, ale uruchamia się szybko; jest to niewykonalne, gdy uruchomienie aplikacji trwa dłużej niż kilka sekund.
źródło
Ryzykujesz, że Twoja aplikacja zostanie uznana za niespełniającą standardów lub jeszcze gorzej, twoją zdolność do programowania. Teraz ta aplikacja może zaoszczędzić komuś tyle czasu i / lub wykonać tak potrzebne zadanie, że wdzięczni użytkownicy mogą spojrzeć poza długi start.
Programowanie w taki sposób, aby leniwie ładować aplikację, może potrwać dłużej, ale tylko interesariusze mogą ustalić, czy warto. Miałem raport, który trwał 55 sekund. i obniżyliśmy do 35. Nikt tego nie zauważył. Chociaż spędziłem dwa razy więcej czasu na zdobyciu go z 35 do 18 lat, wszyscy zauważyli i byli wdzięczni i pod wrażeniem. Przejście od 5 do 3 minut w przypadku aplikacji używanej kilka razy w roku nie jest wielkim problemem. Użytkownicy będą mieli mniej czasu na spędzanie na Facebooku lub kupowanie kawy.
Percepcja jest kluczem. Jeśli zespół nie jest zadowolony z zespołów programistów w ogóle, a konkretnie z tej aplikacji, możesz zbudować dobrą wolę i przyspieszyć.
źródło