Definieren Sie "produktionsbereit"


25

Darauf bin ich schon eine Weile gespannt. Was genau ist mit "produktionsreif" oder seinen Varianten gemeint? Zuletzt suchte ich nach Informationen zu SQLite und fand diesen Thread , in dem viele Leute meinen, SQLite sei noch nicht produktionsbereit.

Ich kenne den Unterschied zwischen Entwicklung / Test und Produktion. Meine Definition von Produktion ist alles, was dem Kunden zur Verfügung gestellt wird oder von Nicht-Programmierern verwendet wird.

Es scheint jedoch viele Artikel zu geben, die nicht als produktionsbereit definiert sind. In der Realität sind sie jedoch möglicherweise perfekt geeignet, und die Leute haben nur ein schlechtes Gewissen dagegen, z. B. SQLite, Python, Nicht-MS-Produkte usw.

Kleines Büro oder Unternehmen? Einzelbenutzer oder Mehrbenutzer? Client vs. Server? Wo ziehst du die Linie?


2
"Es funktioniert auf meiner Maschine."
Turm

2
Der Code-Status, wenn der Code versendet werden soll.
Gilbert Le Blanc

Antworten:


41

Kommt darauf an, wer du bist.

Programmiererdefinition von "produktionsbereit":

  • es läuft
  • es erfüllt die Projektanforderungen
  • Das Design war gut durchdacht
  • es ist stabil
  • es ist wartbar
  • es ist skalierbar
  • es ist dokumentiert

Definition des Managements von "produktionsbereit":

  • es läuft
  • es wird einen Gewinn machen

Tut mir leid, dass ich diese alte Frage noch einmal aufgewärmt habe, aber ich bin darüber hinweggekommen und konnte einfach nicht widerstehen.


Eine große Sache, die ich dieser Liste hinzufügen möchte, ist ... wenn etwas kaputt geht, liefert das System genügend Informationen, die Sie herausfinden können.
ShaneC

Und nicht zu vergessen, die Definition der Mitarbeiter: Vorhandenes Monitoring, gut dokumentierter und einfacher Update-Pfad, Release-Plan, Sicherheit, Leistung, Automatisierung, ... Einige mögen es unter Ihre Punkte "Projektanforderungen" und "wartbar" stellen, aber die meisten der zeit fehlt die perspektive von ops people. (Gilt nur für Software, die über ops people ausgeführt wird)
Christian

6
Ich habe es heute gefunden und bin versucht, diese Antwort zu ändern, indem ich den Teil "es läuft" aus dem Verwaltungsabsatz lösche ;-)
Doc Brown

8

Allgemein bedeutet "X ist nicht produktionsbereit", dass es Probleme mit fehlenden Funktionen, Stabilität und / oder Skalierbarkeit gibt, sodass es für weniger anspruchsvolle Szenarien verwendet werden kann, bei umfangreichen Bereitstellungen jedoch fehlschlagen kann (Bereitstellungen auf Unternehmens- und Internetebene).


1

Es gibt viele Definitionen, die für "produktionsbereit" verwendet werden können.

Meine persönlichen sind unten aufgeführt - und sie sind alle etwas praktisch und sehr kontextabhängig - in einigen Kontexten kann dieselbe exakte Lösung als "produktionsbereit" betrachtet werden, während in einem anderen Kontext dieselbe Lösung - manchmal wörtlich - sein wird. produktionsbereit über meiner Leiche ".

Die folgenden Definitionen setzen voraus, dass "Produktion" den Kontext "einige schwerwiegende Ergebnisse hängen von der erfolgreichen Ausführung des Produkts ab" hat.

  • Mit anderen Worten, Software, die Ihre "besten Orchideen für das Wachstum in Nevada" betreibt und mit der Sie 3 US-Dollar pro Monat an AdSense-Einnahmen verdienen, fällt weit außerhalb des Produktionskontexts, während die Space Shuttle-Firmware in diesem Kontext fest verankert ist.

  • Alles andere ist auf einer Skala angesiedelt, wobei einige Dinge etwas grau sind (z. B. Software für akademische Forschung). Einerseits gibt es keine offensichtlichen Auswirkungen auf die Produktion, wenn eine allgemeine Situation einbricht, andererseits sind politische Entscheidungen in Höhe von mehreren Billionen Dollar zu treffen Regierungen auf der Grundlage spezifischer Forschungsergebnisse erstellt werden).

