DE112015002967T5 - Vertikal integrierte kontinuierliche Bereitstellung einer Anwendung - Google Patents

Vertikal integrierte kontinuierliche Bereitstellung einer Anwendung Download PDF

Info

Publication number
DE112015002967T5
DE112015002967T5 DE112015002967.2T DE112015002967T DE112015002967T5 DE 112015002967 T5 DE112015002967 T5 DE 112015002967T5 DE 112015002967 T DE112015002967 T DE 112015002967T DE 112015002967 T5 DE112015002967 T5 DE 112015002967T5
Authority
DE
Germany
Prior art keywords
change information
application
new version
phase
computing environment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112015002967.2T
Other languages
English (en)
Inventor
Adam Brent Jacob
Christopher Brown
Yosef Falcon Seth
Curtis Granquist Lamont
Jon Morrow
Kevin Smith
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Progress Software Corp
Original Assignee
CHEF SOFTWARE Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CHEF SOFTWARE Inc filed Critical CHEF SOFTWARE Inc
Publication of DE112015002967T5 publication Critical patent/DE112015002967T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Abstract

Die Ausführungsformen betreffen die Verwaltung von Anwendungsbereitstellung über ein Netzwerk. Änderungsinformationen, die Änderungen an einer Anwendung entsprechen, können einer Bereitstellungspipeline bereitgestellt werden. Die Änderungsinformation können teilweise basierend auf einer statischen Analyse des Inhalts der Änderungsinformationen, Kompilieren und Komponententests überprüft werden. Reviewer können benachrichtigt werden, um die Änderungsinformationen zu genehmigen. Eine Version der Anwendung, die die Änderungsinformationen beinhaltet, kann erzeugt werden. Akzeptanztests können durchgeführt werden, die die Bereitstellung von Computerressourcen in einer Akzeptanztestumgebung umfassen. Und Einsatz einer Version einer Anwendung, die die Änderungsinformationen umfasst, in der Akzeptanztestumgebung. Wenn der Akzeptanztest bestanden ist, kann ein Versandvorgang aktiviert werden, wobei die Bereitstellungspipeline pausiert wird, bis ein Benutzer den Versandvorgang aktiviert, was den Neustart der Bereitstellungspipeline und Einsatz der Anwendung auf einer oder mehreren Computerumgebungen bewirkt

