Ist die Startzeit der Webanwendung wirklich so wichtig?

11

Hatte ein Gespräch mit jemandem über das Hinzufügen von Initialisierungscode beim Start der Anwendung und er beschwerte sich darüber, was zu einer Verlängerung der Startzeit führte. Er konnte nicht wirklich einen Grund angeben (Bauchgefühl oder so, weiß nicht). Dies ist keine stark beanspruchte Anwendung und startet in ungefähr einer Minute. Wir stellen sie einige Male im Jahr bereit.

Ich erinnere mich, dass ich vor einiger Zeit solche Ratschläge zu Fragen zu SO gelesen habe. Leute rieten, beim Start statt beim Zugriff auf die Seite mit dem Stempel "Wenn Sie sich die Strafe leisten können" zu initialisieren.

Ich habe mit Web-Apps gearbeitet, die von 30 Sekunden bis 4-5 Minuten gestartet sind, aber als sie online waren, haben sie gerockt.

Also, was vermisse ich? Ist die Startzeit wirklich so wichtig, es sei denn, es handelt sich um eine wichtige Anwendung wie ... ich weiß nicht ... für den Finanzmarkt, medizinische Anwendungen, Weltraumforschung usw.?

PS Ich beziehe mich ausschließlich auf Web-Apps. Desktop-Apps werden blitzschnell starten.

JohnDoDo
quelle
Gibt es eine nicht funktionale Anforderung für den Start der Anwendung oder ist dies nur eine Diskussion innerhalb der Entwicklung?
StuperUser
@StuperUser: keine Voraussetzung, nur eine Diskussion bisher.
JohnDoDo
Es gibt tatsächlich eine User Experience- Site, auf der dies besser abgefragt werden sollte.
Cyclops
@Cyclops: Ich interessiere mich eigentlich mehr für die Gründe auf der Serverseite des Zauns, nicht von der Benutzerseite.
JohnDoDo

Antworten:

18

Dies kann während der Entwicklung ein wichtiger Faktor sein: Wenn Ihre Plattform das Ändern von Code in einer laufenden Anwendung nicht unterstützt, wird die Startzeit Teil Ihres Feedback-Zyklus, und selbst 30 Sekunden sind schmerzhaft und gefährden die Produktivität.

Für die Produktionsumgebung spielt es wirklich keine Rolle; Entweder ist eine kleine Ausfallzeit akzeptabel und 5 Minuten sind immer noch nicht viel, oder es ist nicht so, und Sie müssen eine Art Live-Umschaltung implementieren.

Michael Borgwardt
quelle
Ja, ich habe genau so viel über den Entwicklungszyklus nachgedacht, aber es ist nicht so, dass wir ein Komma ändern, bereitstellen, einen Variablennamen ändern, bereitstellen usw. Ich persönlich stelle bei der Entwicklung maximal 10 Mal pro Tag bereit. Eine Minute Start oder 1.2 ist kein so großer Unterschied.
JohnDoDo
7
@JohnDoDo: Wie viel davon ist wirklich ein natürlicher Workflow und wie viel davon wird gewöhnlich eine langwierige Bereitstellung vermieden? Ein schneller Feedback-Zyklus kann die Produktivität enorm steigern. Manchmal ist es genau das, was Sie brauchen, kleine, inkrementelle Änderungen vorzunehmen und das Ergebnis sofort zu sehen. Vor 50 Jahren haben die Leute Programme auf Papier geschrieben, sie einem Bediener vorgelegt und am nächsten Tag ein gedrucktes Ergebnis erhalten - manchmal nur ein Compilerfehler. Scheint Ihnen das nicht eine schrecklich ineffiziente Art zu arbeiten? Vielen Programmierern scheinen Ihre 10 Bereitstellungen pro Tag einfach so zu sein.
Michael Borgwardt
1
Wenn möglich, prüfen Sie die Option, einen "Mock" -Init durchzuführen oder die Strukturen mit Testdaten auf die Festplatte zu serialisieren, um die Startzeiten während der Entwicklung zu beschleunigen.
Vinko Vrsalovic
Ich stimme Vinko zu. Gibt es eine Möglichkeit, die kostspieligen init () - Funktionen zu deaktivieren, wenn Sie im Debug-Modus erstellen? Machen Sie sich keine Sorgen, wenn das, was Sie initialisieren, zu unterschiedlichen Ergebnissen bei Entwicklung und Produktion führt.
AndyMcKenna
4

Ich glaube, dass dies der Fall ist, wenn Hegels berühmtes dialektisches Prinzip des Übergangs von Quantität zu Qualität tatsächlich funktioniert.