2 Definitionen, die ich jetzt finden kann, sind:

  1. Kann für Zwecke verwendet werden, die bei einer Standard-Risikoanalyse zu Materialverlusten führen, wenn etwas kaputt geht.

    Dies bedeutet keine Garantie für das Fehlen von Brüchen / Fehlern - das kann keine Software -, sondern ein angemessenes Maß an Sicherheit in Bezug auf die Stabilität für den beabsichtigten Zweck.

    Der Nutzen der Verwendung dieser Lösung überwiegt beispielsweise die Größe der potenziellen Verluste aus dem Bruch multipliziert mit der Wahrscheinlichkeit, dass er brechen wird.

    Daher ist Java berüchtigt "nicht für den Einsatz in Kernkraftwerken" Haftungsausschluss.

  2. Es ist zu erwarten, dass Ihre Kollegen die Due Diligence bestanden haben.

    Wenn zum Beispiel im Falle eines Rechtsstreits eine Gruppe von N zufälligen Experten aus Ihrem Fachgebiet gefragt wird, "ob diese Details vorliegen, war diese Produktion fertig?", Sind Sie sich ziemlich sicher, dass die meisten dieser Experten Ihnen zustimmen würden, dass dies der Fall ist bereit, basierend auf den Ermittlungs- und Arbeitsbemühungen, die Sie unter den gegebenen Umständen hätten unternehmen können. Wenn Sie mehr als 10% der Testfälle nicht geschrieben haben, ist die Due Diligence nicht erfolgreich. Wenn Ihr Programm aufgrund eines zuvor unbekannten Fehlers im gcc-Compiler fehlgeschlagen ist, ist es wahrscheinlich nur dann fehlgeschlagen, wenn auf Ihrer Software etwas lebenswichtiges ausgeführt wurde, das eine genaue Prüfung erforderlich machte, um auch diesen Fehler zu beheben.


0

SQLite darf nicht für Produktionsdatenbanken verwendet werden, da es explizit ohne viele der Funktionen entwickelt wurde, die als "erforderlich" gelten. Beispielsweise wirken sich Sperren auf die gesamte Datenbank aus, es gibt keine Fremdschlüssel und bis SQLite3 gab es nicht einmal Datentypen.

Allgemein bedeutet dies, dass ein System, das für eine sehr kleine Anzahl von Benutzern (1-5) in der Entwicklung einwandfrei funktioniert, abstürzt und brennt, wenn es höheren Lasten ausgesetzt wird.


Ich sollte erwähnen, dass dies auch von der Umgebung abhängt, in der eine Anwendung verwendet wird. Zurück zum SQLite-Beispiel, es ist perfekt für den produktiven Einsatz, wenn es nur einen Client gibt. Mac OS X verwendet SQLite ausgiebig über das CoreData-Framework - ich glaube, es verarbeitet Dinge wie die iTunes-Musikdatenbank des Benutzers und die iMail-Mailbox. Versuchen Sie einfach nicht, es wie eine echte Client-Server-Datenbank zu verwenden.


0

Wie Sie im letzten Teil der Frage vorschlagen, ist "Production Ready" nicht unbedingt eine Definition der Größe von Bereitstellungen, sondern eher für die beabsichtigte Verwendung und die Anforderungen geeignet. Für eine Einzelbenutzer-Client-App kann SQLite beispielsweise produktionsbereit sein. Der beabsichtigte Markt bestimmt am häufigsten, ob eine App oder ein System für die Verwendung der App oder des Systems produktionsbereit ist.


0

Unsere interne Definition eines Builds, das wir zur Produktion liefern, ist sehr einfach ...

  • Es sind keine Probleme mit Schweregrad 1 ausstehend. und,
  • Es sind keine Probleme mit dem Schweregrad 2 ausstehend, die nicht als "Lieferbar" gekennzeichnet sind.

Die KS-Entscheidung wird von mir und einer anderen Person getroffen.


-2

Nun, meine Produktion ist fertig, sie wurde von der Geschäftsleitung abgesegnet. Es läuft, erfüllt die Anforderungen oder seine Skalierbarkeit usw. sind bereits erfüllt, bevor wir überhaupt das Wort p aussprechen können. Die Abmeldung ist aus Managementsicht ein einvernehmlich festgelegter Ausstiegspunkt. Ps. Ich werde nichts für produktionsreif halten, da noch sieben Fehler offen sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.