Description

  • TECHNISCHER BEREICH
  • Diese Erfindung bezieht sich allgemein auf die Verwaltung und die Steuerung der Verteilung von Anwendungen über ein Netzwerk, und insbesondere, aber nicht ausschließlich auf die Verwaltung und die Steuerung der kontinuierlichen Bereitstellung von einer Anwendung in einer oder mehreren Computerumgebungen.
  • HINTERGRUND
  • Immer mehr Anwendungen und Dienste sollen kontinuierlich verfügbar und/oder betriebsfähig sein. Dementsprechend können Software-Entwickler Softwareänderungen, einschließlich Updates, Bugfixes, Patches oder dergleichen, direkt in Live- und Betriebsdiensten bereitstellen. Auch Modemsoftware-Entwicklungspraktiken können Releases von Produkten und Funktionen in einem viel schnelleren Tempo erfordern. Dementsprechend versenden Produktentwicklungsteams, anstatt einem oder zwei Releases pro Jahr viel kleinere Releases mehrmals pro Jahr. Weiterhin, da diese Anwendungen und Dienste umfangreicher und komplizierter werden, kann jede Anwendung oder jeder Dienst durch mehrere Entwicklungsteams unterstützt werden, wovon jedes sich nur einem Teil eines Dienstes oder einer Anwendung widmet. Die separaten Teams können oftmals Änderungen an der Anwendung bereitstellen, die eine Auswirkung auf andere Teams haben, die verantwortlich für andere Teile der Anwendung sind. Die Kombination von inkrementellen Änderungen und separaten, etwas unabhängigeren Entwicklungsteams können das Risiko erhöhen, dass sich Änderungen die Live-Anwendungsumgebung ausbreiten können, die sich negativ auf die Leistung und/oder die Benutzerzufriedenheit auswirken können. Somit wurde diese Erfindung im Hinblick auf diese Überlegungen und andere ausgeführt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 veranschaulicht eine Systemumgebung, in der verschiedene Ausführungsformen implementiert werden können;
  • 2 stellt eine schematische Ausführungsform eines Client-Computers dar;
  • 3 veranschaulicht eine schematische Ausführungsform eines Netzwerkcomputers;
  • 4 veranschaulicht einen Abschnitt einer Logikarchitektur für vertikal integrierte kontinuierliche Bereitstellung einer Anwendung in Übereinstimmung mit mindestens einer der verschiedenen Ausführungsformen;
  • 5 veranschaulicht einen Abschnitt einer Systemumgebung für vertikal integrierte kontinuierliche Bereitstellung einer Anwendung in Übereinstimmung mit mindestens einer der verschiedenen Ausführungsformen;
  • 6 stellt ein Übersichts-Ablaufdiagramm für ein Verfahren für vertikal integrierte kontinuierliche Bereitstellung einer Anwendung in Übereinstimmung mit mindestens einer der verschiedenen Ausführungsformen dar;
  • 7 stellt ein Übersichts-Ablaufdiagramm zum Verifizieren von Änderungsinformationen in Übereinstimmung mit mindestens einer der verschiedenen Ausführungsformen dar;
  • 8 stellt ein Übersichts-Ablaufdiagramm zum Verifizieren von Änderungsinformationen in Übereinstimmung mit mindestens einer der verschiedenen Ausführungsformen dar;
  • 9 stellt ein Übersichts-Ablaufdiagramm für ein Verfahren zum Akzeptanztest für Änderungsinformationen in Übereinstimmung mit mindestens einer der verschiedenen Ausführungsformen dar; und
  • s10 stellt ein Übersichts-Ablaufdiagramm zum Bereitstellen von Änderungsinformationen für eine Live-Umgebung in Übereinstimmung mit mindestens einer der verschiedenen Ausführungsformen dar.
  • AUSFÜHRLICHE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Verschiedene Ausführungsformen werden nun im Folgenden unter Bezugnahme auf die beigefügten Zeichnungen ausführlicher beschrieben, die einen Teil hiervon bilden, und die durch Veranschaulichung spezifische beispielhafte Ausführungsformen zeigen, mit denen die Erfindung praktiziert werden kann. Die Ausführungsformen können jedoch in vielen unterschiedlichen Formen verkörpert werden und sollten nicht als auf die in diesem Dokument dargelegten Ausführungsformen beschränkt angesehen werden; vielmehr werden diese Ausführungsformen bereitgestellt, damit diese Offenbarung gründlich und vollständig ist, und den Umfang der Ausführungsformen Fachleuten auf dem Gebiet vollständig vermittelt. Unter anderem können die verschiedenen Ausführungsformen Verfahren, Systeme, Medien oder Vorrichtungen sein. Dementsprechend können die verschiedenen Ausführungsformen die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform oder einer Ausführungsform annehmen, die eine Kombination von Software- und Hardwareaspekten ist. Die folgende ausführliche Beschreibung ist daher nicht in einem einschränkenden Sinn zu verstehen.
  • In der gesamten Beschreibung und den Ansprüchen haben die folgenden Begriffe die Bedeutungen, denen sie in diesem Dokument ausdrücklich zugeordnet sind, außer wenn der Zusammenhang eindeutig etwas anderes vorschreibt. Der Ausdruck „bei einer Ausführungsform“, wie er in diesem Dokument verwendet wird, bezieht sich nicht notwendigerweise auf dieselbe Ausführungsform, obwohl es möglich ist. Der Ausdruck „bei einer anderen Ausführungsform“, wie er in diesem Dokument verwendet wird, bezieht sich nicht notwendigerweise auf eine andere Ausführungsform, obwohl es möglich ist. Somit können, wie unten beschrieben, verschiedene Ausführungsformen ohne weiteres kombiniert werden, ohne vom Umfang oder Gedanken der Erfindung abzuweichen.
  • Darüber hinaus ist der Begriff „oder“, wie in diesem Dokument verwendet, ein einschließlicher „oder-Operator, und entspricht dem Begriff „und/oder“, außer wenn der Zusammenhang eindeutig etwas anderes vorschreibt. Der Begriff „basierend auf“ ist nicht ausschließlich und ermöglicht, dass etwas auf zusätzlichen Faktoren basiert, die nicht beschrieben sind, außer wenn der Zusammenhang eindeutig etwas anderes vorschreibt. Zusätzlich umfasst die Bedeutung von „ein/einer/einem“ und „der/die/das“ Pluralbezüge. Die Bedeutung von „in“ umfasst „in“ und „auf“.
  • Für beispielhafte Ausführungsformen werden die folgenden Begriffe in diesem Dokument ebenfalls entsprechend der jeweiligen Bedeutung verwendet, außer wenn der Zusammenhang eindeutig etwas anderes vorschreibt.
  • Der Begriff „Konfigurationsverwaltungssoftware“, wie er in diesem Dokument verwendet wird, bezieht sich auf Softwareanwendungen, die Funktionen bereitstellen, die für die Verwaltung von Computersystemen bestimmt sind, wie z.°B. Katalogisierung von bordeigener Hard- und Software, Bereitstellung von Software, Aktualisierung von Software, Lizenzverwaltung, Installation von Software, Konfiguration von Softwareeinstellungen und Präferenzen, Benutzer-Konfigurationseinstellungen und Präferenzen oder dergleichen. Einige Konfigurationsverwaltungs-Softwareprogramme können Datenbanken (z.°B. Konfigurationsverwaltungsdatenbanken) generieren, die einen detaillierten Systemkatalog der Computergeräte in ihrer Verwaltung umfassen. Darüber hinaus können einige Konfigurationsverwaltungs-Softwareprogramme Suchen in ihren Systemkatalogen aktivieren, um verwaltete Vorrichtungen zu identifizeren, die verschiedene Bedingungen erfüllen, wie z.°B. Software-Versionen, installierte Anwendungen, Hardwarekomponenten oder dergleichen, oder Kombinationen davon.
  • Der Begriff „Aufgabe“, wie er in diesem Dokument verwendet wird, bezieht sich auf eine oder mehrere Aktionen, die programmgesteuert auf einem Computergerät, wie z.°B. einer Netzwerkvorrichtung und/oder einem Client-Gerät ausgeführt werden können. Aufgaben können durch das Ausführen eines oder mehrerer Skripte und/oder Programme auf einem Computergerät ausgeführt werden. Bei einigen Ausführungsformen können Aufgaben eine oder mehrere Aktionen für die Konfigurationsverwaltung umfassen.
  • Der Begriff „Anwendung“, wie hierin verwendet, bezieht sich auf Anwendungen, die eingerichtet sein können, um eines oder mehrere Merkmale und/oder Funktionen in einer Computerumgebung bereitzustellen. In mindestens einer der verschiedenen Ausführungsformen können möglicherweise eine oder mehrere Anwendungen eingerichtet sein, um als Teil eines größeren Dienstes zusammenzuarbeiten. Zum Beispiel können in einem E-Commerce-Dienst Warenkorbfunktionen als eine Anwendung betrachtet werden, und die Katalog-Suchfunktionen können als eine andere Anwendung betrachtet werden. Somit können die Warenkorbanwendung und die Katalog-Suchanwendung zusammen im Rahmen des E-Commerce-Dienstes eingesetzt werden. Weiterhin kann in einigen Fällen eine Anwendung, wie hierin verwendet, möglicherweise ein Modul oder eine Bibliothek sein, die von einer oder mehreren anderen Anwendungen verwendet werden kann. Dementsprechend ist es für eine Anwendung im Sinne der hier beschriebenen Neuerungen nicht erforderlich, dass es sich dabei um ein ausführbares Verfahren handelt.
  • Der Begriff „Dienst“, wie hierin verwendet, ist die allgemeine Bezeichnung für einen Dienst, der den Benutzern zur Verfügung gestellt wird. In einigen Ausführungsformen kann ein Dienst aus mehreren Anwendungen bestehen, wobei jede Anwendung eine oder mehrere Funktionen für den Dienst als Ganzes beitragen kann.
  • Der Begriff „Live-Computerumgebung“, wie hierin verwendet, bezieht sich auf die Computerumgebung, bei der eine oder mehrere Anwendungen in einem Live-Produktionseinsatz in Betrieb sind. Die Live-Umgebung ist die tatsächliche Computerumgebung, die den (öffentlichen oder privaten) Verbrauchern der Anwendungen ausgesetzt ist. Eine Live-Computerumgebung kann einen oder mehrere Computer und/oder Server beinhalten, die verschiedene Funktionen oder Dienste bereitstellen, wie z.°B. Datenbank-Server, Webserver, LDAP-Server, Load-Balancer, Firewalls, Switches, Router oder dergleichen.
  • Eine Live-Computerumgebung kann aus einem oder mehreren Computern, z.°B. Netzwerk-Computern, virtuellen Computern, virtuellen Maschinen oder dergleichen bestehen. Weiterhin kann eine Live-Computerumgebung eingerichtet sein, um in einer oder mehreren Cloud-basierten Umgebungen, verteilten Clustern oder dergleichen zu arbeiten.
  • Der Begriff „Verbund-Computerumgebung“, wie hierin verwendet, bezieht sich auf eine Computerumgebung, die eingerichtet ist, um einer entsprechenden Live-Computerumgebung möglichst ähnlich zu sein, so wie es praktisch ist. Dazu gehören Einrichten von Konfiguration, Betriebssystem, anderen Anwendungsversionen, Hardware-Treibern, Peripheriegeräten, Netzwerkkonfiguration oder dergleichen, um zu der Live-Computerumgebung zu passen. In bestimmten Ausführungsformen kann die Genauigkeit der Übereinstimmung in Abhängigkeit von Kosten und Schwierigkeiten bei der Duplizierung der Live-Computerumgebung sowie den Anforderungen des Benutzers variieren. Im Idealfall ist die Verbund-Computerumgebung ein Klon der Live-Computerumgebung.
  • Die Begriff „Probe-Computerumgebung“ wie hierin verwendet, bezieht sich auf eine Computerumgebung, die ein Klon der Verbund-Umgebung ist, oder möglichst nahe an einem Klon ist.
  • Der Begriff „Änderungsinformationen“, wie hierin verwendet, bezieht sich auf Informationen entsprechend Änderungen, die durch einen Software-Entwickler oder Konfigurations-Manager an einer Anwendung oder ihrem Betriebsumfeld vorgenommen wurden. In einigen Ausführungsformen können Änderungsinformationen Quellcodeänderungen beinhalten, die durch einen Software-Entwickler vorgenommen wurden. In anderen Ausführungsformen können Änderungsinformationen Änderungen an Netzwerk-Konfiguration, Datenbank-Schemata, gespeicherten Prozeduren, Make-Dateien, Firewall-Regeln, Benutzerinformationen oder dergleichen beinhalten. Änderungsinformationen können Informationen beinhalten, die sich auf mehr als eine Änderung beziehen. Beispielsweise können Änderungsinformationen Änderungen beinhalten, die durch mehrere Software-Entwickler erzeugt wurden. Allerdings werden bei dem Bereitstellungsverfahren die in den Änderungsinformationen beinhalteten Änderungen atomar behandelt. Die gesamten Änderungsinformationen müssen entweder bereitgestellt oder zurückgewiesen werden.
  • Der Begriff „Feuerprobe“, wie er hierin verwendet wird, bezieht sich auf einen automatischen Test, der verwendet werden kann, um schnell eine Anwendung zu testen. Eine Feuerprobe kann angeordnet werden, um grundlegende Funktionalität der Anwendung zu testen, um Fehler aufzudecken, die möglicherweise ernst genug sind, um eine zukünftige Änderung zurückzuweisen. Eine Feuerprobe kann Testfälle beinhalten, die die wichtigste Funktionalität einer Anwendung abdecken um sicherzustellen, ob die wichtigsten Funktionen eines Programms korrekt arbeiten. Feuerproben können mit einem oder mehreren Skripts oder Programmen für Software-Testharnische, eigenständige Skripts oder Programme oder dergleichen durchgeführt werden.
  • Der Begriff „Funktionstest“, wie er hierin verwendet wird, bezieht sich auf einen automatischen Test, der verwendet werden kann, um alle oder die meisten der Funktionen einer Anwendung zu testen. Ein Funktionstest kann zum Empfangen von Eingaben und/oder Erzeugen von Ausgaben konzipiert sein. Funktionale Tests können möglicherweise End-to-end-Testen von allen bekannten Funktionen der Anwendung sein. Funktionstests können mit einem oder mehreren Skripts oder Programmen für Software-Testharnische, eigenständige Skripts oder Programme oder dergleichen durchgeführt werden.
  • Der Begriff „Repository“, wie hierin verwendet, bezieht sich auf das Speichern von Quellcode, Konfigurationsdateien, Medien-Assets oder dergleichen, für eine oder mehrere Anwendungen. In einigen Ausführungsformen kann ein Repository ein Quellcodeverwaltungssystem sein, das eine oder mehrere bekannte Funktionen wie Versionskontrolle, Verzweigung, Markieren, Check-Ins/Check-Out, Änderungsbenachrichtigungen, Änderungsverwaltung oder dergleichen bereitstellt.
  • Der Begriff „Bereitstellungspipeline“, wie hierin verwendet, bezieht sich auf eine konfigurierte kontinuierliche Bereitstellungspipeline, die eine oder mehrere definierte Stufen jeweils mit einer oder mehreren definierten Phasen umfasst. Änderungsinformationen können eine Bereitstellungspipeline durchlaufen, bis sie die Endstufe erreichen, der dem Einsatz und Betrieb in einer Live-Computerumgebung entspricht. Jede Phase für jede Stufe muss erfolgreich abgeschlossen werden, um durch die Bereitstellungspipeline fortzuschreiten.
  • Kurz gesagt beziehen sich verschiedene Ausführungsformen auf die Verwaltung von Anwendungsbereitstellung über ein Netzwerk. In mindestens einer der verschiedenen Ausführungsformen können Änderungsinformationen, die einer oder mehreren Änderungen an einer Anwendung entsprechen kann/können, einer Bereitstellungspipeline bereitgestellt und/oder für sie freigegeben werden. In mindestens einer der verschiedenen Ausführungsformen kann die Bereitstellungspipeline auch mehrere Stufen, darunter mindestens eine Verifizierungsstufe, eine Review-Stufe, eine Akzeptanztestphase, eine Verbund-Stufe, eine Probe-Stufe und eine Live-Stufe beinhalten, wobei jede Stufe eine oder mehrere Phasen beinhaltet, die mindestens einen Vorgang beinhalten, der ausdrücklich vor seinem Wechsel in die nächste Stufe in die Bereitstellungspipeline übergeben wird.
  • In mindestens einer der verschiedenen Ausführungsformen können die Änderungsinformationen teilweise basierend auf einer statischen Analyse des Inhalts der Änderungsinformationen verifiziert werden. Darüber hinaus können einer oder mehrere Komponententests ausgeführt werden. In mindestens einer der verschiedenen Ausführungsformen kann Verifizieren der Änderungsinformationen auch Kompilieren eines Teils des Quellcodes der Software beinhalten, der den Änderungsinformationen entspricht.
  • In mindestens einer der verschiedenen Ausführungsformen kann/können einer oder mehrere Reviewer benachrichtigt werden, die Änderungsinformationen zu genehmigen, wenn die Änderungsinformationen zustimmend verifiziert wurden. Wenn die Anzahl der Reviewer, die die Änderungsinformationen genehmigt, mindestens einer Schwellenwertanzahl entspricht, können die Änderungsinformationen genehmigt werden. Und wenn ein Reviewer die Änderungsinformationen nicht genehmigt, können die Änderungsinformationen zurückgewiesen werden. Die Anzahl der Reviewer und ihre Verantwortung für das Review kann auf einer oder mehreren Review-Richtlinien basieren.
  • In mindestens einer der verschiedenen Ausführungsformen kann eine neue Version der Anwendung, die die Änderungsinformationen beinhaltet, erzeugt werden. In mindestens einer der verschiedenen Ausführungsformen kann Erzeugen der neuen Version der Anwendung weiterhin Erzeugen von einem oder mehreren Buildartefakten für die Installation der neuen Version der Anwendung auf einer oder mehreren Computerumgebungen beinhalten.
  • In mindestens einer der verschiedenen Ausführungsformen können Akzeptanztests in einer Akzeptanzstufe an der neuen Version der Anwendung ausgeführt werden. In mindestens einer der verschiedenen Ausführungsformen können Akzeptanztests auch die Bereitstellung von Computerressourcen beinhalten, die mit der neuen Version der Anwendung in einer Akzeptanz-Computerumgebung verknüpft werden können. Auch können in mindestens einer der verschiedenen Ausführungsformen Akzeptanztests die Bereitstellung der Version der Anwendung beinhalten, die die Änderungsinformationen in die Akzeptanz-Computerumgebung integriert.
  • In mindestens einer der verschiedenen Ausführungsformen, falls das Ergebnis des Akzeptanztests positiv ist, kann ein Versandvorgang in der Bereitstellungspipeline für den Versand der neuen Version der Anwendung aktiviert werden, sodass die Bereitstellungspipeline bis zur Aktivierung des aktivierten Versandvorgangs angehalten werden kann, bzw. von einem autorisierten Benutzer genehmigt werden kann.
  • Bei mindestens einer der verschiedenen Ausführungsformen kann die Bereitstellungspipeline nach Aktivierung des Versandvorgangs wieder aktiviert, und die neue Version der Anwendung kann auf einer oder mehreren Computerumgebungen eingesetzt werden.
  • Bei mindestens einer der verschiedenen Ausführungsformen, wenn die neue Version der Anwendung auf der mindestens einen Computerumgebung versagt, kann eine weitere überarbeitete Version der Anwendung auf einer anderen Computerumgebung bereitgestellt werden, die getrennt von der mindestens einen Computerumgebung sein kann.
  • Bei mindestens einer der verschiedenen Ausführungsformen, wenn alle Tests in der Bereitstellungspipeline ein negatives Ergebnis hervorbringen, können die Änderungsinformationen zurückgewiesen und aus der Bereitstellungspipeline entfernt werden.
  • Veranschaulichende Betriebsumgebung
  • 1 stellt Komponenten einer Ausführungsform einer Umgebung dar, in der Ausführungsformen praktiziert werden können. Nicht alle der Komponenten müssen erforderlich sein, um die verschiedenen Ausführungsformen zu praktizieren, und Variationen bei der Anordnung und der Art der Komponenten können möglich sein, ohne von dem Gedanken oder Umfang der Erfindung abzuweichen. Wie dargestellt, beinhaltet System 100 von 1 lokale Netzwerke (LANs)/Wide Area Networks(WANs)-(Netzwerk) 110, drahtloses Netzwerk 108, Client-Computer 102105, Bereitstellungsverwaltungs-Servercomputer 116, Verbund-Umgebungs-Servercomputer 118, Probe-Umgebungs-Servercomputer 120, Live-Umgebungs-Servercomputer 122 oder dergleichen.
  • Mindestens eine Ausführungsform von Client-Computern 102105 wird nachstehend in Verbindung mit 2 detaillierter beschrieben. In einer Ausführungsform können mindestens einige der Client-Computer 102105 über eines oder mehrere verdrahtete und/oder drahtlose Netzwerke, wie z.°B. Netzwerke 108 und/oder 110, arbeiten. Im Allgemeinen können Client-Computer 102105 praktisch jeden Computer beinhalten, der in der Lage ist, über ein Netzwerk zu kommunizieren, um Informationen zu senden und zu empfangen, verschiedene Online-Aktivitäten, Offline-Aktionen durchzuführen oder dergleichen. In einer Ausführungsform kann/können einer oder mehrere Client-Computer 102105 konfiguriert sein, um innerhalb eines Unternehmens oder einer anderen Entität zu arbeiten, um eine Vielzahl von Diensten für das Unternehmen oder die andere Entität durchzuführen. Zum Beispiel können Client-Computer 102105 konfiguriert werden, um als ein Web-Server, Firewall, Client-Anwendung, Mediaplayer, Mobiltelefon, Spielkonsole, Desktop-Computer oder dergleichen zu arbeiten. Jedoch sind Client-Computer 102105 nicht auf diese Dienste beschränkt, und können in anderen Ausführungsformen z.°B. für Endbenutzer-Computing eingesetzt werden. Es sollte erkannt werden, dass mehr oder weniger Client-Computer (wie in 1 dargestellt) innerhalb eines Systems beinhaltet sein können, wie hierin beschrieben, und Ausführungsformen daher nicht durch die Anzahl oder Art von verwendeten Client-Computern begrenzt sind.
  • Computer, die als Client-Computer 102 arbeiten können, können Computer beinhalten, die in der Regel unter Verwendung von drahtgebundenen oder drahtlosen Kommunikationsmedien wie PCs, Mehrprozessorsystemen, mikroprozessorbasierten oder programmierbaren elektronischen Geräten, Netzwerk-PCs oder dergleichen verbunden werden. In einigen Ausführungsformen können Client-Computer 102105 nahezu jedem tragbaren Computer beinhalten, der sich mit einem anderen Computer verbinden und Informationen empfangen kann, Laptop-Computer 103, Mobilcomputer 104, Tablet-PCs 105 oder dergleichen. Tragbare Computer sind jedoch nicht so begrenzt und können auch andere tragbare Computer wie z.°B. Mobiltelefone, Pager, Funkfrequenz(RF)-Geräte, Infrarot(IR)-Geräte, Personal Digital Assistants (PDAs), Handheld-Computer, tragbare Computer, integrierte Geräte, die einen oder mehrere der vorstehenden Computer kombinieren beinhalten, oder dergleichen. So weisen Client-Computer 102105 in der Regel in Bezug auf Funktionen und Merkmale eine große Bandbreite auf. Darüber hinaus können Client-Computer 102105 auf verschiedene Computeranwendungen, einschließlich einem Browser oder einer anderen webbasierten Anwendung zugreifen.
  • Ein internetfähiger Client-Computer kann eine Browseranwendung umfassen, die konfiguriert ist, um Web-Seiten, webbasierte Nachrichten, Grafiken, Text, Multimedia und dergleichen zu empfangen und zu senden. Die Browser-Anwendung kann konfiguriert werden, um Grafiken, Text, Multimedia und dergleichen unter Verwendung von praktisch jeder webbasierten Sprache zu empfangen und anzuzeigen, einschließlich Wireless Application Protocol(WAP)-Nachrichten und dergleichen. In einer Ausführungsform wird die Browseranwendung in die Lage versetzt, Handheld Device Markup Language (HDML), Wireless Markup Language (WML), WMLScript, JavaScript, Standard Generalized Markup Language (SGML), HyperText Markup Language (HTML), eXtensible Markup Language (XML), HTML5 und dergleichen zu verwenden. In einer Ausführungsform kann ein Benutzer des Client-Computers die Browser-Anwendung verwenden, um verschiedene Aktivitäten über ein Netzwerk (Online) durchzuführen. Jedoch kann auch eine andere Anwendung verwendet werden, um verschiedene Online-Aktivitäten durchzuführen.
  • Client-Computer 102105 können auch mindestens eine andere Client-Anwendung beinhalten, die so konfiguriert ist, dass sie Inhalte von einem anderen Computer empfängt und/oder dorthin sendet. Die Client-Anwendung kann eine Funktion zum Senden und/oder Empfangen von Inhalten oder dergleichen beinhalten. Die Client-Anwendung kann weiterhin Informationen bereitstellen, die sich selbst identifizieren, darunter eine Art, Funktion, Name und dergleichen. In einer Ausführungsform können sich die Client-Computer 102105 selbst durch einen von einer Vielzahl von Mechanismen, einschließlich einer Internetprotokoll(IP)-Adresse, einer Telefonnummer, einer Mobilfunk-Identifikationsnummer (MIN), einer elektronischen Seriennummer (ESN) oder anderen Gerätekennung eindeutig identifizieren. Solche Informationen können in einem Netzwerkpaket oder dergleichen, zwischen anderen Client-Computern, Bereitstellungsverwaltungs-Servercomputer 116 oder anderen Computern gesendet werden.
  • Client-Computer 102105 können weiterhin konfiguriert werden, um eine Client-Anwendung zu beinhalten, die einem Endbenutzer das Abmelden in einem Endbenutzerkonto ermöglicht, das von einem anderen Computer verwaltet werden kann, z.°B. Bereitstellungsverwaltungs-Servercomputer 116, Verbund-Umgebungs-Servercomputer 118, Probe-Umgebungs-Servercomputer 120, Live-Umgebungs-Servercomputer 122 oder dergleichen. Ein solches Endbenutzerkonto kann in einem nicht einschränkenden Beispiel konfiguriert werden, um dem Endbenutzer zu ermöglichen, eine oder mehrere Online-Aktivitäten einschließlich, in einem nicht einschränkenden Beispiel, Projektverwaltung, Software-Entwicklung, Konfigurationsverwaltung, Suchaktivitäten, Social-Networking-Aktivitäten, Browsen durch verschiedene Websites, Kommunizieren mit anderen Benutzern oder dergleichen zu verwalten.
  • Das drahtlose Netzwerk 108 ist konfiguriert, um Client-Computer 103105 und ihre Komponenten mit Netzwerk 110 zu verbinden. Das drahtlose Netzwerk 108 kann beliebige einer Vielzahl von drahtlosen Unternetzwerken beinhalten, die über eigenständigen Ad-hoc-Netzwerken und dergleichen liegen können, um eine infrastrukturorientierte Verbindung für Client-Computer 103105 bereitzustellen. Solche Subnetze können Mesh-Netzwerke, Wireless LAN(WLAN)-Netzwerke, Mobilfunknetze und dergleichen beinhalten. In einer Ausführungsform kann das System mehr als ein drahtloses Netzwerk beinhalten.
  • Das drahtlose Netzwerk 108 kann weiterhin ein autonomes System von Endgeräten, Gateways, Routern beinhalten, das durch drahtlose Funkverbindungen und dergleichen verbunden ist. Diese Verbinder können konfiguriert sein, um sich frei und zufällig zu bewegen und organisieren sich selbst frei, sodass sich die Topologie des drahtlosen Netzwerks 108 schnell ändern kann.
  • Das drahtlose Netzwerk 108 kann weiterhin eine Mehrzahl von Zugangstechnologien einschließlich Funkzugriff der 2. (2G), 3. (3G), 4. (4G), 5. (5G) Generation für Mobilfunksysteme, WLAN, Wireless Router(WR)-Mesh und dergleichen verwenden. Zugangstechnologien wie 2G, 3G, 4G, 5G und zukünftige Zugriffsnetzwerke können für mobile Computer, wie beispielsweise die Client-Computer 103105, eine breite Bereichsabdeckung mit verschiedenen Graden von Mobilität ermöglichen. In einem nicht einschränkenden Beispiel kann das drahtlose Netzwerk 108 eine Funkverbindung über einen Funknetzwerkzugriff wie Global System for Mobile Communication (GSM), General Packet Radio Services (GPRS), Enhanced Data GSM Environment (EDGE), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Wideband Code Division Multiple Access (WCDMA), High Speed Downlink Packet Access (HSDPA), Long Term Evolution (LTE) und dergleichen ermöglichen. Im Wesentlichen kann das drahtlose Netzwerk 108 praktisch jeden drahtlosen Kommunikationsmechanismus beinhalten, durch den Informationen zwischen den Client-Computern 103105 und einem anderen Computer, Netzwerk, Cloud-Netzwerk, einer Cloud-Instanz oder dergleichen befördert werden können.
  • Netzwerk 110 ist zum Verbinden von Netzwerkcomputern mit anderen Computern, einschließlich Bereitstellungsverwaltungs-Servercomputer 116, Verbund-Umgebungs-Servercomputer 118, Probe-Umgebungs-Servercomputer 120, Live-Umgebungs-Servercomputer 122, Client-Computer 102105 durch das drahtlose Netzwerk 108 oder dergleichen konfiguriert. Netzwerk 110 ist zum Verwenden von jeder Art von computerlesbaren Medien zum Kommunizieren von Informationen von einem elektronischen Gerät zu einem anderen in der Lage. Auch Netzwerk 110 kann das Internet zusätzlich zu den lokalen Netzwerken (LANs), Wide Area Networks (WANs), direkte Verbindungen, wie zum Beispiel durch einen Universal Serial Bus(USB)-Port, andere Formen von computerlesbaren Medien oder jede Kombination daraus beinhalten. Bei einer Reihe von miteinander verbundenen LANs, einschließlich solchen, die auf unterschiedlichen Architekturen und Protokollen basieren, arbeitet ein Router als Schnittstelle zwischen LANs, wodurch Nachrichten von einem zum anderen gesendet werden können. Darüber hinaus können Kommunikationsverbindungen in LANs typischerweise verdrillte Zweidrahtleitungen oder ein Koaxialkabel beinhalten, während Kommunikationsverbindungen zwischen Netzwerken analoge Telefonleitungen, volle oder teilweise digitale Standleitungen einschließlich T1, T2, T3 und T4 und/oder andere Trägermechanismen, einschließlich z.°B. E-Träger, Integrated Services Digital Networks (ISDN), Digital Subscriber Lines (DSL), Drahtlosverbindungen einschließlich Satellitenverbindungen oder andere Kommunikationsverbindungen verwenden, die Fachleuten auf dem Gebiet bekannt sind. Außerdem können Kommunikationsverbindungen weiterhin jede aus einer Vielzahl von digitalen Signaltechnologien, einschließlich, und ohne Begrenzung einsetzen, z.°B. DS-0, DS-1, DS-2, DS-3, DS-4, OC-3, OC-12, OC-48, oder dergleichen. Darüber hinaus könnten Remotecomputer und andere verwandte elektronische Geräte aus der Ferne entweder mit LANs oder WANs über ein Modem und temporäre Telefonverbindung verbunden werden. In einer Ausführungsform kann Netzwerk 110 zum Transportieren von Informationen von einem Internetprotokoll (IP) konfiguriert werden.
  • Zusätzlich verkörpern Kommunikationsmedien typischerweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Transportmechanismen und beinhalten beliebige Informationsbereitstellungsmedien. Beispielsweise umfassen Kommunikationsmedien verdrahtete Medien wie Twisted Pair, Koaxialkabel, Faseroptik, Wellenleiter und andere verdrahtete Medien und drahtlose Medien wie akustische, RE-, Infrarot- und andere drahtlose Medien.
  • Eine Ausführungsform des Bereitstellungsverwaltungs-Servercomputers 116 wird nachfolgend in Verbindung mit 3 detaillierter beschrieben. Kurz gesagt beinhaltet jedoch Bereitstellungsverwaltungs-Servercomputer 116 praktisch jeden Netzwerkcomputer, der in der Lage ist, die kontinuierliche Bereitstellung von einer oder mehreren Anwendungen oder Diensten zu verwalten.
  • Obwohl 1 Bereitstellungsverwaltungs-Servercomputer 116, Verbund-Umgebungs-Servercomputer 118, Probe-Umgebungs-Servercomputer 120 und Live-Umgebungs-Servercomputer 122 jeweils als einen einzigen Computer veranschaulicht, sind die Innovationen und/oder Ausführungsformen nicht so beschränkt. Zum Beispiel können eine oder mehrere Funktionen des Bereitstellungsverwaltungs-Servercomputers 116, Verbund-Umgebungs-Servercomputers 118, Probe-Umgebungs-Servercomputers 120, Live-Umgebungs-Servercomputers 122 oder dergleichen über einen oder mehrere verschiedene Netzwerkcomputer verteilt werden. Außerdem sind Bereitstellungsverwaltungs-Servercomputer 116, Verbund-Umgebungs-Servercomputer 118, Probe-Umgebungs-Servercomputer 120 und Live-Umgebungs-Servercomputer 122 nicht auf eine bestimmte Konfiguration wie die in 1 dargestellte beschränkt. Daher kann in einer Ausführungsform Bereitstellungsverwaltungs-Servercomputer 116, Verbund-Umgebungs-Servercomputer 118, Probe-Umgebungs-Servercomputer 120 oder Live-Umgebungs-Servercomputer 122 unter Verwendung einer Mehrzahl von Netzwerkcomputern implementiert werden. In anderen Ausführungsformen kann jeder Servercomputer als eine Vielzahl von Netzwerkcomputern innerhalb einer Cluster-Architektur, einer Peer-to-Peer-Architektur oder dergleichen arbeiten. Weiterhin kann in mindestens einer Ausführungsform Bereitstellungsverwaltungs-Servercomputer 116, Verbund-Umgebungs-Servercomputer 118, Probe-Umgebungs-Servercomputer 120 oder Live-Umgebungs-Servercomputer 122 unter Verwendung von einer oder mehreren Cloud-Instanzen in einem oder mehreren Cloud-Netzwerken implementiert werden. Dementsprechend sind diese Innovationen und Ausführungsformen nicht dahingehend auszulegen, dass sie auf eine einzige Umgebung beschränkt sind, wobei andere Konfigurationen und Architekturen ebenfalls anvisiert werden.
  • Veranschaulichender Client-Computer
  • 2 stellt eine Ausführungsform von Client-Computer 200 dar, die die in einem System in Übereinstimmung mit mindestens einer der verschiedenen Ausführungsformen beinhaltet sein kann. Client-Computer 200 kann mehr oder weniger Komponenten als die in 2 dargestellten umfassen. Die dargestellten Komponenten sind jedoch ausreichend, um eine veranschaulichende Ausführungsform zur Praktizierung der vorliegenden Erfindung zu offenbaren. Client-Computer 200 kann beispielsweise eine Ausführungsform mindestens eines von den Client-Computern 102105 von 1 darstellen.
  • Wie in der Figur dargestellt, beinhaltet Client-Computer 200 einen Prozessor 202, der mit einem Massenspeicher 226 über einen Bus 234 in Kommunikation steht. In einigen Ausführungsformen kann der Prozessor 202 eine oder mehrere zentrale Verarbeitungseinheiten (CPU) beinhalten. Client-Computer 200 beinhaltet auch ein Netzteil 228, eine oder mehrere Netzwerkschnittstellen 236, eine Audioschnittstelle 238, eine Anzeige 240, einen Tastenblock 242, einen Ausleuchter 244, eine Videoschnittstelle 246, eine Eingabe-/Ausgabeschnittstelle 248, eine haptische Schnittstelle 250, einen Global Positioning Systems(GPS)-Empfänger 232
  • Netzteil 228 versorgt Client-Computer 200 mit Strom. Eine wiederaufladbare oder nicht wiederaufladbare Batterie kann zur Stromversorgung verwendet werden. Die Stromversorgung kann auch durch eine externe Stromquelle, wie z.°B. einen Wechselstrom(AC)-Adapter oder eine mit Strom versorgte angetriebene Dockingstation erfolgen, die eine Batterie unterstützt und/oder wieder auflädt.
  • Client-Computer 200 kann optional mit einer Basisstation (nicht dargestellt) oder direkt mit einem anderen Computer kommunizieren. Netzwerkschnittstelle 236 beinhaltet eine Schaltung zum Verbinden von Client-Computer 200 mit einem oder mehreren Netzwerken, und ist für die Verwendung mit einem oder mehreren Kommunikationsprotokollen und Technologien konzipiert, einschließlich, aber nicht beschränkt auf GSM, CDMA, TDMA, GPRS, EDGE, WCDMA, HSDPA, LTE, User Datagram Protocol (UDP), Transmission Control Protocol/Internet Protocol (TCP/IP), Short Message Service (SMS), WAP, Ultrabreitband (UWB), IEEE 802.16 Worldwide Interoperability for Microwave Access (WiMax), Session Initiation Protocol/Real-time Transport Protocol (SIP/RTP) oder eines aus einer Vielzahl von anderen drahtgebundenen und drahtlosen Kommunikationsprotokollen. Netzwerkschnittstelle 236 ist manchmal als Transceiver, Sender-Empfänger-Vorrichtung oder Netzwerkschnittstellenkarte (NIC) bekannt.
  • Audioschnittstelle 238 ist eingerichtet, um Audiosignale wie den Klang einer menschlichen Stimme zu empfangen. Beispielsweise kann die Audioschnittstelle 238 mit einem Lautsprecher und einem Mikrofon (nicht dargestellt) verbunden werden, um Telekommunikation mit anderen zu ermöglichen und/oder eine Audiobestätigung für einige Aktionen zu erzeugen.
  • Anzeige 240 kann eine Flüssigkristallanzeige (LCD), Gasplasma, lichtemittierende Diode (LED), organische LED (OLED) oder jede andere Art von Anzeige sein, die mit einem Computer verwendet werden kann. Anzeige 240 kann auch einen berührungsempfindlichen Bildschirm beinhalten, der zum Empfangen von Eingaben von einem Objekt eingerichtet ist, wie beispielsweise eine Ziffer von einem Stift oder einer menschlichen Hand.
  • Tastatur 242 kann ein beliebiges Eingabegerät umfassen, das zum Empfangen von Eingaben von einem Benutzer eingerichtet ist. Beispielsweise kann Tastenblock 242 eine Ziffernwahl-Drucktaste oder eine Tastatur beinhalten. Tastenblock 242 kann auch Befehlsschaltflächen beinhalten, die mit dem Auswählen und Senden von Bildern verknüpft sind.
  • Ausleuchter 244 kann eine Statusanzeige und/oder Licht bereitstellen. Ausleuchter 244 kann für bestimmte Zeiträume oder als Reaktion auf Ereignisse aktiv bleiben. Wenn beispielsweise Ausleuchter 244 aktiv ist, kann er eine Hintergrundbeleuchtung für die Tasten auf dem Tastenblock 242 bereitstellen und eingeschaltet bleiben, während der Client-Computer mit Strom versorgt wird. Der Ausleuchter 244 kann diese Tasten auch in verschiedenen Mustern hinterleuchten, wenn bestimmte Aktionen durchgeführt werden, z.°B. Anwählen eines anderen Client-Computers. Ausleuchter 244 kann auch veranlassen, dass Lichtquellen, die innerhalb eines transparenten oder lichtdurchlässigen Gehäuses des Client-Computers positioniert sind, als Reaktion auf Aktionen leuchten.
  • Videoschnittstelle 246 ist eingerichtet, um Videobilder aufzunehmen, z.°B. ein Standbild, ein Videosegment, ein Infrarotvideo oder dergleichen. Videoschnittstelle 246 kann beispielsweise mit einer digitalen Videokamera, einer Web-Kamera oder dergleichen verbunden werden. Videoschnittstelle 246 kann ein Objektiv, einen Bildsensor und andere Elektronik umfassen. Bildsensoren können eine ergänzende integrierte Metall-Oxid-Halbleiter(CMOS)-Schaltung, Charge-Coupled Device (CCD) oder jede andere integrierte Schaltung für das Erfassen von Licht beinhalten.
  • Client-Computer 200 umfasst auch eine Eingabe-/Ausgabeschnittstelle 248 zur Kommunikation mit externen Geräten, wie beispielsweise einem Headset oder anderen Eingabe- oder Ausgabegeräten, die nicht in 2 dargestellt sind. Eingabe-/Ausgabeschnittstelle 248 kann eine oder mehrere Kommunikationstechnologien verwenden, wie beispielsweise USB, Infrarot, BluetoothTM oder dergleichen.
  • Die haptische Schnittstelle 250 ist eingerichtet, um einem Benutzer des Client-Computers taktiles Feedback geben. Beispielsweise kann die haptische Schnittstelle 250 verwendet werden, um den Client-Computer 200 in einer bestimmten Weise vibrieren zu lassen, wenn ein anderer Benutzer von einem Computer anruft. In einigen Ausführungsformen kann die haptische Schnittstelle 250 optional sein.
  • Client-Computer 200 kann auch GPS-Transceiver 232 umfassen, um die physikalischen Koordinaten von Client-Computer 200 auf der Oberfläche der Erde zu bestimmen. GPS-Transceiver 232 kann in einigen Ausführungsformen optional sein. GPS-Transceiver 232 gibt normalerweise einen Standort als Breiten- und Längengradwerte aus. GPS-Transceiver 232 kann auch andere Geopositionierungsmechanismen verwenden, einschließlich, aber nicht beschränkt auf Triangulation, assisted GPS (AGPS), Enhanced Observed Time Difference (E-OTD), Cell Identifier (CI), Service Area Identifier (SAI), Enhanced Timing Advance (ETA), Base Station Subsystem (BSS) oder dergleichen, um weiterhin den physikalischen Standort des Client-Computers 200 auf der Oberfläche der Erde zu bestimmen. Es versteht sich, dass unter verschiedenen Bedingungen, GPS-Transceiver 232 einen physischen Standort innerhalb von Millimetern für den Client-Computer 200 bestimmen kann; und in anderen Fällen der bestimmte physikalische Standort weniger präzise sein kann, wie beispielsweise innerhalb eines Meters oder wesentlich größeren Entfernungen. Bei mindestens einer Ausführungsform kann jedoch Client-Computer 200 durch andere Komponenten andere Informationen bereitstellen, die eingesetzt werden können, um einen physikalischen Standort des Computers, einschließlich z.°B., eine Media Access Control(MAC)-Adresse, IP-Adresse und dergleichen zu bestimmen.
  • Massenspeicher 226 beinhaltet ein Random Access Memory (RAM) 204, einen Nur-Lese-Speicher (ROM) 222 und andere Speichereinrichtungen. Massenspeicher 226 veranschaulicht ein Beispiel für computerlesbare Speichermedien (Vorrichtungen) für die Speicherung von Informationen, wie z.°B. computerlesbare Anweisungen, Datenstrukturen, Programmmodulen oder andere Daten. Massenspeicher 226 speichert ein Basis-Eingabe-/Ausgabesystem (BIOS) 224 für die Steuerung von einfachen Vorgängen von Netzwerkvorrichtung 200. Der Massenspeicher speichert auch ein Betriebssystem 206 für die Steuerung des Betriebs des Client-Computers 200. Es wird gewürdigt werden, dass diese Komponente ein Allzweck-Betriebssystem wie z.°B. eine Version von UNIX oder LINUXTM oder ein spezielles Betriebssystem wie das Microsoft Corporation Betriebssystem Windows® oder das Apple Corporation IOSO Betriebssystem umfassen kann. Das Betriebssystem kann ein Java Virtual Machine-Modul umfassen oder eine Schnittstelle dazu aufweisen, die das Steuern von Hardware-Komponenten und/oder Betriebssystemvorgängen über Java-Anwendungsprogramme ermöglicht.
  • Massenspeicher 226 umfasst weiterhin mindestens einen oder mehrere Datenspeicher 208, die von Client-Computer 200 unter Anderem zum Speichern von Anwendungen 214 und/oder anderen Daten verwendet werden können. Datenspeicher 208 kann beispielsweise auch eingesetzt werden, um Informationen zu speichern, die verschiedene Funktionen des Client-Computers 200 beschreiben. Die Informationen können dann für eine andere Vorrichtung basierend auf einer Vielzahl von Ereignissen bereitgestellt werden, einschließlich als Teil eines Headers bei einer Mitteilung gesendet zu werden, die auf Anforderung gesendet wird, oder dergleichen. Datenspeicher 208 kann auch eingesetzt werden, um Informationen sozialer Netzwerke einschließlich Adressbüchern, Freundeslisten, Aliases, Benutzerprofilinformationen oder dergleichen zu speichern. Weiterhin kann Datenspeicher 208 auch Nachrichten, Webseiteninhalte oder beliebige von einer Vielzahl von benutzererzeugten Inhalten speichern.
  • Mindestens ein Teil der in Datenspeicher 208 gespeicherten Informationen kann auch auf einer anderen Komponente des Client-Computers 200 gespeichert werden, einschließlich, aber nicht beschränkt auf den prozessorlesbaren Speichermedien 230, einem Plattenlaufwerk oder anderen computerlesbaren Speichervorrichtungen (nicht dargestellt) innerhalb Client-Computer 200.
  • Die prozessorlesbaren Speichermedien 230 können flüchtige, nicht-transitive, nicht vorübergehende, nicht-flüchtige, entfernbare und nicht entfernbare Medien beinhalten, die in einem beliebigen Verfahren oder einer Technologie zum Speichern von Informationen implementiert werden, wie beispielsweise computer- oder prozessorlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten. Beispiele von computerlesbaren Speichermedien umfassen RAM, ROM, elektrisch löschbare programmierbare Nur-Lesespeicher (EEPROM), Flash-Speicher oder andere Speichertechnologie, Compact Disc Read-Only Memory (CD-ROM), Digital Versatile Disks (DVD) oder andere optische Speicher, Magnetkassetten, Magnetband, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder irgendein anderes physikalisches Medium, das verwendet werden kann, um die gewünschten Informationen zu speichern, und worauf durch einen Computer zugegriffen werden kann. Die prozessorlesbaren Speichermedien 230 können hierin auch als computerlesbare Speichermedien und/oder computerlesbare Speichervorrichtung bezeichnet werden.
  • Anwendungen 214 können computerausführbare Anweisungen beinhalten, die bei Ausführung durch den Client-Computer 200 übertragen, empfangen werden und/oder ansonsten Netzwerkdaten verarbeiten. Netzwerkdaten können beinhalten, sind aber nicht beschränkt auf Nachrichten (z.°B. SMS, Multimedia Message Service (MMS), Instant Messaging (IM), E-Mail und/oder andere Nachrichten), Audio, Video, und ermöglichen Telekommunikation mit einem anderen Benutzer eines anderen Client-Computers. Anwendungen 214 können beispielsweise einen Browser 218 und andere Anwendungen 220 beinhalten.
  • Browser 218 kann praktisch jede Anwendung beinhalten, die zum Empfangen und Anzeigen von Grafiken, Text, Multimedia, Nachrichten und dergleichen unter Verwendung von praktisch jeder webbasierten Sprache konfiguriert ist. In einer Ausführungsform ist die Browseranwendung aktiviert zum Verwenden von HDML-, WML, WMLScript, JavaScript, SGML, HTML, XML und dergleichen, um eine Nachricht anzuzeigen und zu senden. Jedoch kann jede von einer Vielzahl von anderen webbasierten Programmiersprachen verwendet werden. In einer Ausführungsform kann Browser 218 einem Benutzer von Client-Computer 200 ermöglichen, mit einem anderen Computer im Netzwerk, wie z.°B. dem in 1 dargestellten Bereitstellungsverwaltungs-Servercomputer 116 zu kommunizieren.
  • Andere Anwendungen 220 können beinhalten, sind aber nicht beschränkt auf Kalender, Suchprogramme, E-Mail-Clients, IM-Anwendungen, SMS-Anwendungen, Voice Over Internet Protocol(VOIP)-Anwendungen, Kontakt-Manager, Task-Manager, Transcodierer, Datenbankprogramme, Textverarbeitungsprogramme, Sicherheitsanwendungen, Tabellenkalkulationsprogramme, Spiele, Suchprogramme, usw.
  • Veranschaulichender Netzwerkcomputer
  • 3 stellt ein Ausführungsbeispiel eines Netzwerkcomputers 300 gemäß einer Ausführungsform der Erfindung dar. Netzwerkcomputer 300 kann mehr oder weniger Komponenten als die dargestellten umfassen. Die dargestellten Komponenten sind jedoch ausreichend, um eine veranschaulichende Ausführungsform zur Praktizierung der Erfindung zu offenbaren. Netzwerkcomputer 300 kann zum Betrieb als Server, Client, Peer, einem Host, einer Cloud-Instanz oder einem anderen Computer konfiguriert werden. Netzwerkcomputer 300 kann z.°B. Bereitstellungsverwaltungs-Servercomputer 116 und/oder andere Netzwerkcomputer, wie Computer repräsentieren, die Verbund-Umgebungs-Servercomputer 118, Probe-Umgebungs-Servercomputer 120 oder Live-Umgebungs-Servercomputer 122 umfassen.
  • Netzwerk-Computer 300 beinhaltet einen Prozessor 302, prozessorlesbare Speichermedien 328, eine Netzwerkschnittstelleneinheit 330, eine Eingabe-/Ausgabeschnittstelle 332, Festplattenlaufwerk 334, Videoanzeigeadapter 336 und einen Speicher 326, die alle über den Bus 338 miteinander in Kommunikation stehen. In einigen Ausführungsformen kann Prozessor 302 eine oder mehrere zentrale Verarbeitungseinheiten beinhalten.
  • Wie in 3 veranschaulicht, kann Netzwerkcomputer 300 auch mit dem Internet oder anderen Kommunikationsnetzen über die Netzwerkschnittstelleneinheit 330 kommunizieren, die zur Verwendung mit verschiedenen Kommunikationsprotokollen, einschließlich der TCP/IP-Protokoll konzipiert ist. Netzwerkschnittstelle 330 ist manchmal als Transceiver, Sender-Empfänger-Vorrichtung oder Netzwerkschnittstellenkarte (NIC) bekannt.
  • Netzwerkcomputer 300 umfasst auch eine Eingabe-/Ausgabeschnittstelle 332 zur Kommunikation mit externen Geräten, wie beispielsweise einer Tastatur oder anderen Eingabe- oder Ausgabegeräten auf, die nicht in 3 dargestellt sind. Eingabe-/Ausgabeschnittstelle 332 kann eine oder mehrere Kommunikationstechnologien verwenden, wie beispielsweise USB, Infrarot, NFC, BluetoothTM oder dergleichen.
  • Speicher 326 beinhaltet im Allgemeinen RAM 304, ROM 322 und eines oder mehrere permanente Massenspeichergeräte wie Festplattenlaufwerk 334, Bandlaufwerk, optisches Laufwerk, und/oder Diskettenlaufwerk. Speicher 326 speichert ein Betriebssystem 306 für die Steuerung des Netzwerkcomputers 300. Jedes Allzweckbetriebssystem kann eingesetzt werden. Das Basis-Eingabe-/Ausgabesystem (BIOS) 324 dient auch zur Steuerung von einfachen Vorgängen von Netzwerkcomputer 300.
  • Obwohl separat veranschaulicht, kann Speicher 326 prozessorlesbare Speichermedien 328 beinhalten. Die prozessorlesbaren Speichermedien 328 können auch als computerlesbare Medien, computerlesbare Speichermedien und/oder eine prozessorlesbare Speichervorrichtung bezeichnet werden und/oder diese beinhalten. Die prozessorlesbaren Speichermedien 328 können flüchtige, nicht-flüchtige, nicht vorübergehende, nicht-transitive, entfernbare und nicht entfernbare Medien beinhalten, die in einem beliebigen Verfahren oder einer Technologie zum Speichern von Informationen implementiert werden, wie beispielsweise computer- oder prozessorlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten. Beispiele von computerlesbaren Speichermedien umfassen RAM, ROM, EEPROM, Flash-Speicher oder andere Speichertechnologie, CD-ROM, Digital Versatile Disks (DVD) oder andere optische Speicher, Magnetkassetten, Magnetband, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder andere physikalische Medien, die verwendet werden können, um die gewünschten Informationen zu speichern, und worauf durch einen Computer zugegriffen werden kann.
  • Speicher 326 umfasst weiterhin mindestens einen oder mehrere Datenspeicher 308, die von Netzwerkcomputer 300 unter anderem zum Speichern von Anwendungen 314 und/oder anderen Daten verwendet werden können. Datenspeicher 308 kann beispielsweise auch eingesetzt werden, um Informationen zu speichern, die verschiedene Funktionen des Client-Computers 300 beschreiben. Die Informationen können dann für eine andere Vorrichtung basierend auf einer Vielzahl von Ereignissen bereitgestellt werden, einschließlich als Teil eines Headers bei einer Mitteilung gesendet zu werden, die auf Anforderung gesendet wird, oder dergleichen. Datenspeicher 308 kann auch zum Speichern von Nachrichten, Webseiteninhalt oder dergleichen verwendet werden. Mindestens ein Teil der Informationen kann auch in Datenspeicher 208 auf einer anderen Komponente des Netzwerkcomputers 300 gespeichert werden, einschließlich, aber nicht beschränkt auf prozessorlesbare Speichermedien 328, Plattenlaufwerk 334 oder andere computerlesbare Speichermedien (nicht dargestellt) innerhalb Netzwerkcomputer 300.
  • Datenspeicher 308 kann eine Datenbank, Text, Tabellenkalkulation, Ordner, Datei oder dergleichen beinhalten, die zum Verwalten und Speichern von Benutzer-Konto-IDs, Benutzerprofilen, E-Mail-Adressen, Instant Messaging-Adressen und/oder anderen Netzwerkadressen konfiguriert sein können; oder dergleichen. Datenspeicher 308 kann weiterhin Programmcodes, Daten, Algorithmen und dergleichen für die Verwendung durch einen Prozessor, wie z.°B. Prozessor 302, zum Ausführen umfassen, und um Aktionen durchzuführen. In einer Ausführungsform könnten mindestens einige der Datenspeicher 308 auch auf einer anderen Komponente des Netzwerkcomputers 300, einschließlich, aber nicht beschränkt auf, den prozessorlesbaren Speichermedien 328, Festplattenlaufwerk 334 oder dergleichen gespeichert werden.
  • Datenspeicher 308 kann die Bereitstellungsverwaltungsinformationen 310 beinhalten. In mindestens einer der verschiedenen Ausführungsformen können Bereitstellungsverwaltungsinformationen 310 Informationen wie z.°B. Änderungsstand/-status, Quellcode-Repositories, Testinformationen, Akzeptanzkriterien, Akzeptanzrichtlinien, Benutzerprofile oder dergleichen beinhalten.
  • Anwendungen 314 können computerausführbare Befehle beinhalten, die in die Massenspeicher geladen werden können, und auf Betriebssystem 306 laufen. Beispiele für Anwendungsprogramme können Transcodierer, Planer, Kalender, Datenbankprogramme, Textverarbeitungsprogramme, Hypertext Transfer Protocol(HTTP)-Programme, anpassbare Benutzerschnittstellenprogramme, IPSec-Anwendungen, Verschlüsselungsprogramme, Sicherheitsprogramme, SMS-Nachrichtenserver, IM-Nachrichtenserver, E-Mail-Server, Kontenmanager und usw. beinhalten. Anwendungen 314 können auch Website-Server 318, Hypervisor 319 oder Bereitstellungsverwaltungsanwendung 320 beinhalten.
  • Website-Server 318 kann eine beliebige Vielzahl von Informationen und Diensten repräsentieren, die zum Bereitstellen von Inhalt, einschließlich Nachrichten, über ein Netzwerk für einen anderen Computer konfiguriert sind. So kann Website-Server 318 beispielsweise einen Webserver, einen File Transfer Protocol(FTP)-Server, einen Datenbankserver, einen Content-Server, E-Mail-Server oder dergleichen beinhalten. Website-Server 318 kann die Inhalte einschließlich Nachrichten über das Netzwerk unter Verwendung einer Vielzahl von Formaten bereitstellen, einschließlich, aber nicht beschränkt auf WAP, HDML, WML, SGML, HTML, XML, kompaktes HTML (cHTML), Extensible HTML (xHTML) oder dergleichen.
  • Veranschaulichende Logikarchitektur
  • In mindestens einer der verschiedenen Ausführungsformen kann ein vertikal integriertes kontinuierliches Anwendungsbereitstellungssystem zur Steuerung und Verwaltung von Prozessen und/oder Aktionen eingerichtet sein, die ausgeführt werden können, wenn eine Änderung an einer Anwendung eingeführt werden kann. In einigen Ausführungsformen können die Anwendungen mit einer oder mehreren Anwendungen zusammenwirken, um Dienste für öffentliche oder private Anwender bereitzustellen. Dementsprechend können Defekte, die durch Änderungen eingeführt wurden, die an einer Anwendung vorgenommen wurden, das Potenzial haben, sich auf andere Anwendungen auszuwirken, die in dem Dienst verwendet werden können.
  • 4 stellt System 400 dar, das eine Logikarchitektur für vertikal integrierte kontinuierliche Bereitstellung einer Anwendung ist, in Übereinstimmung mit mindestens einer der verschiedenen Ausführungsformen; In mindestens einer der verschiedenen Ausführungsformen kann das Bereitstellungsverfahren in mehreren Stufen angeordnet werden, wobei jede Phase mehrere Phasen umfasst. In mindestens einer der verschiedenen Ausführungsformen kann jede einzelne Anwendung für einen Dienst mit einer entsprechenden Bereitstellungspipeline verknüpft sein.
  • In mindestens einer der verschiedenen Ausführungsformen können Änderungen, die in eine Anwendung eingeführt werden, durch eine kontinuierliche Bereitstellungspipeline umfassend definierte Stufen verarbeitet werden. Um eine Änderung der Live-Computerumgebung zu erreichen, muss sie erfolgreich jede Stufe der Bereitstellungspipeline bestehen. Scheitert eine Änderung an einer Stufe, dann kann sie zurückgewiesen werden. Zurückgewiesene Änderungen werden von der Bereitstellungspipeline entfernt. Dementsprechend kann die Änderung der kontinuierlichen Bereitstellungspipeline erneut bereitgestellt werden, wobei von der ersten Stufe der Pipeline neu gestartet wird.
  • In mindestens einer der verschiedenen Ausführungsformen kann Anwendung 402 (Anwendung 1) mit einer Bereitstellungspipeline verknüpft werden, die mehrere Stufen beinhaltet, wie z.°B. Änderungsstufe 406, Verifizierungsstufe 408, Review-Stufe 410, Akzeptanzstufe 412, Versandvorgang 414, Verbund-Stufe 416, Probe-Stufe 418, Live-Stufe 420 oder dergleichen. Auf ähnliche Weise kann in mindestens einer der verschiedenen Ausführungsformen Anwendung 404 (Anwendung 2) mit einer anderen
  • Bereitstellungspipeline verknüpft sein, die dieselben Stufen wie die mit Anwendung 402 verknüpfte Bereitstellungspipeline beinhaltet. Beispielsweise Änderungsstufe 422, Verifizierungsstufe 424, Review-Stufe 426, Akzeptanzstufe 428, Versandvorgang 430, Verbund-Stufe 432, Probe-Stufe 434, Live-Stufe 436 oder dergleichen.
  • In mindestens einer der verschiedenen Ausführungsformen kann jede Stufe der Pipeline konkrete Schritte in das Verfahren der Bereitstellung von Änderungen in einer Anwendung für eine Live-Computerumgebung darstellen. Ferner kann jede Stufe einer Bereitstellungspipeline eine oder mehrere Phasen umfassen, die für eine bestimmte Stufe geeignet sein können.
  • In mindestens einer der verschiedenen Ausführungsformen können die spezifischen Stufen und die entsprechenden Phasen fest und/oder ansonsten unveränderlich sein. In mindestens einer der verschiedenen Ausführungsformen können die betrieblichen Details für die Aufgaben, Tests oder Bedingungen, die einer bestimmten Phase einer Stufe entsprechen, in Abhängigkeit von den Anforderungen in Zusammenhang mit einer bestimmten Anwendung variieren.
  • In mindestens einer der verschiedenen Ausführungsformen kann eine Verifizierungsstufe beispielsweise eine Kompilierungsphase beinhalten, wobei in diesem Fall die Maßnahmen, die während der Kompilierungsphase ergriffen wurden, in Abhängigkeit von der Art der Änderung und/oder Art des Projekts variieren. Wenn daher die Änderungen Quellcode beinhalten, der mit einem C-Kompilierer kompiliert werden muss, können Anweisungen in der Phase definiert werden, die den Quellcode automatisch mit dem passenden C-Kompilierer kompilieren. Ebenso, wenn der Quellcode Java ist, können verschiedene Anweisungen erforderlich sein, um den Java-Quellcode zu kompilieren.
  • Dennoch kann in mindestens einer der verschiedenen Ausführungsformen jede kontinuierliche Bereitstellungspipeline eingerichtet sein, um die gleichen Stufen zu beinhalten, wobei jede Stufe die gleichen Phasen beinhaltet.
  • In mindestens einer der verschiedenen Ausführungsformen kann die Änderungsstufe, z.°B. Änderungsstufe 406, als eine optionale oder Pseudostufe angesehen werden, da sie die Aktion der Bestimmung der weiteren Änderungen repräsentieren kann, die für die kontinuierliche Bereitstellungspipeline freigegeben werden sollten. Beispielsweise können Software-Entwickler Änderungen für neue Funktionen oder zur Mängelbehebung für eine Anwendung implementieren. An einem gewissen Punkt kann bestimmt werden, dass die Änderungen bereit für die Freigabe an die Bereitstellungspipeline sind. An diesem Punkt können eine oder mehrere Änderungen gebündelt, benannt, markiert oder andernfalls in Änderungsinformationen integriert werden, die für die kontinuierliche Bereitstellungspipeline freigegeben werden können.
  • In mindestens einer der verschiedenen Ausführungsformen kann die Verifizierungsstufe, z.°B. Verifizierungsstufe 408, eine oder mehrere Phasen, wie z.°B. Kompilieren, statische Codeanalyse, Ausführen von Komponententests oder dergleichen beinhalten. Die Review-Stufe, wie z.°B. Review-Stufe 410, kann eine oder mehrere Phasen, z.°B. Benachrichtigung von Reviewern, Warten auf Reviews oder Ähnliches beinhalten. Die Akzeptanztestphase, wie z.°B. Akzeptanzstufe 412, beinhaltet eine oder mehrere Phasen, wie z.°B. Zusammenführen von geändertem Code in eine Zielverzweigung, Erstellen, Bereitstellen, Einsetzen, Feuerprobe, funktionale Tests, dergleichen.
  • In mindestens einer der verschiedenen Ausführungsformen, wenn die Akzeptanzteststufe erfolgreich ist, kann die Bereitstellungsverwaltungsanwendung eingerichtet sein, um die Aktivierung eines Versandvorgangs als aktiviert zu ermöglichen, z.°B. Versandvorgang 414. Der Bereitstellungsverwaltungsserver kann die Aktivierung eines Versandvorgangs von einem Benutzer ermöglichen, anstatt die Veränderungen automatisch weiter in der Bereitstellungspipeline zu bewegen.
  • In mindestens einer der verschiedenen Ausführungsformen, wenn ein autorisierter Benutzer einen aktivierten Versandvorgang genehmigt/aktiviert, wie z.°B. Versandvorgang 414, kann die Bereitstellungspipeline auf die Verbund-Stufe, wie z.°B. Verbund-Stufe 416, vorgerückt werden. In mindestens einer der verschiedenen Ausführungsformen kann die Verbund-Stufe eine oder mehrere Phasen, wie z.°B. Bereitstellen, Einsetzen, Feuerprobe, funktionale Tests oder dergleichen beinhalten. Anschließend beinhaltet eine Probe-Stufe, wie z.°B. Probe-Stufe 418, im Allgemeinen Phasen, die die gleichen oder ähnlich wie die Phasen in der Verbund-Stufe sein können. Wenn die Probe-Stufe ohne Fehler erfolgreich ist, können die Änderungen zur Live-Stufe, z.°B. Live-Stufe 420, vorgerückt werden. Während der Live-Stufe können Phasen ähnlich wie die Probe-Stufe ausgeführt werden, wie z.°B. Bereitstellen, Einsetzen, Feuerprobe, funktionale Tests, wenngleich sie verschiedene Tests beinhalten können, da in der Live-Stufe die Änderungen und das Testen in einer Live-Computerumgebung eintreten können. Dementsprechend können einige funktionelle Tests unangemessen und/oder unsicher bei der Ausführung in der Live-Computerumgebung sein.
  • In mindestens einer der verschiedenen Ausführungsformen werden alle Akzeptanzumgebungen mit den aktuellen Änderungen aktualisiert, wenn die Verbund-Stufe ohne Fehler ausgeführt wird. Dementsprechend werden die Änderungen an diesem Punkt Teil der Dienstaktivierung und/oder verlangen von anderen Anwendungen die Integration, während die Akzeptanzstufe fortschreitet. Wenn beispielsweise Änderungen für Anwendung 1 eine Datenbankschemaänderung beinhalten, wie z.°B. Hinzufügen einer Spalte zu einer Datenbanktabelle, nachdem die Änderung erfolgreich die Verbund-Stufe durchläuft, muss sich jede andere Anwendung, die Teil des Dienstes ist, an die Datenbankschemaänderung anpassen (falls zutreffend), bevor sie neue Änderungen freigeben können. Mit anderen Worten ausgedrückt wird sie Teil des Dienstes und/oder der Servicecodebasis, nachdem es eine Änderung über die Verbund-Stufe hinaus geschafft hat, wodurch andere Anwendungen gezwungen werden, die Änderungen zu integrieren, sofern notwendig.
  • 5 veranschaulicht eine schematische Ausführungsform von System 500 zur kontinuierlichen Bereitstellung einer Anwendung in Übereinstimmung mit mindestens einer der verschiedenen Ausführungsformen. In mindestens einer der verschiedenen Ausführungsformen können einer oder mehrere Software-Entwickler, dargestellt durch Entwicklungs-Workstation 502, eine oder mehrere Änderungen an einer Anwendung in Form von Änderungsinformationen einführen. In mindestens einer der verschiedenen Ausführungsformen können in einem Repository, z.°B. Repository 504, Änderungsinformationen gespeichert werden. In mindestens einer der verschiedenen Ausführungsformen kann Repository 504 einen Datenspeicher beinhalten, der Quellcode, Konfigurationsskripte, Medien-Assets (z.°B. Bilder, Töne, Video oder dergleichen), Ressourcendateien oder dergleichen für eine Anwendung beinhaltet. In der Praxis kann ein Repository Informationen und Daten für mehrere Anwendungen oder Dienste beinhalten, wobei Informationen für jede Anwendung unter Verwendung von einer oder mehreren bekannten Software-Quellensteuerungsversion(en)/Versionskontrolle/Projektverwaltungstechniken separat und getrennt gehalten werden können.
  • In mindestens einer der verschiedenen Ausführungsformen kann ein Bereitstellungsdienstverwalter 506 aus einer Bereitstellungsverwaltungsanwendung bestehen, wie z.°B. Bereitstellungsverwaltungsanwendung 320, die in einem oder mehreren Netzwerkcomputern im Netzwerk, z.°B. Netzwerkcomputer 300, arbeiten kann. Bereitstellungsverwaltungsdienst 506 kann eingerichtet sein, um den Fortschritt von Änderungsinformationen zu verwalten, die über Entwicklungs-Workstation 502 eingereicht werden, wenn sie sich durch die kontinuierliche Bereitstellungspipeline bewegen.
  • In mindestens einer der verschiedenen Ausführungsformen kann die Akzeptanzcomputerumgebung 508 aus einem oder mehreren Netzwerkcomputern bestehen, die eingerichtet sind, um dahingehend zu arbeiten, dass sie Akzeptanztests in Zusammenhang mit den Änderungsinformationen unterstützen. Außerdem kann in mindestens einer der verschiedenen Ausführungsformen Verbund-Computerumgebung 510 eine Computerumgebung sein, die einen oder mehrere Computer, Netzwerk-Computer, Netzwerke, Anwendungen, Systeme oder dergleichen beinhaltet. Verbund-Computerumgebungen können eingerichtet werden, um ähnlich wie Live-Computerumgebung 514 zu sein. Ebenso kann in mindestens einer der verschiedenen Ausführungsformen Probe-Computerumgebung 512 eingerichtet sein, um ein Klon zu sein oder andernfalls Verbund-Computerumgebung 510 sehr ähnlich zu sein. Und Live-Computerumgebung 514 kann die Computerumgebung darstellen, die eigentlich die Live-/Produktionsversion der Anwendungen hostet, die den Dienst umfassen.
  • In mindestens einer der verschiedenen Ausführungsformen variiert die tatsächliche Anzahl von Computern und/oder Arten von Computern sowie deren Anordnung und Konfiguration je nach den spezifischen Bedürfnissen des entsprechenden Dienstes und/oder seiner Anwendungen. Beispielsweise können Computerumgebungen in mindestens einer der verschiedenen Ausführungsformen einen oder mehrere lokale Computer, verteilte Netzwerkcomputer oder dergleichen, oder eine Kombination davon umfassen. Ebenso kann in mindestens einer der verschiedenen Ausführungsformen jedes der Teile von System 500 eingerichtet sein, um über eines oder mehrere private oder öffentliche Netzwerke, wie Netzwerk 108, Netzwerk 110 oder dergleichen zu kommunizieren.
  • In mindestens einer der verschiedenen Ausführungsformen kann jede definierte Bereitstellungspipeline mit einem bestimmten Teil des Quellcode-Repository verknüpft werden. Ebenso kann jede Bereitstellungspipeline in mindestens einer der verschiedenen Ausführungsformen einer einzelnen Anwendung entsprechen. Außerdem kann der Bereitstellungsverwaltungsdienst 506 in mindestens einer der verschiedenen Ausführungsformen eingerichtet sein, um einem API, wie z.°B. REST-Verfolgung des Zustands der verschiedenen Bereitstellungspipelines, und zum Reagieren auf Anfragen und/oder Status-Updates für die verschiedenen Bereitstellungspipelines verfügbar zu machen.
  • Verallgemeinerter Betrieb
  • Die stellen den verallgemeinerten Betrieb zur vertikal integrierten Continuous Delivery einer Anwendung gemäß zumindest einer der verschiedenen Ausführungsformen dar. In zumindest einer der verschiedenen Ausführungsformen können die Prozesse 600, 700, 800, 900 und 1000, die in Verbindung mit den beschrieben werden, von einem einzigen Netzwerkcomputer, wie dem Netzwerkcomputer 300 in , umgesetzt und/oder auf diesem ausgeführt werden. In anderen Ausführungsformen können diese Prozesse oder Teile dieser Prozesse durch mehrere Netzwerkcomputer, wie Netzwerkcomputer 300 in , umgesetzt und/oder auf diesen ausgeführt werden. In wieder anderen Ausführungsformen können diese Prozesse oder Teile davon durch einen virtualisierten oder mehrere virtualisierte Computer, etwa in einer cloudbasierten Umgebung, umgesetzt und/oder auf diesen ausgeführt werden. Jedoch sind die Ausführungsformen nicht darauf beschränkt und verschiedene Kombinationen von Netzwerkcomputern, Kundencomputern oder Ähnlichem können genutzt werden. Weiterhin können in zumindest einer der verschiedenen Ausführungsformen die in Verbindung mit den beschriebenen Prozesse in Continuous Delivery-Architekturen, etwa denen, die in Verbindung mit den und 5 beschrieben werden, ablaufen.
  • zeigt einen Übersichtsablaufplan für Prozess 600 für laufende Aufträge gemäß zumindest einer der verschiedenen Ausführungsformen. Nach einem Startblock können bei Block 602 in zumindest einer der verschiedenen Ausführungsformen Änderungsinformationen in die Continuous Delivery Pipelinefreigegeben werden. In zumindest einer der verschiedenen Ausführungsformen können Entwickler oder andere Nutzer bestimmen, dass eine oder mehrere Änderungen zu Änderungsinformationen, die zur Freigabe für den Live-Service vorgesehen sein können, verbunden werden können. Änderungsinformationen können Quelltextdateien, Mediendateien, Scripts, Konfigurationsinformationen oder Ähnliches umfassen.
  • Bei Block 604 können die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen das Prüfungsstadium erreichen. In zumindest einer der verschiedenen Ausführungsformen können eine oder mehrere Phasen für die Anwendung und die Änderungsinformationen ausgeführt werden, wenn die Änderungsinformationen im Prüfungsstadium sind. Siehe und die dazugehörende Beschreibung.
  • Bei Entscheidungsblock 606 kann die Steuerung in zumindest einer der verschiedenen Ausführungsformen zu Block 608 fließen, wenn jede Prüfungsphase bestanden wurde und/oder die Bedingungen erfüllt sind; anderenfalls werden die Änderungsinformationen abgelehnt und die Steuerung fließt zurück zum Beginn der Continuous Delivery Pipeline.
  • In zumindest einer der verschiedenen Ausführungsformen werden Änderungsinformationen, die eine Phase nicht erfolgreich bestehen, abgelehnt und aus der Continuous Delivery Pipeline entfernt. Daher können die Eigentümer (z. B. die Softwareentwickler) in zumindest einer der verschiedenen Ausführungsformen Probleme oder Störungen, die zur Ablehnung der Änderungen führten, beseitigen und der Delivery Pipeline die Änderungsinformationen erneut vorlegen.
  • Bei Block 608 gelangen die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen in das Überprüfungsstadium. In zumindest einer der verschiedenen Ausführungsformen können die Änderungsinformationen in diesem Stadium bleiben, bis sie von einem oder mehreren dazu bestimmten Prüfern genehmigt oder abgelehnt werden. Siehe .
  • Bei Entscheidungsblock 610 kann in zumindest einer der verschiedenen Ausführungsformen die Steuerung zu Block 612 fließen, wenn die Änderungsinformationen von ihren Überprüfern genehmigt werden; anderenfalls werden die Änderungsinformationen abgelehnt und die Steuerung kann zu Block 602 zurückfließen.
  • Bei Block 612 erreichen die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen das Akzeptanzteststadium der Continuous Delivery Pipeline. In zumindest einer der verschiedenen Ausführungsformenkönnen die Änderungsinformationen, da die Änderungsinformationen in diesem Stadium das Prüfungsstadium und das Überprüfungsstadium erfolgreich absolviert haben, in den Hauptteil des Quelltexts eingefügt werden. Hier können eine oder mehrere Phasen in Verbindung mit dem Akzeptanzteststadium ausgeführt werden. Siehe .
  • Bei Entscheidungsblock 614 kann die Steuerung in zumindest einer der verschiedenen Ausführungsformen zu Entscheidungsblock 616 fließen, wenn der Akzeptanztest bestanden wurde; anderenfalls werden die Änderungsinformationen abgelehnt und die Steuerung kann zurück zu Block 602 fließen.
  • Bei Entscheidungsblock 616 haben die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen einen Zustand der Versandbereitschaft („Ready-to-Ship“) erreicht, in dem ein autorisierter Nutzer kennzeichnen kann, dass die Änderungsinformationen für die Live-Umgebung freigegeben werden sollen. In zumindest einer der verschiedenen Ausführungsformen kann der autorisierte Nutzer einen Versand durch eine Eingabe über eine Nutzeroberfläche initiieren. In zumindest einer der verschiedenen Ausführungsformen kann Prozess 600 bei Entscheidungsblock 616 bleiben, bis ein Nutzer den Versand autorisiert. Wenn ein autorisierter Nutzer einen Versand initiiert und/oder genehmigt, kann die Steuerung zu Block 618 fließen; anderenfalls kann die Steuerung bei Entscheidungsblock 616 bleiben.
  • Bei Block 618 sind die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen im Vereinigungsstadium der Continuous Delivery Pipeline. Hier können eine oder mehrere Phasen in Verbindung mit dem Vereinigungsstadium ausgeführt werden. Siehe .
  • Bei Entscheidungsblock 620 kann in zumindest einer der verschiedenen Ausführungsformen die Steuerung zu Block 622 fließen, wenn die Tests und/oder Bedingungen des Vereinigungsstadiums bestanden bzw. erfüllt werden; anderenfalls werden die Änderungsinformationen abgelehnt und die Steuerung kann zurück zu Block 602 fließen.
  • Ferner wird in zumindest einer der verschiedenen Ausführungsformen bei Bestehen der Tests und/oder Erfüllung der Bedingungen des Vereinigungsstadiums allen Akzeptanz-Umgebungen eine aktuelle, die Änderungsinformationen enthaltende Anwendungsversion zur Verfügung gestellt. Entsprechend müssen alle künftigen Änderungen zum Bestehen der Akzeptanzstadien mit einer Anwendungsversion integriert werden, die die Änderungsinformationen enthält. Zu diesem Zeitpunkt können die Änderungsinformationen als Teil der Anwendung betrachtet werden, wenngleich sie nicht für die Live-Computerumgebung freigegeben wurden.
  • Bei Block 622 sind die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen im Probestadium der Continuous Delivery Pipeline. Hier können eine oder mehrere Phasen in Verbindung mit dem Probestadium ausgeführt werden. Siehe .
  • Bei Entscheidungsblock 624 kann bei Bestehen der Tests und/oder Erfüllung der Bedingungen des Probestadiums in zumindest einer der verschiedenen Ausführungsformen die Steuerung zu Block 626 fließen; anderenfalls werden die Änderungsinformationen abgelehnt und die Steuerung kann zurück zu Block 602 fließen.
  • Bei Block 626 sind die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen im Live-Stadium. Das Live-Stadium kann eine oder mehrere Test- und Bedingungsprüfphasen umfassen, da die Änderungsinformationen für die Live-/öffentliche Computerumgebung freigegeben werden. In zumindest einer der verschiedenen Ausführungsformen kann beim weiteren Betrieb des Service eine andauernde Überwachung und/oder Prüfung stattfinden. Siehe .
  • Bei Entscheidungsblock 628 kann die Steuerung in zumindest einer der verschiedenen Ausführungsformen zurück zu Block 626 springen, wenn der Betrieb des Live-Serviceweiterhin den Probebetrieb besteht und ansonsten wie erwartet läuft; anderenfalls, wenn den Änderungsinformationen ein Fehler oder ein nicht bestandener Test zugeschrieben werden kann, kann die Steuerung zurück zu Block 602 springen.
  • zeigt einen Übersichtsablaufplan für Prozess 700 zur Prüfung von Änderungsinformationen gemäß zumindest einer der verschiedenen Ausführungsformen. Nach einem Startblock können bei Block 702 Änderungsinformationen für eine Anwendung zur Verfügung gestellt werden. In zumindest einer der verschiedenen Ausführungsformen können die die Änderungsinformationenenthaltenden Änderungen unter Zuhilfenahme einer der mit Quell-/Versionsverwaltungssystemen konsistenten wohlbekannten Methoden miteinander verbunden werden. Zum Beispiel können Änderungen aufgelistet, indexiert, gebündelt, benannt, gekennzeichnet oder anderweitig durch Nutzung der Funktionen eines Quellverwaltungssystems angegeben werden. Ferner kann in zumindest einer der verschiedenen Ausführungsformen die Delivery Management-Anwendung so gestaltet werden, dass Änderungen aufgelistet, indexiert, gebündelt, benannt, gekennzeichnet oder anderweitig ohne Quellverwaltungssystem angegeben werden.
  • Entsprechend kann die Delivery Management-Anwendung so gestaltet werden, dass eine oder mehrere wohlbekannte Datenstrukturen zur Zuordnung der Änderungsinformationen zu einem aktuellen Delivery-Stadium und einer ebensolchen Phase verwendet werden. Zum Beispiel kann eine Datenstruktur in zumindest einer der verschiedenen Ausführungsformen eine Kennung für die Änderungsinformationen und Werte zur Angabe des aktuellen Stadiums und/oder der aktuellen Phase in der Delivery Pipeline enthalten. Ferner kann die Delivery Management-Anwendung so gestaltet werden, dass sie diese Datenstrukturen zeitgleich für mehrere Anwendungen speichert. Entsprechend können in zumindest einer der verschiedenen Ausführungsformen die Änderungsinformationen für mehrere Anwendungen in einem Service gleichzeitig die Delivery Pipeline durchlaufen.
  • Bei Block 704 können der etwaige Quelltext und/oder die etwaigen Quelldokumente, die den in den Änderungsinformationen enthaltenen Änderungen entsprechen können, abgefragt und zusammengestellt werden. In zumindest einer der verschiedenen Ausführungsformen können die Änderungsinformationen in einigen Fällen den Quelltext enthalten, der zu Objektcode, Bytecode oder Ähnlichem kompiliert werden kann. Die Delivery Management-Anwendung kann so gestaltet werden, dass dieser Quelltext automatisch kompiliert wird und ermittelt wird, ob der Quelltext erfolgreich kompiliert wurde. In zumindest einer der verschiedenen Ausführungsformen kann die Entwicklungsmanagement-Anwendung so gestaltet werden, dass die gesamte Anwendung in Verbindung mit den Änderungsinformationen kompiliert wird.
  • In zumindest einer der verschiedenen Ausführungsformen können die Änderungsinformationen Anweisungen für die Kompilierung der Anwendung zur Prüfung enthalten. Dazu können die Speicherorte von Compilern, Projektdateien, Makefiles, die Zuordnung von Änderungsinformationen zu bestimmten Compilern und/oder andere Werkzeuge oder Ähnliches gehören. In zumindest einer der verschiedenen Ausführungsformen kann auch die Delivery Management-Anwendung so konfiguriert sein, dass sie Anweisungen für die Kompilierung der Anwendungen als Teil ihrer für die Bestimmung der Delivery Pipeline verwendeten Konfigurationsinformationen enthält.
  • Bei Block 706 können eine oder mehrere statische Analyseverfahren (z. B. Lint) an dem den Änderungsinformationen entsprechenden Quelltext vorgenommen werden. In zumindest einer der verschiedenen Ausführungsformen kann die Delivery Management-Anwendung so gestaltet werden, dass ein oder mehrere Computerprogramme ausgeführt werden, die entwickelt wurden, um Quelltext zu analysieren und unsichere und/oder suboptimale Programmierung zu melden. Jede Programmiersprache kann verschiedene statische Analyseprogramme sowie unterschiedliche Standards für die Bestimmung, ob Quelltext akzeptabel ist, haben. Ferner können einige statische Analyseprogramme so konfigurierbar sein, dass die Einhaltung der Programmierstandards eines Unternehmens durch die statische Analysephase im Prüfungsstadium automatisch durchgesetzt werden kann.
  • In zumindest einer der verschiedenen Ausführungsformen können die verwendeten besonderen statischen Analyseverfahren in den Änderungsinformationen enthalten sein und/oder Konfigurationsinformationen für die Delivery Pipeline können so gestaltet werden, dass sie Anweisungen enthalten, gemäß denen statische Analyseverfahren für eine bestimmte Anwendung ausgeführt werden sollen.
  • Bei Block 708 können ein oder mehrere Komponententests für die Änderungsinformationen durchgeführt werden. In Abhängigkeit von der Programmierumgebung und/oder den Programmiersprachen können ein oder mehrere Komponententests für einen oder mehrere Teile der Änderungsinformationenbestimmt werden. In zumindest einer der verschiedenen Ausführungsformen kann ein Komponententest-Harnisch in die Anwendung und/oder Anwendungsmodule integriert werden, die eine automatische Durchführung eines oder mehrerer im Vorhinein bestimmter Komponententests veranlassen. In zumindest einer der verschiedenen Ausführungsformen können Komponententests so gestaltet werden, dass sie ein Ergebnis mit bestanden/nicht bestanden ausgeben. Entsprechend kann die Delivery Management-Anwendung so gestaltet werden, dass sie die Ergebnisse der Komponententests überwacht. Es kann einen oder mehrere wohlbekannte Komponententest-Harnische für verschiedene Programmierumgebungen geben. Entsprechend kann die Delivery Management-Anwendung so gestaltet werden, dass diese Komponententest-Harnische unter Verwendung einer oder mehrerer wohlbekannter Techniken integriert werden.
  • Bei Entscheidungsblock 710 kann die Steuerung an einen Abrufprozesszurückgegeben werden, wenn sämtliche Phasen im Prüfungsstadium ausgeführt und erfolgreich bestanden werden; anderenfalls kann die Steuerung wegen eines Fehlers zu Block 712 fließen.
  • Bei Block 712 werden die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen abgelehnt, da sie das Prüfungsstadium nicht bestanden hat. In zumindest einer der verschiedenen Ausführungsformen können Informationen in Verbindung mit dem Nichtbestehen erfasst und die entsprechenden Nutzer benachrichtigt werden, bevor die Steuerung an einen Abrufprozess zurückgegeben wird.
  • In zumindest einer der verschiedenen Ausführungsformen kann Prozess 700 so gestaltet werden, dass die Aktionen eines oder mehrerer Blöcke, wie Block 704 und Block 706, parallel ausgeführt werden können. Zudem kann in zumindest einer der verschiedenen Ausführungsformen Prozess 700 so gestaltet werden, dass Block 712 erreicht werden kann, sobald ein Nichtbestehen oder Fehler erkannt wird und nicht gewartet wird, bis sämtliche Phasen abgeschlossen wurden.
  • zeigt einen Übersichtsablaufplan für Prozess 800 zur Überprüfung von Änderungsinformationengemäß zumindest einer der verschiedenen Ausführungsformen. Nach einem Startblock können bei Block 802 ein oder mehrere mit der Überprüfung der Änderungsinformationen betraute Prüfer benachrichtigt werden, dass Änderungsinformationen zur Überprüfung bereit sind.
  • In zumindest einer der verschiedenen Ausführungsformen kann die Delivery Management-Anwendung so gestaltet werden, dass sie mit einem Quelltextüberprüfungswerkzeug integriert werden kann, sodass Prüfern mehrere Teile des mit der Anwendung verbundenen Quelltexts zugewiesen zu werden können.
  • In zumindest einer der verschiedenen Ausführungsformenkann die Delivery Management-Anwendung so gestaltet werden, dass sie Quelltextüberprüfungseinrichtungen enthält, die ermöglichen, dass einem oder mehreren Prüfern ein oder mehrere Teile des Anwendungsquelltexts zugewiesen werden. Entsprechend kann ein bestimmter Prüfer benachrichtigt werden, wenn die Änderungsinformationen Änderungen an dem Quelltext, mit dessen Überprüfung er betraut ist, umfassen.
  • Bei Entscheidungsblock 804 kann die Steuerung zu Entscheidungsblock 808 fließen, wenn die Änderungsinformationen in einer oder mehreren Überprüfungen genehmigt werden; anderenfalls kann die Steuerung zu Block 806 fließen.
  • In zumindest einer der verschiedenen Ausführungsformen können die Prüfer bei der Überprüfung der Teile der Änderungsinformationen, mit denen sie betraut sind, Genehmigung oder Ablehnung angeben. In zumindest einer der verschiedenen Ausführungsformen kann die Delivery Management-Anwendung die von den Prüfern gegebene Antwort überwachen und aufzeichnen.
  • Bei Block 806 werden in zumindest einer der verschiedenen Ausführungsformen die Änderungsinformationen zurückgewiesen, da zumindest ein Teil von ihnen das Überprüfungsstadium nicht erfolgreich durchlaufen hat. In zumindest einer der verschiedenen Ausführungsformen können die Änderungsinformationen zurückgewiesen werden, sobald ein Prüfer die Änderungsinformationen ablehnt. In zumindest einer der verschiedenen Ausführungsformenkönnen Information, die mit dem Nichtbestehen in Verbindung stehen können, aufgezeichnet und die entsprechenden Nutzer benachrichtigt werden, bevor die Steuerung an einen Abrufprozess zurückgegeben wird.
  • Bei Entscheidungsblock 808 kann die Steuerung an Block 810 fließen, wenn die Genehmigungsschwelle für die Änderungsinformationen erreicht wurde; anderenfalls kann die Steuerung zurück zu Block 802 springen und darauf warten, dass weitere Prüfer die Änderungsinformationen genehmigen.
  • In zumindest einer der verschiedenen Ausführungsformen kann die Delivery Management-Anwendung so gestaltet werden, dass eine oder mehrere Überprüfungsrichtlinien unterstützt werden, die die Anzahl der für die Genehmigung erforderlichen Prüfer bestimmen können. In manchen Ausführungsformen können mehrere Prüfer aufgefordert werden, die Änderungsinformationen zu überprüfen, aber es kann sein, dass nicht die Genehmigung aller für eine Genehmigung erforderlich ist. Zum Beispiel können in zumindest einer der verschiedenen Ausführungsformenvier Prüfer aufgefordert werden, eine Änderung zu prüfen, aber die aktuell geltende Überprüfungsrichtlinie kann zur Erfüllung der Überprüfungsvorgaben zwei Genehmigungen erforderlich machen. Ebenso kann in zumindest einer der verschiedenen Ausführungsformen eine Prüferrangfolge erstellt werden, sodass ein leitender Prüfer nur dann aufgefordert wird, eine Änderung zu überprüfen, wenn bereits zwei hierarchisch weiter unten stehende Prüfer die Änderung genehmigt haben oder Ähnliches. Weitere Überprüfungsrichtlinien sind geplant und werden für einen Durchschnittsfachmann ohne Weiteres ersichtlich sein. Daher sind die in diesem Dokument beschriebenen Richtlinien zumindest ausreichend für die Offenlegung der vorliegenden Erfindungen.
  • Bei Block 810 können die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen als von den Prüfern genehmigt markiert und/oder gekennzeichnet werden, sodass sie in das Akzeptanzteststadium weitergeleitet werden können. Anschließend kann die Steuerung an einen Abfrageprozess zurückgegeben werden.
  • zeigt einen Übersichtsablaufplan von Prozess 900 für den Akzeptanztest der Änderungsinformationen gemäß zumindest einer der verschiedenen Ausführungsformen. Nach einem Startblock können die in den Änderungsinformationen enthaltenen Änderungen bei Block 902 in zumindest einer der verschiedenen Ausführungsformen in einem Zielteil der Anwendung im Speicher zusammengefügt werden.
  • In zumindest einer der verschiedenen Ausführungsformen kann Prozess 900 so gestaltet werden, dass eine oder mehrere Einrichtungen eines Quellverwaltungssystems zur Zusammenfügung einiger oder sämtlicher Änderungen in den Änderungsinformationen in einen Zielteil für die Anwendung verwendet werden. In zumindest einer der verschiedenen Ausführungsformen kann ein Zielteil bestimmt und/oder mit den Änderungsinformationen verbunden werden, wenn oder bevor diese der Delivery Pipeline zur Verfügung gestellt werden. Zudem können die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen Informationen zur Bestimmung des Zielteils enthalten. Für manche Änderungsinformationen kann die Delivery Management-Anwendung so gestaltet werden, dass sie basierend auf einem oder mehreren Scripts und/oder Programmen in Verbindung mit den Änderungsinformationen und/oder der Anwendung spezielle Zusammenfügungsanweisungen ausführt.
  • Bei Block 904 kann in zumindest einer der verschiedenen Ausführungsformen eine neue, die Änderungsinformationen umfassende Anwendungsversion gebaut oder anderweitig erstellt werden. Auch für eine Installation oder einen Einsatz der neuen Anwendungsversion ausreichende Build-Artefakte können ebenfalls erstellt werden. Ähnlich dem Prüfungsstadium können die Änderungsinformationenkompiliert werden und/oder die Anwendung kann mit den Änderungsinformationen kompiliert werden. Ferner können in zumindest einer der verschiedenen Ausführungsformenebenfalls weitere Build-Artefakte, wie Installationspakete, ausführende Programme, Handbuchseiten, Hilfeseiten, Konfigurationsdateien oder Ähnliches, erstellt werden.
  • Bei Block 906 können in zumindest einer der verschiedenen Ausführungsformen die für die Durchführung des Akzeptanztests erforderlichen Ressourcen bereitgestellt werden. In zumindest einer der verschiedenen Ausführungsformen kann die Delivery Management-Anwendung so gestaltet werden, dass bestimmt wird, ob angemessene Computerressourcen verfügbar sind und, wenn nötig, zusätzliche Ressourcen bereitgestellt werden. In zumindest einer der verschiedenen Ausführungsformen können die Ressourcen in einer Akzeptanztestcomputerumgebung bereitgestellt werden, die für die Durchführung des Akzeptanztests ausreichende Einrichtungen enthielt.
  • Zum Beispiel kann die Bereitstellung in zumindest einer der verschiedenen Ausführungsformendie Aktivierung virtueller Instanzen in einer Cloud-Umgebung, die Partitionierung von Datenspeicher, Neuformatierung von Festplatten, Reservierung von Netzwerkadressen oder Ähnliches umfassen.
  • Bei Block 908 kann in zumindest einer der verschiedenen Ausführungsformen die neue Anwendungsversion in der Akzeptanzcomputerumgebung bereitgestellt werden. In zumindest einer der verschiedenen Ausführungsformen können die Build-Artefakte auf bereitgestellte Ressourcen in der Akzeptanzcomputerumgebung kopiert werden. Prozess 900 kann so gestaltet werden, dass dabei vorgegebene Anweisungen ausgeführt werden, die in der Anwendung, den Änderungsinformationen, den Konfigurationsinformationen oder Ähnlichem enthalten sein können, und die die Orte und Befehle für den automatischen Einsatz der erforderlichen Build-Artefakte in der Akzeptanztestcomputerumgebung angeben.
  • In zumindest einer der verschiedenen Ausführungsformen können die während des Build-Schritts erzeugten Installationspakete in die Akzeptanztestcomputerumgebung verschoben werden.
  • Bei Block 901 können in zumindest einer der verschiedenen Ausführungsformen für die neue Anwendungsversion ein oder mehrere Rauchtests und Funktionstests durchgeführt werden. In zumindest einer der verschiedenen Ausführungsformen können die Anwendung und/oder die Änderungsinformationen Anweisungen enthalten, die die besonderen automatischen Tests für die Rauchtests und die Funktionstests festlegen. In zumindest einer der verschiedenen Ausführungsformen können die Tests mithilfe eines für die Anwendung und/oder Änderungsinformationen angemessenen Test-Harnisches durchgeführt werden. In zumindest einer der verschiedenen Ausführungsformen können die Rauchtests und Funktionstests parallel ausgeführt werden.
  • Bei Entscheidungsblock 912 kann in zumindest einer der verschiedenen Ausführungsformen die Steuerung zu Block 916 fließen, wenn alle oben dargestellten Phasen des Akzeptanztests bestanden werden; anderenfalls, bei Nichtbestehen, kann die Steuerung zu Block 914 fließen.
  • Bei Block 912 können die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen als den Akzeptanztest bestanden markiert und/oder gekennzeichnet werden. Ferner kann ein Versand für einen oder mehrere autorisierte Nutzer ermöglicht werden. Anschließend kann die Steuerung an einen Abrufprozess zurückgegeben werden.
  • Bei Block 914 können die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen abgelehnt werden, da sie eine oder mehrere Phasen des Akzeptanztests nicht bestanden haben. In zumindest einer der verschiedenen Ausführungsformen können Informationen, die mit dem Nichtbestehen in Verbindung stehen können, aufgezeichnet und die entsprechenden Nutzer benachrichtigt werden, bevor die Steuerung an einen Abrufprozess zurückgegeben wird. In zumindest einer der verschiedenen Ausführungsformen können die Änderungsinformationen infolge der Ablehnung aus der Delivery Pipeline entfernt werden.
  • zeigt einen Übersichtsablaufplan für Prozess 1000 zur Zurverfügungstellung von Änderungsinformationen an eine Live-Umgebung gemäß zumindest einer der verschiedenen Ausführungsformen. Nach einem Startblock kann die Steuerung bei Block 1002 zu Block 1004 fließen, wenn ein autorisierter Nutzer einen Versand initiiert und/oder genehmigt hat; anderenfalls bleibt die Steuerung bei Entscheidungsblock 1002, bis ein autorisierter Nutzer den Versand initiiert oder annulliert.
  • In zumindest einer der verschiedenen Ausführungsformen kann die Delivery Management-Anwendung so gestaltet werden, dass eine Benutzeroberfläche, etwa ein Dashboard, eingeschaltet wird, die einen aktivierten Knopf anzeigt, wenn die Änderungsinformationen die vorangegangenen Tests bestanden haben. In zumindest einer der verschiedenen Ausführungsformen gibt ein bzw. geben autorisierte Nutzer durch Aktivierung der Benutzeroberfläche an, dass die Delivery Management-Anwendung den Prozess zum Einsatz der Änderungsinformationen und/oder einer Anwendungsversion, die die Änderungsinformationen enthält, an die Live-Computerumgebung initiieren sollte.
  • In zumindest einer der verschiedenen Ausführungsformen kann die Delivery Management-Anwendung so gestaltet werden, dass ein oder mehrere Zugriffslisten zur Ermittlung, ob ein Nutzer zur Initiierung eines Versands autorisiert sein kann, definiert werden. Die Zugriffslisten können so gestaltet werden, dass bestimmte Nutzer bestimmte Anwendungen versenden können. Ferner können in zumindest einer der verschiedenen Ausführungsformeneinige Nutzer als Supernutzer definiert werden, so dass sie den Versand für jede Anwendung initiieren können.
  • Bei Block 1004 sind die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen im Vereinigungsstadium der Continuous Delivery Pipeline. Entsprechend können in zumindest einer der verschiedenen Ausführungsformen in einer Vereinigungscomputerumgebung Ressourcen für die neue Anwendungsversion bereitgestellt werden. Ferner kann die neue Anwendungsversion in zumindest einer der verschiedenen Ausführungsformen in der Vereinigungscomputerumgebung eingesetzt werden, wenn die Ressourcen erfolgreich bereitgestellt werden.
  • In zumindest einer der verschiedenen Ausführungsformen können die Bereitstellungs- und Einsatzphase des Vereinigungsstadiums dem Bereitstellungs- und Einsatzstadium des Akzeptanzstadiums ähneln. Die Bereitstellung kann in der Vereinigungscomputerumgebung in Verbindung mit der Anwendung erfolgen. Entsprechend können die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen Anweisungen zur Bereitstellung von Ressourcen in der Vereinigungscomputerumgebung enthalten. Ebenso kann in zumindest einer der verschiedenen Ausführungsformen die Delivery Management-Anwendung so gestaltet werden, dass sie Konfigurationsinformationen für die Bereitstellung der Anwendungsressourcen in der Vereinigungscomputerumgebung enthält.
  • Bei Block 1006 können in zumindest einer der verschiedenen Ausführungsformen in der Vereinigungscomputerumgebung ein oder mehrere Rauchtests und ein oder mehrere Funktionstests zur Entsprechung der neuen Anwendungsversion ausgeführt werden. In zumindest einer der verschiedenen Ausführungsformen können die Rauchtests und/oder Funktionstests denjenigen Tests ähneln, die im Akzeptanzteststadium ausgeführt werden. Da jedoch die Vereinigungscomputerumgebung so gestaltet werden kann, dass sie der Live-Computerumgebung stärker ähnelt, kann es einen oder mehrere zusätzliche Tests geben, die so konfiguriert sind, dass sie in der Vereinigungscomputerumgebung und nicht in der Akzeptanztestcomputerumgebung ausgeführt werden.
  • Bei Entscheidungsblock 1008 kann die Steuerung in zumindest einer der verschiedenen Ausführungsformen zu Block 1010 fließen, wenn die Phasen des Vereinigungsstadiums bestanden werden; anderenfalls kann die Steuerung zu Block 1016 fließen. In zumindest einer der verschiedenen Ausführungsformen kann, wie oben beschrieben, bestätigt werden, dass die Änderungsinformationen Teil der Codebasis der Anwendung werden, da das Vereinigungsstadium erfolgreich bestanden ist. Entsprechend können die in den Änderungsinformationen enthaltenen Änderungen in zumindest einer der verschiedenen Ausführungsformen nun auch anderen Anwendungen zur Verfügung stehen.
  • Bei Block 1010 haben die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen das Probestadium erreicht. In zumindest einer der verschiedenen Ausführungsformen kann das Probestadium ähnliche Aktionen wie das Vereinigungsstadium enthalten, wenn auch in einer anderen Computerumgebung. Wie oben dargestellt, kann die Probecomputerumgebung ein Nachbau der Vereinigungscomputerumgebung oder anderenfalls dieser sehr ähnlich sein. Hier in Block 1010 können Schritte ausgeführt werden, die den in Block 1004 durchgeführten Schritten ähneln. Bei Block 1012 können Schritte ausgeführt werden, die den in Block 1006 durchgeführten Schritten ähneln. Bei Entscheidungsblock 1014 kann die Steuerung zu Block 1018 fließen, wenn die für Block 1010 und 1012 durchgeführten Aktionen erfolgreich sind; anderenfalls kann die Steuerung zu Block 1016 fließen. Bei Block 1016 werden die Änderungsinformationen in zumindest einer der verschiedenen Ausführungsformen abgelehnt.
  • An Block 1018 haben die Änderungsinformationen in mindestens einer der verschiedenen Ausführungsformen die Live-Phase erreicht. Demgemäß können in mindestens einer der verschiedenen Ausführungsformen ein oder mehrere abschließende Rauchtests durchgeführt werden, ehe die neue Version der Applikation eingeführt wird. Wenn die abschließenden Überprüfungen und/oder Tests erfolgreich sind wird die neue Version der Applikation, die die Änderungsinformationen enthält, aktiviert, um in der Live-Rechnerumgebung betriebswirksam zu sein.
  • In mindestens einer der verschiedenen Ausführungsformen können auch ein oder mehrere Tests vorliegen, der/die auf Live-Überwachung der Live-Rechnerumgebung basieren können. In mindestens einer der verschiedenen Ausführungsformen können diese Tests einen oder mehrere vordefinierte Schwellenwerte beinhalten, die, wenn sie übertroffen werden, einen Mangel- und/oder einen Fehlerwarnungsbericht generieren. Die Abgabe-Management-Applikation kann zum Beispiel angeordnet sein, um einen Warnungsbericht zu erzeugen, (sic: Druckfehler im Ausgangstext: is = ist, korrigiert: if = wenn) wenn die CPU-Verwendung eines oder mehrerer Server einen definierten Schwellewert übersteigt. Zusätzliche gut bekannte Live-Überwachungstests werden ins Auge gefasst und befinden sich im Geltungsbereich dieser Innovationen.
  • In mindestens einer der verschiedenen Ausführungsformen kann die Abgabe-Management-Applikation angeordnet sein, um die Rollen, die die Vereinigungs-Phase und die Probe-Phase in einigen Situationen durchführen, austauschen. In mindestens einer der verschiedenen Ausführungsformen kann die Abgabe-Management-Applikation, wenn die Änderungsinformationen während der Vereinigungs-Phase zurückgewiesen werden, angeordnet sein, um (z.B. in einer Protokolldatei, einem Ereignisprotokoll oder dergleichen) aufzunehmen, dass der Ausfall in der Vereinigungsrechnerumgebung eintrat. In mindestens einer der verschiedenen Ausführungsformen können demgemäß die Änderungsinformationen zurückgewiesen und daran gehindert werden, in der Live-Rechnerumgebung eingesetzt zu werden.
  • Als Antwort darauf können die verantwortlichen Softwareentwickler neue Änderungsinformationen in einem Versuch einführen, die Mängel zu korrigieren. Wenn die neuen Änderungsinformationen die anfänglichen Phasen der Abgabe-Pipeline durchlaufen haben (z.B. Verifizierungs-, Überprüfungs- und Abnahmetesten), kann ein Nutzer wieder in der Lage sein, den Versandbetrieb zu initiieren und/oder zu genehmigen. Nach einem vorherigen Ausfall in der Vereinigungs-Phase kann die Abgabe-Management-Applikation jedoch angeordnet sein, um die Vereinigungs-Phase wieder auszuführen, ehe die Probe-Phase ausgeführt wird. Dies kann die neue Version der Applikation aktivieren, in einer Umgebung getestet zu werden, die den vorherigen Ausfall erlebte, und dann in einer Umgebung, die den vorherigen Ausfall nicht erlebte. Dadurch wird die Möglichkeit vermieden, dass Ausfallartefakte das Testen der neuen Version der Applikation beeinflussen. In mindestens einer der verschiedenen Ausführungsformen beinhalten Ausfallartefakte, die vermieden werden können, teilweise Konfiguration, zurückbelassene Dateien, verwaiste Prozesse, offene/geschlossene Netzwerkverbindungen oder dergleichen. In mindestens einer der verschiedenen Ausführungsformen kann die neue Version der Applikation, wenn die Probe-Phase ausfällt, gleichermaßen zunächst in der Vereinigungs-Rechnerumgebung ausgeführt werden, um die Applikation in einer Umgebung zu testen, die den vorherigen Ausfall nicht erlebte, ehe sie in die Probe-Phase eintritt, in der sie in einer Umgebung getestet werden kann, die den vorherigen Ausfall erlebte. In mindestens einer der verschiedenen Ausführungsformen kann demgemäß, wenn die neue Version der Applikation in einer Rechnerumgebung ausfällt, eine nachfolgende abgeänderte Version der Applikation immer noch in einer Rechnerumgebung getestet werden, die von der Rechnerumgebung getrennt ist, die den vorherigen Ausfall erlebte.
  • Es ist ersichtlich, dass die Figuren und Kombinationen von Handlungen in den ablaufdiagrammartigen Illustrationen durch Computerprogrammanweisungen durchgeführt werden können. Diese Programmanweisungen können an einen Prozessor bereitgestellt werden, um eine Maschine zu produzieren, sodass die Anweisungen, die auf dem Prozessor ausführen, Mittel zum Durchführen der in den Ablaufdiagrammblöcken spezifizierten Handlungen erzeugen. Die Computerprogrammanweisungen können durch einen Prozessor ausgeführt werden, um eine Reihe von Betriebshandlungen zu veranlassen, die durch den Prozessor durchzuführen sind, um einen zum Durchführen der in dem/den Ablaufdiagrammblock/blöcken spezifizierten computerimplementierten Prozess zu erzeugen. Diese Programmanweisungen können auf einer Art maschinenlesbarem Speichermedium, wie zum Beispiel einem Prozessor-lesbaren, nicht transitorischem Speichermedium oder dergleichen, gespeichert werden.
  • Demgemäß unterstützen die Illustrationen Kombinationen von Mitteln zum Durchführen der spezifizierten Handlungen, Kombinationen von Schritten zum Durchführen der spezifizierten Handlungen und Programmanweisungsmittel zum Durchführen der spezifizierten Handlungen. Es ist auch ersichtlich, dass jeder Block der Ablaufdiagrammanweisungen und Kombinationen von Blöcken in den Ablaufdiagrammanweisungen durch Module durchgeführt werden kann, wie zum Beispiel als Hardwaresysteme mit besonderem Zweck, die die spezifizierten Handlungen oder Schritte oder Kombinationen von Hardware und Computeranweisungen mit besonderem Zweck durchführen.

