Thursday 9 March 2017

Knight Upgrade Triggered Old Trading System

MetaTrader 4 - Beispiele Upgrade auf MetaTrader 4 Build 600 und höher Am 3. Februar 2014 veröffentlichten wir den neuen MetaTrader 4 Build 600 mit der komplett überarbeiteten MQL4-Sprache und dem Zugriff auf den Markt der Anwendungen. Zusätzlich zur aktualisierten MQL4-Sprache für die Programmierung von Handelsstrategien bietet die neue Version des MetaTrader 4-Terminals eine überarbeitete Struktur der Benutzerdatenspeicherung. In früheren Versionen wurden alle Programme, Vorlagen, Profile etc. direkt im Terminal-Installationsordner abgelegt. Nun werden alle erforderlichen Daten für einen bestimmten Benutzer in einem separaten Verzeichnis namens Daten-Ordner gespeichert. Einige Händler, die noch nie mit den neuesten Versionen von Windows gearbeitet haben, haben möglicherweise Fragen über den Betrieb des neuen Terminals. Upgrade auf New MetaTrader 4 Hier ist ein Beispiel für das Upgrade von MetaTrader 4 Build 509, um 610 zu erstellen. Angenommen, dass MetaTrader 4 Build 509 im Programmordner-Systemordner installiert ist. Bevor Sie mit dem Update beginnen, sollten Sie eine Sicherungskopie Ihres aktuellen MetaTrader 4-Terminals erstellen. Sie können es später verwenden, falls Sie Ihre Dateien auf einen anderen Computer oder eine neue Kopie des Terminals übertragen müssen. Starten Sie das Terminal und verbinden Sie mit einem beliebigen Trading-Server, wo die neue Version verfügbar ist, zum Beispiel demo. metaquotes. net. MetaTrader 4 wird automatisch gestartet, um das Update herunterzuladen, während die Zahlen in der unteren rechten Ecke ändern, um den Fortschritt zu zeigen. Nachdem der Download abgeschlossen ist, wird "quotLiveUpdate: finishedquot" auf der Registerkarte quotTerminalquot angezeigt. Um das Update abzuschließen, starten Sie das Terminal manuell neu. Schließen Sie das Terminal und führen Sie es erneut aus. Die neue Version des Terminals unterscheidet sich leicht von der vorherigen: MetaEditor Symbol hat sich geändert und eine neue RegisterkarteMarketquot mit Handelsrobotern und Indikatoren ist jetzt verfügbar. Wenn Sie benutzerdefinierte MQL4-Programme haben, erscheint nach dem Upgrade auf die neue Version das folgende Dialogfenster. Es zeigt kurze Informationen über Änderungen in der Dateistruktur des Terminals. Alle Details der Aktualisierung sind im Terminalprotokoll verfügbar. Während des Updates kopierte Daten Während des Updates werden die Ordner config, Experten, Verlauf, Protokolle, Profile, Vorlagen und Tester aus dem Installationsverzeichnis in den Datenordner übertragen. Es werden nur Standardordner und Dateien kopiert. Andere werden nicht kopiert, auch wenn sie sich in den Ordnern config, expert, history, logs, profiles, templates, tester befinden. Benutzerprogramme aus dem Expertenordner werden wie folgt kopiert: Quellordner im Installationsverzeichnis Bitte beachten Sie, dass Anwenderprogramme kopiert werden. Aber nicht migriert. Nach dem Kopieren werden diese MQ4 / MQH / EX4 Dateien nicht gelöscht. Programme aus dem vorherigen Standard-Terminal-Lieferpaket werden beim Upgrade nicht kopiert. Stattdessen werden neue Standardlieferprogramme im Datenordner installiert. Sie sehen die Details des Dateimigrationsprozesses im Journal des MetaTrader 4 Terminals. Diese Protokolle stehen auch in der. log-Datei des Journal zur Verfügung. Was ist der Datenordner Der Datenordner ist ein spezielles Verzeichnis für die Speicherung von Dateien, die Benutzerdaten enthalten, die sich während des Betriebs des MetaTrader 4-Endgeräts ab 600 ändern. Beispielsweise können Diagrammvorlagen, Profile, Set-Dateien, die Eingabeparameter von Anwendungen, Quellcode und kompilierte EX4-Dateien enthalten, verwendet werden. Um aus dem Terminal in den Datenordner zu gelangen, öffnen Sie das Menü "Datei hinzufügen" und klicken auf "Datenordner öffnen". Der Stamm jedes Datenordners enthält die Datei origin. txt. Diese Datei zeigt den Pfad zum Installationsverzeichnis des Endgeräts, auf das es sich bezieht. Installationsordner Der Installationsordner für die Installation ist der Platz auf dem Computer, den Sie bei der Terminalinstallation angegeben haben oder wenn Sie die gesamte Kopie des installierten Terminals platziert haben. Der Installationsordner enthält Dateien, die sich während des Betriebs nicht ändern, zB ausführbare Dateien terminal. exe und metaeditor. exe. Sie können auch sehen, wo sich der Terminal-Installationsordner in den Eigenschaften der Desktop-Verknüpfung des Programms über das Kontextmenü befindet. Ein Klick auf quotOpen file locationquot im Kontextmenü öffnet den Installationsordner. Allgemeiner Modus des Terminalstarts In den meisten Fällen befindet sich der Datenordner des Terminals auf Computern unter Windows Vista und höher, nach dem Upgrade von 509 auf 600 und höher, getrennt vom Installationsordner. Das Datenverzeichnis befindet sich in einem separaten Ordner in einem speziellen Benutzerordner, wenn mindestens eine der folgenden Bedingungen erfüllt ist: Benutzerkontensteuerung oder UAC ist in Windows aktiviert (ab Windows Vista). Der Benutzer, der das Terminal ausführt, hat beschränkte Rechte, Terminaldaten in den Installationsordner zu schreiben. Der Benutzer, der das Terminal betreibt, arbeitet über eine Netzwerkverbindung (RDP). Der Datenordner befindet sich auf dem Systemlaufwerk im folgenden Pfad :: ist der Name eines Systemdatenträgers Useraccountname ist das Benutzerkonto für die Arbeit in Windows Instanceid ist der eindeutige Name des Ordners, in dem alle Benutzerdaten für die Arbeit mit einem bestimmten Kopie des Terminals MetaTrader 4 gespeichert ist. Der eindeutige Name besteht aus 16 Zeichen. Der Name wird auf Basis des Pfades zum Terminal-Installationsordner generiert, da der Pfad zum Terminal-Installationsverzeichnis nicht explizit als Ordnername verwendet werden kann. Ein langer eindeutiger Name wird verwendet, da mehrere Kopien des Terminals auf einem Computer installiert werden können. Wenn die angegebenen Bedingungen nicht erfüllt sind, wenn Sie das Terminal ausführen, befindet sich der Datenordner im Installationsordner. Portable Mode Der Portable-Modus ist aktiv, wenn Sie die Taste quot / portablequot verwenden. Dieser Modus dient zum Ausführen des Terminals auf tragbaren Datenträgern, in Nicht-Systemverzeichnissen sowie auf Computern unter Windows XP. Für mehr Komfort, können Sie eine separate Terminal-Startverknüpfung erstellen und schreiben quot / portablequot in seinen Eigenschaften. Beim Start im tragbaren Modus versucht das Terminal, seine Daten im Installationsordner zu speichern. Die Verwendung des tragbaren Modus garantiert jedoch nicht, dass ein Betriebssystem die Speicherung von Daten im Installationsordner ermöglicht (z. B. wenn das Terminal im Verzeichnis "Programmdateien" installiert ist und UAC aktiviert ist). Die folgenden Bedingungen sollten erfüllt sein, um im tragbaren Modus zu funktionieren: Ausführen des alten EX4 In der vorherigen Version des Terminals wurden alle Benutzer-MQ4-, MQH - und EX4-Dateien im Expertenordner gespeichert. In der neuen MetaTrader 4 Terminalversion ist der Stamm der Dateistruktur zum Speichern von Programmen MQL4 im Datenordner. Beim automatischen Kopieren werden die Anwenderprogramme entsprechend ihrer Art übertragen. Wenn nach dem Update kein Indikator oder Expert Advisor im Terminal Navigator angezeigt wird, bedeutet dies, dass sich das Programm an einem nicht standardmäßigen Ort befindet. Solche Programme sollten manuell in den entsprechenden Unterordner in ltdatafoldergtMQL4 kopiert werden. Eine Neukompilierung von alten Programmdateien ist nicht erforderlich. MQL4-Anwendung, die in Build 509 oder älter erstellt wird, wird in der neuen Terminalversion ordnungsgemäß ausgeführt. Während des Aktualisierungsvorgangs werden Dateien an den neuen Speicherort kopiert, alte EX4-Dateien werden jedoch erneut kompiliert. Sie sollten sich entscheiden, ob Sie Ihre MQL4-Anwendungen neu kompilieren möchten. Warnung: Alle Rechte an diesen Materialien sind von MQL5 Ltd. vorbehalten. Kopieren oder Nachdrucken dieser Materialien ganz oder teilweise ist verboten. Alle Vorteile von Standard Digital plus: Unbegrenzter Zugriff auf alle Inhalte Instant Insights Spalte für Kommentar und Analyse als News Entfaltet FT Vertrauliche Forschung - vertiefende China - und Südostasien-Analyse ePaper - die digitale Replik der gedruckten Zeitung Voller Zugang zu LEX - unsere Tagesordnung tägliche Kommentare Exklusive E-Mails inklusive einer wöchentlichen E-Mail von unserem Redakteur, Lionel Barber Voller Zugang zu EM Squared - Nachrichten und Analysedienst auf den aufstrebenden Märkten Zugang zu FT-preisgekrönten Nachrichten auf Desktop, Mobile und Tablet Personalisierte E-Mail-Briefings nach Branchen, Journalisten oder Branchen Portfolio-Tools zur Verwaltung Ihrer Investitionen FastFT - marktführende News und Ansichten, 24 Stunden am Tag Brexit Briefing - Ihr wesentlicher Leitfaden für die Auswirkungen der britischen EU-Split 1,00 für 4 Wochen Ich sprach auf einer Konferenz im vergangenen Jahr zu den Themen DevOps, Konfiguration als Code und kontinuierliche Lieferung und verwendet die folgende Geschichte zu demonstrieren, die Bedeutung der Bereitstellungen Vollständig automatisiert und wiederholbar als Teil einer DevOps / Continuous Delivery Initiative. Seit dieser Konferenz wurde ich von mehreren Personen gefragt, die Geschichte mit meinem Blog zu teilen. Diese Geschichte ist wahr, dass dies wirklich passiert ist. Dies ist meine Erzählung von der Geschichte auf, was ich gelesen habe (ich war nicht beteiligt). Dies ist die Geschichte, wie ein Unternehmen mit fast 400 Millionen an Vermögenswerten in Konkurs ging in 45 Minuten wegen einer fehlgeschlagenen Bereitstellung. Hintergrund Knight Capital Group ist ein amerikanisches globales Finanzdienstleistungsunternehmen, das sich auf Marktmacherei spezialisiert hat. Elektronische Ausführung und institutioneller Vertrieb und Handel. Im Jahr 2012 war Knight der größte Händler in US-Aktien mit Marktanteil von rund 17 auf jedem der NYSE und NASDAQ. Knights Electronic Trading Group (ETG) verwaltet ein durchschnittliches tägliches Handelsvolumen von mehr als 3,3 Milliarden Trades täglich, Handel über 21 Milliarden Dollar täglich. Thats kein Witz Am 31. Juli 2012 Knight hatte etwa 365 Millionen in bar und Äquivalente. Die NYSE beabsichtigte, am 1. August 2012 ein neues Retail Liquidity Program (ein Programm, das den Privatanlegern durch Retail-Broker, wie Knight) verbesserte Preise anbieten soll, zu starten. In Vorbereitung auf dieses Ereignis aktualisiert Knight ihre automatisierte, schnelle, algorithmische Router, die Aufträge in den Markt für die Ausführung als SMARS bekannt senden. Eine der Kernaufgaben von SMARS ist es, Aufträge von anderen Komponenten der Ritterhandelsplattform (Stammbestellungen) zu erhalten und dann eine oder mehrere Nachbestellungen zur Ausführung zu schicken. In anderen Worten, SMARS würde große Aufträge von der Handelsplattform erhalten und brechen sie in mehrere kleinere Aufträge, um ein Käufer / Verkäufer-Match für das Volumen der Aktien zu finden. Je größer der übergeordnete Auftrag ist, desto mehr Kindaufträge werden generiert. Das Update zu SMARS sollte den alten, unbenutzten Code ersetzen, der als Power Peg-Funktionalität bezeichnet wird, die Knight in 8 Jahren nicht benutzt hatte (warum Code, der 8 Jahre lang tot war, in der Codebasis noch vorhanden war, ist ein Rätsel Nicht der Punkt). Der Code, der aktualisiert wurde, ersetzte ein altes Flag, das verwendet wurde, um die Power-Peg-Funktionalität zu aktivieren. Der Code wurde sorgfältig getestet und nachweislich korrekt und zuverlässig funktionieren. Was könnte möglicherweise falsch gehen Was könnte möglicherweise falsch gehen In der Tat zwischen 27. Juli 2012 und 31. Juli 2012 Knight manuell eingesetzt die neue Software auf eine begrenzte Anzahl von Servern pro Tag acht (8) Servern in allen. Dies ist, was die SEC-Einreichung sagt über die manuelle Bereitstellung (BTW, wenn es eine SEC-Datei über Ihre Bereitstellung etwas kann schrecklich falsch gegangen). Während des Einsatzes des neuen Codes jedoch, einer der Ritter Techniker nicht kopieren Sie den neuen Code auf einen der acht SMARS-Computer-Servern. Ritter hatte nicht einen zweiten Techniker überprüfen diese Bereitstellung und niemand bei Knight erkannte, dass der Power Peg-Code nicht aus dem achten Server entfernt wurde, noch der neue RLP-Code hinzugefügt. Ritter hatte keine schriftlichen Verfahren, die eine solche Überprüfung erforderlich. SEC Filing Release Nr. 70694 16. Oktober 2013 Um 9.30 Uhr Eastern Time am 1. August 2012 öffneten sich die Märkte und Knight begann mit Aufträgen von Broker-Händlern im Auftrag ihrer Kunden für das neue Retail Liquidity Program. Die sieben (7) Server, die die richtige SMARS-Bereitstellung hatten, begannen, diese Aufträge ordnungsgemäß zu verarbeiten. Aufträge, die an den achten Server gesendet wurden, lösten die vermeintliche repurposed Flagge aus und brachten von den Toten den alten Power-Peg-Code zurück. Angriff der Killer Code Zombies Es ist wichtig zu verstehen, was der tote Power Peg Code zu tun war. Diese Funktionalität sollte dazu dienen, die gekauften / verkauften Aktien gegen einen übergeordneten Auftrag zu zählen. Power Peg würde das System anweisen, Routing-Unterordnungen zu beenden, sobald der übergeordnete Auftrag erfüllt wurde. Grundsätzlich würde Power Peg verfolgen die Reihenfolge der Kinder und stoppen sie, sobald die übergeordnete Reihenfolge abgeschlossen wurde. 2005 wechselte Ritter diese kumulative Tracking-Funktionalität zu einem früheren Zeitpunkt in der Codeausführung (wodurch die Zählverfolgung von der Power Peg-Funktionalität entfernt wurde). Wenn das Power Peg-Flag auf dem achten Server aktiviert wurde, begann die Power-Peg-Funktionalität, untergeordnete Aufträge zur Ausführung weiterzuleiten, aber die Verfolgung der Menge von Anteilen gegen die übergeordnete Anordnung war nicht wie eine Endlosschleife. 45 Minuten der Hölle Stellen Sie sich vor, was passieren würde, wenn Sie ein System, das in der Lage, automatisierte, High-Speed-Aufträge in den Markt ohne Tracking, um zu sehen, wenn genug Aufträge ausgeführt worden war. Ja, es war so schlimm. Als der Markt um 9:30 Uhr eröffnet wurde, wussten die Leute schnell, dass etwas nicht stimmte. Um 9.31 Uhr war es für viele Leute an der Wall Street offensichtlich, dass etwas Ernstes passierte. Der Markt wurde überflutet mit Aufträgen aus dem normalen für reguläre Handelsvolumen auf bestimmte Bestände. Um 9:32 Uhr fragten sich viele Leute an der Wall Street, warum es nicht aufgehört hatte. Dies war eine Ewigkeit in High-Speed-Handelsbedingungen. Warum hatte nicht jemand den Kill-Schalter auf, was System tat dies tun Wie es sich herausstellt, gab es keine Kill-Schalter. Während der ersten 45 Minuten des Handels waren Ritterausführungen mehr als 50 des Handelsvolumens und trieb bestimmte Bestände über 10 ihres Wertes. Infolgedessen verringerten sich andere Bestände im Wert als Antwort auf die fehlerhaften Geschäfte. Um es noch schlimmer zu machen, begann das System von Knights, bereits um 8:01 Uhr automatisierte E-Mails zu senden, nachdem SMARS Aufträge für den Pre-Market-Handel bearbeitet hatte. Die E-Mail-Nachrichten verweisen auf SMARS und haben einen Fehler erkannt, da der Power Peg deaktiviert ist. Zwischen 8:01 und 9:30 Uhr waren 97 dieser E-Mails an das Ritterpersonal geschickt worden. Natürlich waren diese E-Mails nicht als Systemwarnungen entworfen worden und deshalb sah niemand sie sofort an. Hoppla. Während der 45 Minuten der Hölle, die Ritter erlebten, versuchten sie mehrere Gegenmaßnahmen, um zu versuchen, die irrigen Trades zu stoppen. Es gab keinen Kill-Switch (und keine dokumentierten Verfahren, wie man reagiert), so dass sie links zu versuchen, das Problem in einem Live-Trading-Umfeld zu diagnostizieren, wo 8 Millionen Aktien gehandelt wurden jede Minute. Da sie nicht feststellen konnten, was die fehlerhaften Aufträge verursachte, reagierten sie durch Deinstallieren des neuen Codes von den Servern, die es korrekt bereitgestellt wurde. Mit anderen Worten, sie entfernten den Arbeitscode und verließen den gebrochenen Code. Dies verstärkte nur die Probleme, die zusätzliche übergeordnete Aufträge verursachen, um den Power-Peg-Code auf allen Servern zu aktivieren, nicht nur die, die nicht ordnungsgemäß bereitgestellt wurde. Schließlich konnten sie das System nach 45 Minuten des Handels stoppen. In den ersten 45 Minuten war der Markt geöffnet wurde der Power Peg-Code empfangen und verarbeitet 212 Eltern Bestellungen. Als Ergebnis SMARS geschickt Millionen von Bestellungen auf dem Markt in 4 Millionen Transaktionen gegen 154 Aktien für mehr als 397 Millionen Aktien. Für Sie Aktienmarkt Junkies das bedeutete, dass der Ritter etwa 3,5 Milliarden Netto-Long-Positionen in 80 Aktien und 3,15 Milliarden Netto-Short-Positionen in 74 Aktien angenommen. In laymen8217s Begriffe, Knight Capital Group realisiert einen 460 Millionen Verlust in 45-Minuten. Denken Sie daran, Ritter hat nur 365 Millionen in bar und Äquivalente. In 45 Minuten Ritter ging von der größte Händler in US-Aktien und ein bedeutender Market Maker in der NYSE und NASDAQ zu Bankrott. Sie hatten 48 Stunden, um das notwendige Kapital zur Deckung ihrer Verluste aufzubringen (was sie mit einer 400-Millionen-Investition von rund einem halben Dutzend Investoren zu tun schafften). Knight Capital Group wurde schließlich von Getco LLC (Dezember 2012) erworben und das fusionierte Unternehmen heißt jetzt KCG Holdings. Eine Lektion zu lernen Die Ereignisse vom 1. August 2012 sollten eine Lehre für alle Entwicklungs-und Operations-Teams sein. Es ist nicht genug, um große Software zu bauen und es zu testen, müssen Sie auch sicherstellen, dass es geliefert wird, um richtig zu vermarkten, damit Ihre Kunden den Wert erhalten, den Sie liefern (und so Sie nicht Ihre Firma bankrott). Die Ingenieure, die SMARS eingesetzt haben, sind nicht allein an der Schuld des Prozesses, den Knight eingerichtet hatte, nicht geeignet für das Risiko, dem sie ausgesetzt waren. Zusätzlich war ihr Verfahren (oder ihr Fehlen) anfällig für Fehler. Jedes Mal, wenn der Bereitstellungsprozess auf dem Lesen von Menschen und den folgenden Anweisungen beruht, stellen Sie sich dem Risiko aus. Menschen machen Fehler. Die Fehler könnten in den Anweisungen, in der Auslegung der Anweisungen oder in der Ausführung der Anweisungen liegen. Die Implementierungen müssen automatisiert und wiederholbar sein und möglichst frei von möglichen menschlichen Fehlern sein. Had Knight implementiert ein automatisiertes Bereitstellungssystem mit Konfigurations-, Bereitstellungs - und Testautomatisierung, die den Fehler verursachen würde, der das Knightmare vermieden hätte. Ein paar Prinzipien für Continuous Delivery finden Sie hier (auch wenn Sie keinen vollständigen Continuous Delivery-Prozess implementieren): Freigeben von Software sollte ein wiederholbarer, zuverlässiger Prozess sein. Automatisieren Sie so viel wie angemessen ist. Ein Szenario: Nehmen wir an, sie hatten sehr gute DevOps. Also alle Server würden synchron sein. Aber 8211 nehmen an, dass der neue Code einen Bug hatte. Also alle Server sind synchron, haben aber den selben Buggy Code. Was, wenn zwei Versionen des Codes, d. H. Die letzten 2 Bereitstellungen diesen Fehler hatten. So, sobald sie erkennen, dass etwas falsch ist, they8217d Roll-back den Code, der Bug noch stays8230 Precious Minuten vergangen sind. Vielleicht 20 Minuten statt der 45 Minuten in Ihrem Artikel. So kurz 8211 ihre Katastrophe / Kill-Switch ist ein Code-Rollback-Einsatz in einer Live-Umgebung. Das wäre noch ein defektes Design. Was sie brauchen, wäre ein großer roter Schalter (fast wörtlich, irgendwo in ihrem Armaturenbrett) sofort aufhören. Wo ist die Geschäftsregel, die sagt 8220first tun no harm8221. VJ, wenn die Bereitstellung auf alle Server gearbeitet hatte, wäre es ok gewesen. In diesem Fall wurden jedoch 7 von 8 für ein Subsystem korrekt eingesetzt. Weil das schlechte Verhalten, rollten sie zurück die anderen 7 denken, dass der neue Code in diesem Subsystem war das Problem. Das multiplizierte das Problem bis zum eventuellen Kill-Switch. Katastrophen sind fast immer komplex. In diesem Fall war es schlechte Kodierung Praktiken, plus fragwürdige Tests / Code Inspektion Praktiken, sowie ein Fehler in der Bereitstellung, sowie ein Rollback auf die Granularität des Subsystems und nicht auf das gesamte System. Wenn Sie eines dieser Probleme lösen, erhalten Sie eine Katastrophe. Eines der Dinge, die in Unternehmen gesehen werden, die die wahre Bedeutung und den Einfluss ihrer IT-Systeme nicht anerkennen, ist, dass sie kein Budget für Legacy-Code-Updates bereitstellen. Zum Beispiel: Ich habe Situationen gesehen, in denen IT kein Budget hat. Es muss alles rechtfertigen, was es gegen einen Unternehmensaufwand macht. Das bedeutet ständig Scrambling, um neue Projekte aufzustellen. Geschäft sieht selten die Notwendigkeit, alte Software zu aktualisieren, die zZ arbeitet, also sie ablehnen, dafür zu zahlen. Das Ergebnis ist ein konstanter neuer Code, der von den günstigsten Codierern möglich gemacht wird, während nicht in Technologien investiert wird, die letztlich die Leistung verbessern und das Risiko mindern. Warum, weil diese als 8220IT-Probleme8221 gesehen werden und nicht das Ziel des Projekts, an dem die IT-Leute arbeiten, so dass niemand dafür bezahlen wird. Ein großes Lesen über diese Praxis ist das Phoenix-Projekt von Gene Kim, Kevin Behr und George Spafford. Vielen Dank für die Anwendung Gehirn auf die Hype. Vermutlich sollte man fragen, warum die beteiligten Techniker die Schuld auf sich genommen haben, aber nicht die Befugnis bekamen, den Schalter selbst zu töten. Oh, richtig, dass8217s, warum Sie setzen Ops / SRE an Ort und Stelle trotzdem. 8220R8221 ist für verantwortlich, alias Flammenköder. Ich habe ein wenig über dieses Ereignis geschrieben, und ich würde jemanden, der den SEC-Bericht als alles andere als für das, was die SEC brauchte, für sie zu warnen. Kitchensoap / 2013/10/29 / counterfactuals-knight-capital / Faszinierend lesen. Ich arbeitete in einem großen Auktionshaus für Obst und Gemüse einmal, wo eine neue Software-Version installiert wurde und nicht, was zu großen Verlusten für die Händler (wenn auch nicht so massiv wie diese). Dies war auch ein Fall von unsachgemäßen Einsatz und kein Rückfall. Die zu erlernende Lehre ist, dass es Gebiete gibt, in denen Computer keine Entscheidung ohne menschliche Validierung treffen sollte. Was ist mit den Menschen, die ihre Arbeit verloren, weil, oops, gab es einen Fehler Was ist mit den anderen Unternehmen, die vielleicht in Trubble wegen der plötzlichen Veränderung der Aktienwert Automatisierung von 8220high level Entscheidungen8221 ist sorgfältig behandelt werden soll8230 Nizza und pädagogische Post Btw. Die Verwendung des Cynefin-Frameworks bietet eine bessere Charakterisierung dieses 8216DevOps8217-Fehlers Dieser Beitrag scheint aus einer DevOps-Perspektive geschrieben worden zu sein. Die vorgeschlagenen Lösungen stimmen mit einer DevOps-Perspektive überein 8211 untersuchen den Freigabeprozess, automatisieren mehr und erarbeiten einen Kill-Switch mit Rollback-Fähigkeiten. Jemand kann die Post lesen und zu viel Wert auf den Ritter Techniker legen, der den alten Code nicht auf einen der acht Server kopiert hat. Jemand kann eine Ursache-Wirkungs-Beziehung zu stark vereinfachen. Jemand kann auf neue Regeln reagieren, um dies zu verhindern. "8211 Verstärkte Diversität, um die Situation zu analysieren und bessere Möglichkeiten zu schaffen 8211 Verbessern Sie die Kommunikation zwischen Spezialitäten 8211 Verbessern Sie die implizite Koordination zwischen Spezialitäten 8211 Rekrutieren Sie Einzelpersonen mit mehr Know-how zu schreiben und zu überprüfen Code Ein wichtiger Faktor, der begrenzte Verbesserung der Fähigkeit des Teams aus neun Jahren vor dem signifikanten Fehler Veranstaltung war mis-Charakterisierung des Systems. In einem Cynefin-Framework beschränkt dieser Fehler auf ein DevOps-Problem das System mit der 8220Obvious8221-Domäne, wo es einfache Ursache-Wirkungs-Beziehungen gibt, die von 8216professionals erkannt werden.8217 Der Fehler sollte nicht mit der Cynefin 8220Complicated8221 Domäne verknüpft werden, wo eine signifikante Analyse Von 8216specialists8217 hätte den Misserfolg verhindert. Das System sollte mit der Cynefin 8220Complex8221 Domäne 8211 ein komplexes adaptives System verbunden sein. Das System ist dispositional. Die gleichen Anfangsbedingungen erzeugen nicht denselben Ausfall (außer durch Zufall). Für weitere Informationen über Cynefin, besuchen Sie en. wikipedia. org/wiki/Cynefin und CognitiveEdge. Ich schätze Ihre Hervorhebung der tacit Faktoren in einer solchen Katastrophe. Wie der Autor, ich arbeite auch in Operationen, und es ist leicht, in die gleichen alten Denkmuster auf Ursachen und Lösungen fallen. Ich genieße besonders Ihren Punkt in Bezug auf Vielfalt (die in allen Formen kommt: Erfahrungsniveau, kulturelle und pädagogische Hintergründe, Fähigkeiten, Alter, etc.), wie ich denke, das ist ein starker Treiber hinter dem Erfolg von DevOps selbst. Mit einer Vielzahl von Perspektiven, sowohl innerhalb als auch ohne Ihr Team, Blick auf Ihr Projekt hat starke, nachweisbare Potenzial und kann helfen, Bordstein Versehen wie die, die in diesem Artikel. Gt, warum Code, der tot für 8-Jahre war noch in der Code-Basis vorhanden ist ein Geheimnis, aber das ist nicht der Punkt Im Gegenteil, dass8217s genau der Punkt. Code mit unbenutzten, und daher ungetestet, Konfigurationsmöglichkeiten ist eine Katastrophe zu erwarten. Dies ist, warum I8217m sehr skeptisch über Merkmal-basierte Ansätze im Allgemeinen. Konfiguration ist so viel ein Teil Ihres Programms wie Code ist, und Konfigurationsänderungen sollten durch die gleiche Lifecycle 8211 ziehen Anforderung, Code-Überprüfung, Release, Bereitstellung zu Staging 8211 als jede andere Änderung zu gehen. Wenn Ihr Freigabeprozess zu schwer ist und Sie schnelle Konfigurationsänderungen an der Produktion vornehmen müssen, beheben Sie den Freigabeprozess. Es gab zu viele Fehler, um das epische Misserfolg nur DevOps zuzuschreiben (obwohl ich voll und ganz einverstanden bin, dass Automatisierung und Testing der einzige Weg sind): 8211 Keine Teamarbeit und Checklisten bei einem Update auf Produktionsservern. Jede Aktualisierung auf Produktion sollte ein Team aufpassen über einander, und durch eine Checkliste. 8211 8 Jahre unbenutzter alter Code in Produktion. Das sagt Ihnen viel über das Fehlen von Verständnis über die Risiken baumeln 8220unused8221-Code. 8211 Unzureichende Protokollierung aus dem Code und unzureichende Echtzeit-Protokollüberwachung, Korrelation und Analyse. Das hätte genügend Anhaltspunkte für die Ingenieure und OPS-Leute ausgelöst. 8211 Kein Hot-Hot-Failover zu einem Cluster mit der vorherigen Version. Das hätte alles nach 1 oder 2 Minuten gestoppt. (That8217s die Bug rote Taste, die der Artikel erwähnt) Wenn Sie auch schon seit Jahren Architekten Software, Systeme und Unternehmen für eine lange Zeit, Sie wissen, Katastrophe geschieht, wissen Sie, einige Bugs sind nur in der Wildnis gefangen und nicht während der Simulationen, genau wie Sie Wissen Maschinen gehen wird. Sie müssen für den schlimmsten Fall in beiden Szenarien vorzubereiten. Murphy8217s Gesetz ist so wahr in unserer Welt I8217w wurden in dem, was jetzt die 8220DevOps8221 Raum für fast 20 Jahre, mehr als die Hälfte der in der Finanzwelt. Ritter war sowohl ein Verkäufer und ein Konkurrent des Unternehmens, für das ich derzeit arbeite. Bereitstellung Automatisierung könnte dazu beigetragen haben. Könnte sein. Aber nur wenige Unternehmen können sich genau doppelte Umgebungen leisten, was im Wesentlichen auf Umweltunterschiede zurückzuführen ist. Selbst die automatisierte Validierung der Bereitstellung hätte in diesem Fall nicht geholfen, wenn die Automatisierung über die Umweltdifferenz keine Kenntnis hatte. Automatisierung ist nur so gut wie das Wissen der Menschen, die es aufstellen. Wenn eine manuelle Installation wasn8217t bewusst das alte System, dann there8217s eine gute Chance, die das automatisierte System wouldn8217t bekannt haben, um es entweder zu überprüfen. Die Automatisierung eines Rollbacks ist auch nur so gut wie die Entscheidung, ob der Roll-back erfolgen soll. Und wenn die Automatisierung versehentlich das alte System gestartet hat, gibt es auch keine Garantie, dass das Umschalten des zeitgenössischen Systems wieder das alte System 8211 gestoppt hätte, hätten Sie das gleiche Problem auch nach einem automatischen Rollback des modernen Systems haben können. Das bringt mich zum letzten Punkt: Automatisierung ist eine Voraussetzung in großen, modernen Umgebungen. Aber über-Abhängigkeit auf es kann dazu führen, dass die Menschen, die das System nicht bewusst, was es tun. Automatisierung ist am nützlichsten für Validierungen, weil Validierung Dinge richtig gemacht werden, ist mühsam und leicht zu skimp on, wenn manuell durchgeführt. Selbst wenn die Automatisierung, mit menschlichen Breakpoints oder von Menschen getriebenen Schritten hilft sicherzustellen, dass diejenigen, die das System kennen das System kennen und wie es funktioniert, erheblich verbessern ihre Fähigkeit, Probleme zu beheben, Probleme zu diagnostizieren und geeignete Vorschläge, welche Schritte zu ergreifen Stoppen oder mildern ein Problem. Automatisierung ist ein Werkzeug, aber es ist nur ein Werkzeug und es erfordert immer noch ein Handwerker, um es angemessen zu nutzen. Know-how ist, was macht und hält große Systeme groß. Hat diesen Eintrag von Garrett S. Y. Hampton gerebloggt und das kommentiert: Incredible. DevOps beobachtet, dokumentiert und überprüft Ihre Bereitstellungen immer


No comments:

Post a Comment