Was genau definiert Produktion?
-
20-08-2019 - |
Frage
Wie fast jeder, der für eine Weile Programmierung ist schon, ich bin mit dem Begriff „Produktionscode“ vertraut und habe ein vagees Gefühl dafür, was es bedeutet. Jedoch kann, bietet jemand eine halb strenge Definition, da es Wikipedia und Google scheint nicht? Es scheint, wie es viele Grauzonen in sind, was als Produktion, wie interne Tools, die von einer kleinen Gruppe von Menschen verwendet werden und daher nicht „formalisiert“ in Bezug auf die Benutzeroberfläche, Dokumentation usw. und Open-Source-Anwendungen, die sind verfügen über eine komplette, preisfehlerfrei und funktionstüchtig, aber es fehlt polieren, UI und umfangreiche Tests.
Lösung
Produktion bedeutet, alles, was Sie brauchen, zuverlässig zu arbeiten und konsequent.
Ob ein Build-Skript oder einem öffentlich zugänglichen Webserver.
Wenn andere auf Ihrem Code verlassen, vor allem Leute, die es nicht verstehen können (das heißt auch „smart“ Entwickler aber vielleicht nicht in Ihrer Gruppe, aber mit einer Bibliothek, die Sie geschrieben), dass Code ist Produktionscode.
Es ist die Produktion, weil „Arbeit beendet“ und „Geld verloren“, wenn der Produktionscode fehlschlägt.
Andere Tipps
Wenn Ihr Code auf einem Produktionssystem ausgeführt wird, das heißt, es wird in einer realen Situation, die durch die Zielgruppe verwendet wird.
Produktionscode, jedoch nicht notwendigerweise bedeutet, robust, zuverlässig, oder stabilen Code. Die Täglich WTF liefert zahlreiche Belege dafür, in dieser Hinsicht.
Die Definition wie ich es verstehe, dass die Produktion Code ist jeder Code, der installiert ist oder in Verwendung auf einem lebenden, nicht-Test-Bett-System. Ein Server intern zu einem Unternehmen verwendet wird, ist ein Produktionssystem, wenn es das Live-System von den Mitarbeitern des Unternehmens verwendet wird. Der Punkt hier ist, dass Code auf einem Server, der intern an die Firma läuft das Schreiben des Codes kann die Produktion Code sein.
In der Regel wird eine gute Unterscheidung, wenn sie bei internem Code sucht, ist, ob die Gruppe des Code beibehalten wird getrennt von der Gruppe ist es, den Code. Wenn die Gruppen getrennt sind, stehen die Chancen, dass der Code Produktionscode ist. Wenn Betrieb des Unternehmens auf dem Code abhängt, dann ist es sicherlich Produktionscode, auch wenn es entwickelt und gepflegt wird im eigenen Haus.
EDIT: Die kurze Antwort:. Wenn Sie "Wetten den Hof auf sie" sind, ist es "Produktion"
Dies ist eine große Frage - eine absolut kritische Unterscheidung, die routinemäßig alle in Schwierigkeiten aufgrund von Missverständnissen kommt. Die Frage, was ist " Produktion " ist eine Teilmenge der damit verbundenen Frage, was ist eine " Umwelt ".
So ein Teil der Antwort ist, dass " Produktion " ist die " Umwelt " Das ist den meisten wichtig und ist größte als " real " Sache.
So, jetzt müssen wir definieren " Umwelt " (und dann erneut " Produktion "). Wir sind noch weit von einer zufriedenstellenden Antwort.
Wir Programmierer verwenden den Begriff „ Umwelt “ ständig auf Computersysteme beziehen bestehend aus Hardware, die Software ausgeführt wird. Diese Software ist der Code, den wir geschrieben und Software, die es hängt davon ab, die von anderen geschrieben wurden. Wir schreiben unseren Code und integrieren es mit der anderen Software, dann in der Regel führen wir die integrierte Software durch eine Eskalation der Reihe von Tests (Unit-Tests, Integrationstests, Funktionstests, Akzeptanztests, Regressionstests, etc.), bis wir die schließlich laufen integrierte Software in der vollen Art und Weise, in der es bestimmt war.
Natürlich ist nicht alles vollautomatisch. Es gibt in der Regel viele Menschen beteiligt, und sie haben manuelle Prozesse durchzuführen. Wir Programmierer suchen nach Wegen, wie viele dieser Prozesse wie möglich zu automatisieren, aber es gibt immer ein „Mensch / Maschine-Grenze“ in den Systemen arbeiten wir an. Oft gibt es viele solche Grenzen in einem bestimmten Fall.
Auf der anderen Seite kann es keine signifikante Automatisierung überhaupt sein. Zum Beispiel, wir sprachen von " Produktion " Weg zurück, wenn wir voll von Menschen, die Durchführung manuelle Arbeit, die ein Zimmer hatten erzeugt a Produkt . Also, es muss keine Automatisierung vorhanden sein in unserer " Produktion " " Umwelt ". Es gibt auch einen Mittelweg, wo die Automatisierung enthält keine Software beteiligt sind, wie im Fall einer Person, einen Webstuhl laufen Tuch zu weben.
Auch kann es nicht sein, ein Produkt , da wir unsere Sprache " Produktion " angepasst haben " Umwelt " produkt- schließen weniger Dienstleister.
Ebenso kann die Prüfung nicht-Software beinhalten, da wir eine nicht-Software-gesteuerten Maschine testen werden können (beispielsweise die Webmaschine) oder sogar die Leute (Ausbildung und Evaluation).
Jetzt haben wir auf alle entscheidenden Elemente eines " Umwelt " berührt:
- gibt es einen Zweck, ein
intent
, verfolgt - ein
intent
ein intender erfordert, so muss es einesponsor
(eine Person sein oder Gruppe, aber keine Maschine), die dieintent
gibt
- , die
intent
wird durch verschiedene verfolgtprocesses
, die durch durchgeführt werden verschiedeneactors
- die
actors
Menschen sein kann, können sie Ausführen von Software auf Hardware sein, oder sie können Maschinen nicht-Software-driven, so kann es sein oder auch nicht Automatisierung vorhanden
Jetzt können wir richtig und vollständig unsere ursprünglichen Bedingungen definieren.
Ein
environment
besteht aus allenprocesses
und ihreactors
, die Zusammenarbeit eine besondere verfolgenintent
im Namen seinersponsor
. Das auf Hardwaremittel Ausführen von Software, die nicht-Software-gesteuerten Maschinen bedeutet, und dass ihre verschiedenen Aufgaben bedeutet, dass Personen durchführen. Es ist dieintent
, dass in erster Linie einenvironment
definiert, nicht seinprocesses
oder seinactors
.
Darüber hinaus ...
Wenn Sie die
intent
in einer bestimmten verfolgtenvironment
ist diesponsor's
Endziel, die in der Regel einproduct
beinhaltet die Herstellung oder Bereitstellen einerservice
im Austausch für Geld, dann verweisen wir auf dieenvironment
production
.
Jetzt können wir ein bisschen weiter gehen.
Wenn Sie die
intent
in ein verfolgtenvironment
ist die Überprüfung derprocesses
und ihreactors
in Vorbereitung aufproduction
, wir nennen dass eintest
environment
.Wir nennen es weiter ein
integration
environment
, wenn diese Prüfung beinhaltet die anfängliche Zusammenfügen von bedeutenden Personen oder Gruppen vonprocesses
und ihractors
.Wenn das Präparat die „Programmierung“ des Menschen beinhaltet
actors
neu auszuführenprocesses
, oder die nachträgliche Prüfung (Evaluierung), dann rufen wir, dass eintraining
environment
.
mit diesen Unterscheidungen und Definitionen Bewaffnet können wir nun mehr gemeinsamen Szenarien verstehen.
Ein environment
kann mit einem Namen falsch beschriftet werden, das nicht sein überein intent
, wie wenn eine training
Umwelt test
.
Ein environment
können grob missbraucht werden, wenn beispielsweise integration
oder training
erfolgt in production
.
Ein environment
kann falsch dargestellt werden, wie zum Beispiel, wenn die Taste processes
oder actors
sind nicht identifizieren links (zB manuelle Abstimmungen, oder sogar durch Ignorieren die Menschen insgesamt).
Ein environment
können Anschlüssen umfunktioniert werden, indem Repurposing seine processes
und actors
, um eine neue intent
. Eine sehr erfolgreiche Technik für einige Unternehmen ist routinemäßig "Flip" mehrere Sätze von zu actors
(Server-Hosting-Software) zwischen production
, test
, training
und integration
bei jeder neuen Version.
In den meisten Fällen ein einzelnes actor
(Person oder Hardware) können mehrere ausführen processes
, die in mehreren teilnehmen können environments
. Zum Beispiel kann ein einzelner Computer-Server-Software hosten, die production
Transaktionen während auch Hosting andere Software ausführt, die test
oder training
Funktionen ausführt.
Normalerweise wird eine einzelne Instanz eines actor
in nur einer teilnehmen sollte environment
zu einem Zeitpunkt. In sehr seltenen Fällen eine einzelne actor
kann über environments
, wenn die intents
sind für beide Seiten geteilt werdenkompatibel. Die meiste Zeit ist es sehr unklug, eine solche gemeinsame Nutzung, um zu versuchen, weil die intents
sind nicht wirklich kompatibel. Ein perfektes Beispiel läuft ein test
process
auf einem Server, der auch unterstützt production
processes
, was zu Ausfallzeiten, weil die test
verursacht der gesamte Server zum scheitern verurteilt.
Daher ist die intent
eines environment
muss mit sehr weiten Spielraum ausgelegt werden, gehören Begriffe wie Verfügbarkeit Zuverlässigkeit Leistung Disaster Recovery Genauigkeit Genauigkeit Wiederholgenauigkeit Langlebigkeit , etc. Dies bedeutet, dass die actors
und processes
müssen oft ausgelegt werden Dinge enthalten wie Macht Bereitstellung Kühlung Backups und Redundanz .
Schließlich ist zu beachten, dass die Situation sehr komplex bekommen. Zum Beispiel ( actor
) ein Desktop-Computer kann durch das Entwicklungsteam ( sponsor
) zu bewirten ihre Quellcodeverwaltung ( process
) beauftragt werden, die das Team verlässt sich auf ihre Hauptaufgaben auf ( production
). Dennoch sehen die IT-Mitarbeiter, dass gleicher Desktop-Computer einfach als Entwickler-Workstation ( development
, nicht production
) und behandelt sie mit Verachtung und Nonchalance, wenn es ein Hardware-Problem entwickelt. Aber die Entwickler produzieren production
Code, so sind sie nicht auch ein Teil von production
? Perspective Angelegenheiten.
EDIT: Die Qualität der Produktion
Eine feste Prüfung ( testing
) Methodik von verpackt Code nehmen sollte development
und es durch eine Reihe von laufen tests
(Integration, TQA, Funktions-, Regressions-, Annahme-, etc.), bis sie aus der anderen Seite "gestempelt" für production
Verwendung kommt. Doch das macht das Paket production
Qualität , aber nicht wirklich production
. Das Paket wird nur production
, wenn ein sponsor
setzt sie tatsächlich in ein environment
mit dieser ultimativen Ebene von intent
.
Allerdings, wenn Ihre Organisation lediglich das Paket erzeugt (seine product
) für den Verbrauch von anderen, dann wird eine solche Freisetzung kommt so nah an production
, wie die Organisation erleben mit Bezug auf den product
, so ist es üblich, den Begriff production
strecken anzuwenden, anstatt klarstellen, dass es ist production
Qualität . In Wirklichkeit diese Organisation production
Umgebung besteht aus dem actors
und processes
beteiligt an der Entwicklung / Veröffentlichung Bemühungen, die in diesem führen product
.
Ich sagte, es könnte ziemlich komplex ...
Jeder Code, der durch es bestimmt totzukriegen verwendet werden, werden in meine Definition von ‚Produktionscode‘ passen würde.
Natürlich ist die Grauzone in dieser Definition wäre klar zu definieren, wer Ihre totzukriegen ist.
G-Man
- Die Produktionssoftware kann ohne Unterbrechung oder Verschlechterung des Dienstes bei der notwendigen Arbeitsbelastung durchführt
- Software hat in verschiedenen Produktionsszenarien erfolgreich getestet
- Transforming funktionierenden Prototyp in Produktionssoftware, die läuft auf ausfallsichere redundante Architektur, die in realen Unternehmen arbeiten kann, das heißt Produktionsumgebung, Zeit, Code-Refactoring benötigt, und die Aufmerksamkeit auf Details
- Der Produktionscode hat akzeptables Maß an Wartbarkeit und ist recht gut kommentiert
- Die Dokumentation Handbuch erklärt Funktionalität, alle Funktionen und erleichtert die Wartung
- Wenn die Produktionssoftware ein internationaler Dienst oder eine Anwendung ist, muss es lokalisiert werden
- Produktionscode wird von Endanwendern eingesetzt, oft Kunden unter Bedingungen, die in AGB-of-Service-Vereinbarung
- Produktionssoftware bedeutet nicht unbedingt zuverlässig geschäftskritische Software
- Die Software funktioniert gut, was beabsichtigt wurde, zu tun
- Log-Dateien eine genaue Beschreibung der Laufzeitleistung und Zuverlässigkeit der Software-Metriken und Reporting bereitzustellen, die das Debuggen tun erleichtern und Software-Wartbarkeit
Ich denke, der beste Weg, um es zu beschreiben, wie jeder Code ist, dass „führt zu“ Einsatz und „folgt-up“ Einsatz. Deployment selbst als alle Aktivitäten definiert, die ein Software-System zur Nutzung machen. Wenn Ihr Code ist bereit, von Menschen genutzt werden, im Haus oder auf andere Weise, dann ist es die Produktion Code.
In einfachen Worten "Production Code, der durch das beabsichtigte Publikum live und in Verwendung ist"
Der Begriff „Produktionscode“ mischt zwei unterschiedliche Konzepte. Eine davon ist Deployment Management und die andere ist Lebenszyklus freigeben.
Im strengen Sinne des Wortes, ist ein System, in der Produktion, wenn es als Teil des Geschäfts-oder Service-Betrieb verwendet wird. Was ist nicht in der Produktion ist die Entwicklung, Prüfung, QA, Demo und Staging-System. Produktionssystem nicht sofort Qualität bedeuten.
Ab Release Lebenszyklus Sicht ein „Produktion“ Build ist der Bau, den breiten Öffentlichkeit oder Kunden freigegeben wird. Es ist die Phase nach dem pre-alpha, alpha, beta, (feature complete, Code abgeschlossen, etc.) und Release-Kandidaten. Für Shrink-Wrap-Produkte, die nicht leicht Updates bereitstellen können, die Produktionsstufe erreicht impliziert wahrscheinlich Reihe von Tests und Fehlerbehebung.