Claims (30)

  1. Verfahren zum Handhaben der Abgabe einer Applikation über ein Netzwerk unter Verwenden eines Netzwerkcomputers, der Anweisungen ausführt, die Handlungen durchführen, umfassend: Bereitstellen von Änderungsinformationen an eine Abgabe-Pipeline, die in der Applikation zu verwenden sind; Verifizieren, dass die Änderungsinformationen zur Verwendung in der Applikation basierend auf mindestens einer statischen Analyse der Änderungsinformationen und mindestens einem Einheitstest der Änderungsinformationen geeignet sind; wenn die Änderungsinformationen bestätigend verifiziert sind, Benachrichtigen mindestens eines Überprüfers, um die Änderungsinformationen basierend auf mindestens einer Überprüfungsrichtlinie zu genehmigen; Erzeugen einer neuen Version der Applikation basierend auf den Änderungsinformationen; Durchführen eines Abnahmetests an der neuen Version der Applikation; wenn ein Ergebnis des Abnahmetests bestätigt wird, Aktivieren eines Versandbetriebs in der Abgabe-Pipeline für die neue Version der Applikation, wobei die Abgabe-Pipeline pausiert wird, bis die Aktivierung des aktivierten Versandbetriebs durch einen befugten Nutzer genehmigt wird; und bei Aktivierung des Versandbetriebs, Beenden der Pause der Abgabe-Pipeline und Einsetzen der neuen Version der Applikation in mindestens einer Rechnerumgebung.
  2. Verfahren nach Anspruch 1, ferner umfassend die Durchführung weiterer Handlungen falls ein Testen der Abgabe-Pipeline ein negatives Ergebnis generiert, beinhaltend: Zurückweisen der Änderungsinformationen; und Entfernen der Änderungsinformationen aus der Abgabe-Pipeline.
  3. Verfahren nach Anspruch 1, wobei das Verifizieren der Änderungsinformationen ferner das Kompilieren eines Teils von Softwarequellcode umfasst, der den Änderungsinformationen zugeordnet ist.
  4. Verfahren nach Anspruch 1, wobei die Überprüfungsrichtlinie ferner umfasst: wenn eine Anzahl von Überprüfern, die die Änderungsinformationen genehmigt, mindestens eine Schwellenwertanzahl erreicht, Genehmigen der Änderungsinformationen; und wenn ein Überprüfer die Änderungsinformationen nicht genehmigt, Zurückweisen der Änderungsinformationen.
  5. Verfahren nach Anspruch 1, wobei das Generieren des Abnahmetestergebnisses ferner umfasst: Zusammenführen der Änderungsinformationen in mindestens einen Hauptzweig des der Abgabe-Pipeline zugeordneten Quellcodes; Bereitstellen von Ressourcen, die der neuen Version der Applikation zugeordnet sind, in einer Abnahmerechnerumgebung; und Einsetzen der neuen Version der Applikation in der Abnahmerechnerumgebung.
  6. Verfahren nach Anspruch 1, wobei das Einsetzen der neuen Version der Applikation in mindestens einer Rechnerumgebung ferner das Einsetzen einer nachfolgenden überarbeiteten Version der Applikation auf einer anderen Rechnerumgebung umfasst, die von der mindestens einen Rechnerumgebung getrennt ist, wenn die neue Version der Applikation auf der mindestens einen Rechnerumgebung ausfällt.
  7. Verfahren nach Anspruch 1, wobei die Abgabe-Pipeline ferner eine Vielzahl von Phasen umfasst, beinhaltend: eine Verifizierungsphase, eine Überprüfungsphase, eine Abnahmetestphase, eine Vereinigungsphase, eine Probephase und eine Live-Phase, wobei jede Phase eine oder mehrere Phasen beinhaltet, die mindestens einen Betrieb beinhalten, der vor dem Übergang zur nächsten Phase in der Abgabe-Pipeline bestätigend durchlaufen wird.
  8. Verfahren nach Anspruch 1, wobei das Generieren der neuen Version der Applikation ferner das Generieren mindestens eines Build-Artefakts zum Installieren der neuen Version der Applikation in der mindestens einen Rechnerumgebung umfasst.
  9. System, das zum Handhaben der Abgabe einer Applikation über ein Netzwerk angeordnet ist, umfassend: einen Netzwerkcomputer, umfassend: ein Sende-Empfangsgerät, das betriebsfähig ist, um über das Netzwerk zu kommunizieren; einen Speicher, der betriebsfähig ist, um mindestens Anweisungen zu speichern; und ein Prozessorgerät, das betriebsfähig ist, um Anweisungen auszuführen, die Handlungen aktivieren, beinhaltend: Bereitstellen von Änderungsinformationen an eine Abgabe-Pipeline, die in der Applikation zu verwenden sind; Verifizieren, dass die Änderungsinformationen zur Verwendung in der Applikation basierend auf mindestens einer statischen Analyse der Änderungsinformationen und mindestens einem Einheitstest der Änderungsinformationen geeignet sind; wenn die Änderungsinformationen bestätigend verifiziert werden, Benachrichtigen mindestens eines Überprüfers zur Genehmigung der Änderungsinformationen basierend auf mindestens einer Überprüfungsrichtlinie; Generieren einer neuen Version der Applikation basierend auf den Änderungsinformationen; Durchführen von Abnahmetesten an der neuen Version der Applikation; wenn ein Ergebnis des Abnahmetests bestätigt wird, Aktivieren eines Versandbetriebs in der Abgabe-Pipeline für die neue Version der Applikation, wobei die Abgabe-Pipeline pausiert wird, bis die Aktivierung des aktivierten Versandbetriebs durch einen befugten Nutzer genehmigt wird; und bei Aktivierung des Versandbetriebs, Beenden der Pause der Abgabe-Pipeline und Einsetzen der neuen Version der Applikation in mindestens einer Rechnerumgebung; und einen Client-Computer, umfassend: ein Sende-Empfangsgerät, das betriebsfähig ist, um über das Netzwerk zu kommunizieren; einen Speicher, der betriebsfähig ist, um mindestens Anweisungen zu speichern; und ein Prozessorgerät, das betriebsfähig ist, um Anweisungen auszuführen, die Handlungen aktivieren, beinhaltend: Bereitstellen der Änderungsinformationen an den Netzwerkcomputer.
  10. System nach Anspruch 9, wobei das Netzwerkcomputerprozessorgerät betriebsfähig ist, Handlungen zu aktivieren, ferner umfassend Durchführung weiterer Handlungen, wenn ein Testen der Abgabe-Pipeline ein negatives Ergebnis generiert, beinhaltend: Zurückweisen der Änderungsinformationen; und Entfernen der Änderungsinformationen von der Abgabe-Pipeline.
  11. System nach Anspruch 9, wobei das Verifizieren der Änderungsinformationen ferner das Kompilieren eines Teils des den Änderungsinformationen zugeordneten Softwarequellcodes umfasst.
  12. System nach Anspruch 9, wobei die Überprüfungsrichtlinie ferner umfasst: wenn eine Anzahl von Überprüfern, die die Änderungsinformationen genehmigt, mindestens eine Schwellenwertanzahl erreicht, Genehmigen der Änderungsinformationen; und wenn ein Überprüfer die Änderungsinformationen nicht genehmigt, Zurückweisen der Änderungsinformationen.
  13. System nach Anspruch 9, wobei das Generieren des Abnahmetestergebnisses ferner umfasst: Zusammenführen der Änderungsinformationen in mindestens einen Hauptzweig der Abgabe-Pipeline zugeordneten Quellcodes; Bereitstellen von Ressourcen, die der neuen Version der Applikation zugeordnet sind, in einer Abnahmerechnerumgebung; und Einsetzen der neuen Version der Applikation in der Abnahmerechnerumgebung.
  14. System nach Anspruch 9, wobei das Einsetzen der neuen Version der Applikation in mindestens einer Rechnerumgebung ferner das Einsetzen einer nachfolgenden überarbeiteten Version der Applikation auf einer anderen Rechnerumgebung umfasst, die von der mindestens einen Rechnerumgebung getrennt ist, wenn die neue Version der Applikation auf der mindestens einen Rechnerumgebung ausfällt.
  15. System nach Anspruch 9, wobei die Abgabe-Pipeline ferner eine Vielzahl von Phasen umfasst, beinhaltend: eine Verifizierungsphase, eine Überprüfungsphase, eine Abnahmetestphase, eine Vereinigungsphase, eine Probephase und eine Live-Phase, wobei jede Phase eine oder mehrere Phasen beinhaltet, die mindestens einen Betrieb beinhalten, der vor dem Übergang zur nächsten Phase in der Abgabe-Pipeline bestätigend durchlaufen wird.
  16. System nach Anspruch 9, wobei das Generieren der neuen Version der Applikation ferner das Generieren mindestens eines Build-Artefakts zum Installieren der neuen Version der Applikation in der mindestens einen Rechnerumgebung umfasst.
  17. Prozessor-lesbares, nicht-transitives Speichermedium, das Anweisungen zum Handhaben der Abgabe einer Applikation über ein Netzwerk beinhaltet, wobei die Ausführung der Anweisungen durch ein Prozessorgerät Handlungen aktiviert, umfassend: Bereitstellen von Änderungsinformationen an eine Abgabe-Pipeline, die in der Applikation zu verwenden sind; Verifizieren, dass die Änderungsinformationen zur Verwendung in der Applikation basierend auf mindestens einer statischen Analyse der Änderungsinformationen und mindestens einem Einheitstest der Änderungsinformationen geeignet sind; wenn die Änderungsinformationen bestätigend verifiziert werden, Benachrichtigen mindestens eines Überprüfgers zur Genehmigung der Änderungsinformationen basierend auf mindestens einer Überprüfungsrichtlinie; Generieren einer neuen Version der Applikation basierend auf den Änderungsinformationen; Durchführen von Abnahmetesten an der neuen Version der Applikation; wenn ein Ergebnis des Abnahmetests bestätigt wird, Aktivieren eines Versandbetriebs in der Abgabe-Pipeline für die neue Version der Applikation, wobei die Abgabe-Pipeline pausiert wird, bis die Aktivierung des aktivierten Versandbetriebs durch einen befugten Nutzer genehmigt wird; und bei Aktivierung des Versandbetriebs, Beenden der Pause der Abgabe-Pipeline und Einsetzen der neuen Version der Applikation in mindestens einer Rechnerumgebung.
  18. Medium nach Anspruch 17, ferner umfassend die Durchführung weiterer Handlungen, falls ein Testen der Abgabe-Pipeline ein negatives Ergebnis generiert, beinhaltend: Zurückweisen der Änderungsinformationen; und Entfernen der Änderungsinformationen aus der Abgabe-Pipeline.
  19. Medium nach Anspruch 17, wobei das Verifizieren der Änderungsinformationen ferner das Kompilieren eines Teils von Softwarequellcode umfasst, der den Änderungsinformationen zugeordnet ist.
  20. Medium nach Anspruch 17, wobei die Überprüfungsrichtlinie ferner umfasst: wenn eine Anzahl von Überprüfern, die die Änderungsinformationen genehmigt, mindestens eine Schwellenwertanzahl erreicht, Genehmigen der Änderungsinformationen; und wenn ein Überprüfer die Änderungsinformationen nicht genehmigt, Zurückweisen der Änderungsinformationen.
  21. Medium nach Anspruch 17, wobei das Generieren des Abnahmetestergebnisses ferner umfasst: Zusammenführen der Änderungsinformationen in mindestens einen Hauptzweig der Abgabe-Pipeline zugeordneten Quellcodes; Bereitstellen von Ressourcen, die der neuen Version der Applikation zugeordnet sind, in einer Abnahmerechnerumgebung; und Einsetzen der neuen Version der Applikation in der Abnahmerechnerumgebung.
  22. Medium nach Anspruch 17, wobei das Einsetzen der neuen Version der Applikation in mindestens einer Rechnerumgebung ferner das Einsetzen einer nachfolgenden überarbeiteten Version der Applikation auf einer anderen Rechnerumgebung umfasst, die von der mindestens einen Rechnerumgebung getrennt ist, wenn die neue Version der Applikation auf der mindestens einen Rechnerumgebung ausfällt.
  23. Medium nach Anspruch 17, wobei die Abgabe-Pipeline ferner eine Vielzahl von Phasen umfasst, beinhaltend: eine Verifizierungsphase, eine Überprüfungsphase, eine Abnahmetestphase, eine Vereinigungsphase, eine Probephase und eine Live-Phase, wobei jede Phase eine oder mehrere Phasen beinhaltet, die mindestens einen Betrieb beinhalten, der vor dem Übergang zur nächsten Phase in der Abgabe-Pipeline bestätigend durchlaufen wird.
  24. Netzwerkcomputer, der zum Handhaben der Abgabe einer Applikation über ein Netzwerk angeordnet ist, umfassend: ein Sende-Empfangsgerät, des betriebsfähig ist, um über ein Netzwerk zu kommunizieren; einen Speicher, der betriebsfähig ist, um mindestens Anweisungen zu speichern; und ein Prozessorgerät, das betriebsfähig ist, um Anweisungen auszuführen, die Handlungen aktivieren, beinhaltend: Bereitstellen von Änderungsinformationen an eine Abgabe-Pipeline, die in der Applikation zu verwenden sind; Verifizieren, dass die Änderungsinformationen zur Verwendung in der Applikation basierend auf mindestens einer statischen Analyse der Änderungsinformationen und mindestens einem Einheitstest der Änderungsinformationen geeignet sind; wenn die Änderungsinformationen bestätigend verifiziert werden, Benachrichtigen mindestens eines Überprüfgers zur Genehmigung der Änderungsinformationen basierend auf mindestens einer Überprüfungsrichtlinie; Generieren einer neuen Version der Applikation basierend auf den Änderungsinformationen; Durchführen von Abnahmetesten an der neuen Version der Applikation; wenn ein Ergebnis des Abnahmetests bestätigt wird, Aktivieren eines Versandbetriebs in der Abgabe-Pipeline für die neue Version der Applikation, wobei die Abgabe-Pipeline pausiert wird, bis die Aktivierung des aktivierten Versandbetriebs durch einen befugten Nutzer genehmigt wird; und bei Aktivierung des Versandbetriebs, Beenden der Pause der Abgabe-Pipeline und Einsetzen der neuen Version der Applikation in mindestens einer Rechnerumgebung.
  25. Netzwerkcomputer nach Anspruch 24, wobei das Netzwerkcomputerprozessorgerät betriebsfähig ist, Handlungen zu aktivieren, ferner umfassend die Durchführung weiterer Handlungen falls ein Testen der Abgabe-Pipeline ein negatives Ergebnis generiert, beinhaltend: Zurückweisen der Änderungsinformationen; und Entfernen der Änderungsinformationen aus der Abgabe-Pipeline.
  26. Netzwerkcomputer nach Anspruch 24, wobei das Verifizieren der Änderungsinformationen ferner das Kompilieren eines Teils des den Änderungsinformationen zugeordneten Softwarequellcodes umfasst.
  27. Netzwerkcomputer nach Anspruch 24, wobei die Überprüfungsrichtlinie ferner umfasst: wenn eine Anzahl von Überprüfern, die die Änderungsinformationen genehmigt, mindestens eine Schwellenwertanzahl erreicht, Genehmigen der Änderungsinformationen; und wenn ein Überprüfer die Änderungsinformationen nicht genehmigt, Zurückweisen der Änderungsinformationen.
  28. Netzwerkcomputer nach Anspruch 24, wobei das Generieren des Abnahmetestergebnisses ferner umfasst: Zusammenführen der Änderungsinformationen in mindestens einen Hauptzweig der Abgabe-Pipeline zugeordneten Quellcodes; Bereitstellen von Ressourcen, die der neuen Version der Applikation zugeordnet sind, in einer Abnahmerechnerumgebung; und Einsetzen der neuen Version der Applikation in der Abnahmerechnerumgebung.
  29. Netzwerkcomputer nach Anspruch 24, wobei das Einsetzen der neuen Version der Applikation in mindestens einer Rechnerumgebung ferner das Einsetzen einer nachfolgenden überarbeiteten Version der Applikation auf einer anderen Rechnerumgebung umfasst, die von der mindestens einen Rechnerumgebung getrennt ist, wenn die neue Version der Applikation auf der mindestens einen Rechnerumgebung ausfällt.
  30. Netzwerkcomputer nach Anspruch 24, wobei die Abgabe-Pipeline ferner eine Vielzahl von Phasen umfasst, beinhaltend: eine Verifizierungsphase, eine Überprüfungsphase, eine Abnahmetestphase, eine Vereinigungsphase, eine Probephase und eine Live-Phase, wobei jede Phase eine oder mehrere Phasen beinhaltet, die mindestens einen Betrieb beinhalten, der vor dem Übergang zur nächsten Phase in der Abgabe-Pipeline bestätigend durchlaufen wird.