Sie sehen, das Timing ist immer wichtig. Ich stimme Michael Borgwardts Worten über die Wichtigkeit eines schnellen Builds während der Entwicklung / des Testens zu, aber ich bestehe darauf, dass es (möglicherweise auf andere Weise) auch für die Produktion sehr wichtig ist.

Jeder Entwickler, der fehlerhaften Code für die Produktion bereitgestellt hat, weiß, dass Hotfixes, die in 5 Minuten und in 1 Minute bereitgestellt werden, wirklich, wirklich verschiedene Dinge sind.

shabunc
quelle
2

Die eigentliche Frage ist, ob die App ohne die Initialisierung funktioniert. Wir haben neue Mitarbeiter, die von "Leistung" besessen sind. Meine Aktienantwort lautet: Es ist mir egal, wie schnell Sie die falschen Ergebnisse erzielen. IMHO Abstriche machen, Algorithmen entstellen, weil "es auf diese Weise schneller wird" und andere großartige Ideen nur Fehler einführen.

Wenn die Initialisierung erforderlich ist, tun Sie dies. Wie viel Zeit wird verschwendet, wenn die Endbenutzer die falschen Ergebnisse erhalten, schließlich herausfinden, dass die Web-App falsch ist, Sie anrufen und sich beschweren und Sie zurückgehen und debuggen / reparieren / testen / neu bereitstellen müssen? Fragen Sie jetzt Ihren Kollegen, wie viel Zeit gespart wurde. (und ich wette, Ihre Server-Kerne sind sowieso zu 99% inaktiv)

jqa
quelle
2

Diese Frage bezieht sich nicht auf eine bestimmte Plattform. Es gibt Plattformen, auf denen die Startzeit wirklich sehr wichtig ist.

Zum Beispiel in Google App Engine; Wenn auf Ihre Seite nicht zugegriffen wird (oder weniger häufig als auf eine andere Anwendung auf demselben Knoten), wird sie gelegentlich entladen.

Wenn Sie also in der unteren 99% der Website - Zugriffshäufigkeit sind, dann Startzeit ist die Zugriffszeit; Ihre Anwendung wird bei fast jedem Zugriff neu gestartet. wenn Sie sind in dem Top 1%, dann Ihre Anwendung der ersten Schritte auf vielen Knoten auf, und obwohl viele Seitenzugriffe von einer bereits gestarteten Instanz zurück, einige werden noch nicht, und so werden Sie intermittierende haben, lange Zugriffszeiten .

Dasselbe gilt für viele andere Hosting-Umgebungen. Lecks in Bibliotheken von Drittanbietern oder sogar in Ihrem eigenen Code, die sich einfach der Entdeckung entzogen haben, können dazu führen, dass der einzige zuverlässige Weg, Ihren Webdienst auszuführen, darin besteht, alle so vielen Anforderungen (häufig zwischen 100 und 10.000) neu zu laden Die Startzeit wird häufig bezahlt. Die Verwendung dieses Musters ist akzeptabel, wenn eine App undicht ist, aber schnell gestartet wird. Es ist nicht funktionsfähig, wenn der Start der App länger als ein paar Sekunden dauert.

SingleNegationElimination
quelle
1

Sie laufen Gefahr, dass Ihre Anwendung als unterdurchschnittlich oder noch schlimmer als Ihre Entwicklungsfähigkeit eingestuft wird. Diese App spart möglicherweise jemandem so viel Zeit und / oder erledigt eine so benötigte Aufgabe, dass die dankbaren Benutzer über den langen Start hinausblicken können.

Es kann länger dauern, das Programm so zu programmieren, dass die App träge geladen wird, aber nur die Stakeholder können feststellen, ob es sich lohnt. Ich hatte einen Bericht, der in 55 Sekunden lief. und wir haben es auf 35 gebracht. Niemand hat es bemerkt. Obwohl ich doppelt so viel Zeit damit verbracht habe, es von 35 auf 18 zu bringen, haben es alle bemerkt und waren dankbar und beeindruckt. Es ist keine große Sache, für eine App, die einige Male im Jahr verwendet wird, von 5 auf 3 Minuten zu wechseln. Benutzer haben nur weniger Zeit, um auf Facebook zu verbringen oder Kaffee zu trinken.

Wahrnehmung ist der Schlüssel. Wenn das Unternehmen mit den Entwicklungsteams im Allgemeinen und dieser App im Besonderen nicht zufrieden ist, möchten Sie möglicherweise einen guten Willen aufbauen und die Sache beschleunigen.

JeffO
quelle
Die Startzeit der Webanwendung sollte jedoch keine Auswirkungen auf normale Benutzer haben. Der andere Entwickler ist verärgert, weil er die App im Rahmen der regulären Entwicklung mehrmals täglich persönlich neu startet.
AndyMcKenna