DE112015002967.2T 2014-06-25 2015-06-18 Vertikal integrierte kontinuierliche Bereitstellung einer Anwendung Withdrawn DE112015002967T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/315,047 US9021458B1 (en) 2014-06-25 2014-06-25 Vertically integrated continuous delivery of an application
US14/315,047 2014-06-25
US14/697,367 US9507582B2 (en) 2014-06-25 2015-04-27 Vertically integrated continuous delivery of an application
US14/697,367 2015-04-27
PCT/US2015/036329 WO2015200079A1 (en) 2014-06-25 2015-06-18 Vertically integrated continuous delivery of an application

Publications (1)

Publication Number Publication Date
DE112015002967T5 true DE112015002967T5 (de) 2017-06-01

Family

ID=52987171

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015002967.2T Withdrawn DE112015002967T5 (de) 2014-06-25 2015-06-18 Vertikal integrierte kontinuierliche Bereitstellung einer Anwendung

Country Status (4)

Country Link
US (2) US9021458B1 (de)
DE (1) DE112015002967T5 (de)
GB (1) GB2542996A (de)
WO (1) WO2015200079A1 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015112170A1 (en) * 2014-01-27 2015-07-30 Hewlett-Packard Development Company, L.P. Continuous integration with reusable context aware jobs
US9021458B1 (en) * 2014-06-25 2015-04-28 Chef Software, Inc. Vertically integrated continuous delivery of an application
US11176106B2 (en) * 2014-11-19 2021-11-16 Unisys Corporation Dynamic modification of database schema
US10303467B2 (en) * 2015-04-13 2019-05-28 Oracle International Corporation Target typing-dependent combinatorial code analysis
CN106407100A (zh) * 2015-07-29 2017-02-15 中兴通讯股份有限公司 一种实现持续集成测试的方法及装置
US10437585B2 (en) * 2015-10-23 2019-10-08 Oracle International Corporation Managing highly scalable continuous delivery pipelines
US9928039B2 (en) * 2015-12-03 2018-03-27 International Business Machines Corporation Stateful development control
US20170163732A1 (en) * 2015-12-04 2017-06-08 Vmware, Inc. Inter-task communication within application-release-management pipelines
US10095220B1 (en) * 2015-12-11 2018-10-09 Jpmorgan Chase Bank, N.A. Modifying user tools to include control code for implementing a common control layer
US10372834B2 (en) * 2016-01-15 2019-08-06 DISCUS Software Company Creating and using an integrated technical data package
US10216509B2 (en) * 2016-03-18 2019-02-26 TUPL, Inc. Continuous and automatic application development and deployment
US10146524B1 (en) * 2016-03-28 2018-12-04 Amazon Technologies, Inc. Preemptive deployment in software deployment pipelines
WO2017201480A1 (en) * 2016-05-19 2017-11-23 Integnology Corporation Parallel execution of continuous delivery pipeline segment models
US20190235846A1 (en) * 2016-05-19 2019-08-01 Integnology Corporation Continuous delivery pipeline segment models
US11531528B2 (en) 2016-05-19 2022-12-20 Cloudbees, Inc. Systems and methods for non-disruptive continuous software delivery
WO2017201479A1 (en) * 2016-05-19 2017-11-23 Integnology Corporation On-demand execution of continuous delivery pipeline segment models
CN106201867B (zh) * 2016-06-29 2019-01-29 武汉斗鱼网络科技有限公司 一种Linux平台下可定制的自动单元测试方法及系统
JP6506222B2 (ja) 2016-07-28 2019-04-24 ファナック株式会社 Cad/cam−cnc統合システム
US20180217824A1 (en) * 2017-01-30 2018-08-02 Wipro Limited Method and system for deploying an application package in each stage of application life cycle
CN110447018B (zh) * 2017-03-23 2023-02-10 日本电气株式会社 操作管理服务器、开发操作支持系统及其方法以及存储其程序的非暂时性计算机可读介质
EP3407188A1 (de) * 2017-05-26 2018-11-28 Deutsche Telekom AG Continuous delivery in telekommunikationsnetzwerken
US10754641B2 (en) 2017-05-30 2020-08-25 Red Hat, Inc. Optimizing continuous integration (CI) using code review quality
US10318285B1 (en) * 2017-08-16 2019-06-11 Amazon Technologies, Inc. Deployment of infrastructure in pipelines
US10671368B2 (en) * 2017-11-03 2020-06-02 International Business Machines Corporation Automatic creation of delivery pipelines
CN109240905A (zh) * 2018-07-02 2019-01-18 链家网(北京)科技有限公司 软件测试方法和系统
EP3671587A1 (de) * 2018-12-19 2020-06-24 Sap Se Verfahren zum ändern eines von einem produktionssystem ausgeführten softwarecodes
US11544050B1 (en) * 2019-07-18 2023-01-03 Amazon Technologies, Inc. Software patch automation
US11061808B2 (en) * 2019-10-03 2021-07-13 Red Hat, Inc. Troubleshooting test failures that occurred during a testing phase of a continuous integration pipeline
US20210182054A1 (en) * 2019-12-16 2021-06-17 Intuit Inc. Preventing unexpected behavior in software systems due to third party artifacts
US11481203B2 (en) * 2020-04-30 2022-10-25 Forcepoint Llc Shared pipeline for multiple services
US11163673B1 (en) * 2020-05-01 2021-11-02 Sap Se Enhanced testing by automated reuse of test metrics
EP3944085A1 (de) * 2020-07-24 2022-01-26 Rimo Capital Ltd Ein informationsverarbeitungssystem mit intelligentem programm "rauchtest"
US11544042B1 (en) * 2021-09-22 2023-01-03 Saankhya Labs Pvt. Ltd. Deploying a radio access network containerized network function (RAN CNF) that is portable across a plurality of RAN hardware platforms

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877780B2 (en) * 2005-04-01 2011-01-25 Parasoft Corporation System and method for enforcing functionality in computer software through policies
US20130339232A1 (en) * 2005-10-06 2013-12-19 C-Sam, Inc. Widget framework for securing account information for a plurality of accounts in a wallet
US20070169083A1 (en) * 2005-12-12 2007-07-19 Penubolu Shyam P Method for secure in-service software upgrades
JP2009217656A (ja) * 2008-03-12 2009-09-24 Hitachi Ltd 情報機器におけるソフトウェア更新システム
US20090288071A1 (en) * 2008-05-13 2009-11-19 Microsoft Corporation Techniques for delivering third party updates
US9003387B2 (en) * 2009-09-25 2015-04-07 Fisher-Rosemount Systems, Inc. Automated deployment of computer-specific software updates
US8589535B2 (en) * 2009-10-26 2013-11-19 Microsoft Corporation Maintaining service performance during a cloud upgrade
US8578366B2 (en) * 2010-04-13 2013-11-05 Avaya Inc. Application store
US8392908B2 (en) * 2010-07-30 2013-03-05 Sap Ag Standardized procedures for implementing software changes
US8782606B1 (en) * 2010-08-22 2014-07-15 Panaya Ltd. Method and system for identifying non-executable human-readable test scenarios to be updated due to code changes
US8505004B2 (en) * 2011-05-20 2013-08-06 Xerox Corporation Methods and systems for providing software updates using a cloud administration system
US9411575B2 (en) * 2012-06-13 2016-08-09 Ebay Enterprise, Inc. Systems and methods for quality assurance automation
US9766873B2 (en) * 2012-08-17 2017-09-19 Tripwire, Inc. Operating system patching and software update reconciliation
US20140068595A1 (en) * 2012-08-28 2014-03-06 Ofer Belinsky Automatic mobile application updates
US8924916B2 (en) * 2012-11-09 2014-12-30 Bank Of America Corporation Software development standards compliance system
US9183117B2 (en) * 2013-06-20 2015-11-10 Abbott Laboratories Inc. Method for developing and testing a connectivity driver for an instrument
US9639448B2 (en) * 2013-06-27 2017-05-02 Sap Se Multi-version systems for zero downtime upgrades
US9032373B1 (en) * 2013-12-23 2015-05-12 International Business Machines Corporation End to end testing automation and parallel test execution
US9021458B1 (en) * 2014-06-25 2015-04-28 Chef Software, Inc. Vertically integrated continuous delivery of an application

Also Published As

Publication number Publication date
WO2015200079A1 (en) 2015-12-30
US9507582B2 (en) 2016-11-29
US20150378717A1 (en) 2015-12-31
GB2542996A (en) 2017-04-05
GB201701039D0 (en) 2017-03-08
US9021458B1 (en) 2015-04-28

Similar Documents

Publication Publication Date Title
DE112015002967T5 (de) Vertikal integrierte kontinuierliche Bereitstellung einer Anwendung
US10620944B2 (en) Cloud-based decision management platform
US8707246B2 (en) Engineering project event-driven social networked collaboration
US10055205B2 (en) Collaborative development of software programs based on service invocations
US10769250B1 (en) Targeted security monitoring using semantic behavioral change analysis
US9164753B2 (en) Generating software updates
US10896121B2 (en) Methods and systems for software related problem solution
DE202014010889U1 (de) Vorrangige statische gehostete Webanwendungen
DE112020003944T5 (de) Verfahren, System und Speichermedium für die Sicherheit von Softwarekomponenten
DE112015005151T5 (de) Kurzlebige Anwendungen
US10025562B2 (en) Collaborative development of a web-based service
Rahman et al. Security misconfigurations in open source kubernetes manifests: An empirical study
US10719375B2 (en) Systems and method for event parsing
Ciancarini et al. An open source environment for an agile development model
US11379192B2 (en) Saving a snippet of visual programming logic for reuse amongst programs created using an automation building tool
US9569516B2 (en) Method and device for executing an enterprise process
US10838698B2 (en) Providing a reuse capability for visual programming logic within a building tool
Gilbert et al. Software Architecture Patterns for Serverless Systems: Architecting for innovation with events, autonomous services, and micro frontends
DE112014001462T5 (de) Konfigurationsverwaltung für eine Ressource mit Voraussetzungen
DE112016005867T5 (de) Live-Pipeline-Vorlagen - Erstellung und Erweiterbarkeit der Vorlagen
US20160041897A1 (en) Generation of automated unit tests for a controller layer system and method
US8719766B1 (en) System and method for identifying and adding files to a project manifest
US20140215005A1 (en) System and method for managing content
Dowling Successfully transitioning a research project to a commercial spin‐out using an agile software process
Révész et al. Continuous A/B testing in containers

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: PROGRESS SOFTWARE CORP., BEDFORD, US

Free format text: FORMER OWNERS: BROWN, CHRISTOPHER, SEATTLE, WASH., US; CHEF SOFTWARE, INC., SEATTLE, WASH., US; FALCON, SETH, YOSEF, SEATTLE, WASH., US; GRANQUIST, LAMONT, SEATTLE, WASH., US; JACOB, ADAM, BRENT, SEATTLE, WASH., US; MORROW, JON, SEATTLE, WASH., US; SMITH, KEVIN, SEATTLE, WASH., US

R005 Application deemed withdrawn due to failure to request examination