Es tut uns leid. Wir konnten keine Übereinstimmung für Ihre Suche finden.

Beachten Sie die folgenden Tipps, um das Gesuchte zu finden:

  • Prüfen Sie die Schreibweise des Suchbegriffs.
  • Verwenden Sie Synonyme für das eingegebene Stichwort, z. B. „Anwendung“ statt „Software“.
  • Beginnen Sie eine neue Suche.
Kontaktieren Sie uns Bei Oracle Cloud anmelden

Moderne Anwendungsentwicklung

Es ist schwierig, gute moderne Anwendungen zu erstellen. Die Tools, Constraints und Möglichkeiten ändern sich zu schnell. Oracle bietet ein Framework für die Anwendungsentwicklung, um die Entscheidungsfindung in der Architektur zu vereinfachen und Anwendungen zu erstellen und auszuführen, die hochverfügbar, zuverlässig, vollständig sicher und konform sind. Dabei werden Designprinzipien und Technikempfehlungen verwendet.

Wissen Sie schon, was Sie tun wollen? Direkt zu unserer Architekturbibliothek wechseln

Kernanforderungen

Gemeinsame Anforderungen für moderne Anwendungen.


Sicherheit und Compliance

Stimmen Sie Sicherheitsrichtlinien mit Best Practices der Branche ab und setzen Sie sie über die Ebenen des App-Stacks durch. Vertraulichkeit und Integrität von Daten sicherstellen Mit der Berechtigungsverwaltung können Sie bestimmen und verwalten, wer bestimmte Aufgaben ausführen kann. Vereinfachen Sie die Erkennung und Diagnose von Sicherheitsereignissen.


Verfügbarkeit

Stellen Sie Apps 24/7/365 ohne Ausfallzeit, geplant oder anderweitig zur Verfügung.


Skalierbarkeit

Skalieren Sie von Zehntausenden bis Millionen Benutzern ordnungsgemäß, und bewältigen Sie wachsende Datenmengen, ohne die App in Zukunft neu entwerfen zu müssen.


Performance

Geben Sie die geringste Latenz und den höchsten Durchsatz an, die für eine bestmögliche Benutzererfahrung erforderlich sind.


Agilität

Verlassen Sie sich auf moderne Automatisierungstools und -methoden für Erstellungs- und Bereitstellungsprozesse. Vermeiden Sie Engpässe, die durch manuelle Aufgaben entstehen.


Transparenz

Erfassen Sie Leistungskennzahlen, und überwachen Sie die Systemleistung auf jede Beeinträchtigung. Ermöglichen Sie Teams, automatisch Alarme zu generieren, wenn diese Messungen außerhalb der erwarteten Grenzen liegen.


Zuverlässigkeit

Wenn Probleme auftreten, stellen Sie sicher, dass Anwendungen ordnungsgemäß wiederhergestellt werden, verlorene Funktionen schnell wiederhergestellt, Datenverlust verhindert und die Benutzererfahrung nicht negativ beeinflusst.


Kostenoptimierung

Führen Sie den Prozess mit möglichst niedrigen Gesamtkosten aus, um alle anderen Anforderungen auszugleichen.


Portabilität

Stellen Sie sicher, dass die Anwendungsarchitektur offenen Standards entspricht – was die Migration von On-Premises in die Cloud oder von Anbietern vereinfacht.

    Designprinzipien

    Best Practices für Anwendungsarchitekturen.

     

    Alle öffnen Alle schließen

  • Verwenden Sie nach Möglichkeit Low-Code-Plattformen und nutzen Sie ausgereifte Programmiersprachen und schlanke Frameworks, wenn dies nicht möglich ist

    Überblick
    Die Programmiersprachen und Frameworks, die Sie zum Erstellen Ihrer App verwenden, spielen im Laufe der Zeit eine entscheidende Rolle bei der erfolgreichen Bereitstellung und Wartung Ihrer App. Entscheidungen zu Sprache und Framework haben langfristige Konsequenzen für die Skalierung Ihres Unternehmens, den Betrieb Ihrer App und die Bereitstellung hochwertiger Funktionen für Ihre Kunden. Änderungen an Sprache oder Framework sind in der Regel teuer. Die Unterstützung paralleler Ökosysteme mehrerer Sprachen und Frameworks erhöht die Komplexität und reduziert die Agilität.

    Die Auswahl von Sprache und Rahmen wirkt sich auf eine Reihe von Faktoren aus, darunter Liefergeschwindigkeit, Stabilität und Stärke des bestehenden Ökosystems, Einsatzbereitschaft und Produktionsleistung. Verwenden Sie nach Möglichkeit Low-Code-Plattformen, damit Sie sich auf die Lösung Ihrer Geschäftsprobleme konzentrieren können, anstatt den Komplikationen der traditionellen Entwicklung zu begegnen. Wenn die Anforderungen Ihrer App komplexer sind, wählen Sie ausgereifte Sprachen und schlanke Frameworks aus.

    Grundlegende Details
    Mit Low-Code-Plattformen können Sie Unternehmensanwendungen schneller erstellen, testen und bereitstellen als mit herkömmlicher manueller Codierung. Diese Plattformen eignen sich gut für die Erstellung opportunistischer Apps in Zusammenarbeit mit Stakeholdern, die Erstellung von Datenberichts- und Analyse-Apps, die Erweiterung von SaaS-Apps und die Modernisierung älterer Apps. Mit diesem Ansatz können Sie Komplikationen wie Datenvisualisierung, Datenerfassung, Datenanalysen, Sicherheit, Barrierefreiheit, Performance und Globalisierung vermeiden. Eine Low-Code-Plattform verringert diese Komplikationen erheblich und reduziert die von Ihnen verwaltete Codemenge drastisch.

    Wenn Ihre App jedoch anspruchsvollere Anforderungen hat, wählen Sie eine ausgereifte Programmiersprache in Verbindung mit einem schlanken Framework. Wählen Sie bei der Auswahl einer Programmiersprache eine Programmiersprache aus, die Ihnen folgende Vorteile bietet:

    • Sicherheit
    • Hohe Performance und Effizienz
    • Tool-Support
    • Umfangreiche, aktuelle Dokumentation
    • Ein Ökosystem aus Bibliotheken
    • Compliance mit einer Testsuite oder Referenzimplementierung
    • Eine starke Community

    Neuere Sprachen haben in der Regel eine höhere Änderungsrate bei ihrem Sprachdesign und den entsprechenden Ökosystemen und Bibliotheken. Eine höhere Änderungsrate bedeutet, dass es schwieriger ist, Risiken zu bewerten und teurer, später Änderungen vorzunehmen.

    Wählen Sie bei der Auswahl eines Frameworks ein Framework aus, das Open Source ist. Open Source-Frameworks werden ständig Peer Reviews unterzogen. Das bedeutet, dass die Features dem nahe kommen, was die meisten Entwickler wollen, weil sie zur Erstellung und Wartung des Frameworks beitragen. Bugs werden schnell gefunden und behoben. Es ist auch sinnvoll, dass Sie ein schlankes Framework auswählen, das nur wenige Ressourcen wie CPU, Arbeitsspeicher, Netzwerkbandbreite oder Datei-Handles verbraucht.

    Verwenden Sie ein App-Framework, um den Aufgabenfokus (Geschäftslogik über Textbausteine und Gerüst) mit Flexibilität (zur Unterstützung aktueller und zukünftiger Featureanforderungen) aufeinander abzustimmen. Führen Sie ein Framework ein, das benutzerfreundliche, vernünftige und nicht umstrittene Standardwerte für allgemeine Features wie Logging, Telemetrie, Sicherheit, Konfiguration sowie für allgemeine Muster bereitstellt, wie das Erstellen von REST-APIs.

    Empfehlungen von Oracle
    Oracle APEX ist eine Low-Code-Plattform, die Ihnen hochrangige Komponenten wie Formulare, Diagramme und UI-Widgets bereitstellt. APEX stellt außerdem allgemeine Entwurfsmuster über eine intuitive grafische Entwicklungsumgebung bereit. Mit APEX entwickelte Apps können über SQL auf lokale Daten zugreifen und mit REST-APIs in externe Services integriert werden. Darüber hinaus können Sie die in APEX entwickelten Funktionen als REST-APIs für die externe Nutzung veröffentlichen.

    Falls eine Low-Code-Plattform für Ihre App ungeeignet ist, ist es sinnvoll, Java als Programmiersprache zu verwenden. Java bietet eine stabile und umfassende Palette an Funktionen für die meisten gängigen Anwendungsfälle sowie ein gesundes Ökosystem aus vertrauenswürdigen und stabilen Bibliotheken und Frameworks zur Entwicklung moderner Apps. Der Fokus von Java auf Einfachheit und Lesbarkeit sowie seine hervorragende Unterstützung für Entwicklertools – einschließlich statischer Analysetools und Test-Frameworks – reduzieren die Wartungskosten für Software und das Risiko von Bugs in Produktionsanwendungen.

    Verwenden Sie GraalVM, um Ihre App zu entwickeln und auszuführen. GraalVM ist eine JDK-Distribution, die durch dynamische Laufzeitoptimierung, häufiges und proaktives Patching von Sicherheitslücken und kostengünstige Leistungsanalysen und Diagnosetools wie Java Flight Recorder die Stabilität von Java mit erstklassiger Performance verbindet.

    Erstellen Sie Ihre App mit einem API-First-Ansatz, der entweder das Helidon- oder Micronaut-Framework verwendet. Beide Frameworks bieten ein Gerüst, mit dem die Zeit für die Bereitstellung Ihrer App und benutzerfreundliche Muster für gängige Anwendungsfälle, wie REST-APIs, erheblich verkürzt werden kann, basierend auf einer Reihe einfacher, nicht kontroverser Framework-Entscheidungen für gemeinsame Aktivitäten, wie Logging, Telemetrie und Speicher. Beide Frameworks unterstützen leistungsstarke Services durch Unterstützung für blockierungsfreie E/A mit idiomatischen reaktiven APIs und geringer Latenz durch Unterstützung für leistungsstarke Netzwerkbibliotheken.

    • Wählen Sie Helidon MP für Anwendungen, die eng mit dem Java-Ökosystem des Unternehmens abgestimmt sind, wie CDI, JAX-RS oder JPA. Die standardmäßige Unterstützung von Helidon für moderne Java-Unternehmensmuster durch MicroProfile vereinfacht das Portieren vorhandener Java EE-Apps in Microservices.
    • Wählen Sie Micronaut oder Helidon SE für Apps, die nicht vom vorhandenen Java-Ökosystem des Unternehmens abhängig sind. Das Kompilierungszeit-Anwendungsgerüst von Micronaut erhöht die App-Performance zur Laufzeit und ermöglicht die Überprüfung auf Framework-Ebene, wodurch viele Sicherheits- und Qualitätsprobleme im Zusammenhang mit Reflexion und Laufzeitkonfiguration beseitigt werden können.

    Sowohl Helidon als auch Micronaut unterstützen das native GraalVM-Image, mit dem Sie speichereffiziente und kompakte Apps erstellen können.

  • Erstellen Sie Ihre App als Suite von Services, die über REST-APIs kommunizieren

    Überblick
    Teilen Sie die Funktionen oder Aufgaben Ihrer App in unabhängige lose gekoppelte Services auf, die in Verbindung miteinander funktionieren. Entwerfen Sie jeden Service mit einem begrenzten Funktionsumfang, der auf ein Feature oder eine Funktion fokussiert ist. Im Vergleich zu einer traditionellen monolithischen Architektur verbessert dieser Ansatz die App-Wartung, die Funktionsentwicklung, Tests, das Deployment und die Skalierbarkeit.

    Nutzen Sie einen REST-API-Designansatz, um klare und verständliche Schnittstellen für die Kommunikation mit und zwischen Services bereitzustellen. Ein API-Vertrag bietet den erforderlichen Mechanismus für die Zusammenarbeit von Teams und die Nutzung von Funktionen, ohne auf die internen Details der Implementierung eines Service angewiesen zu sein. Beispiel: Ein Service kann vollständig im Besitz eines Entwicklungsteams sein, das sich bei dessen Implementierung frei verbessern kann, ohne Codeabhängigkeiten mit anderen Entwicklungsteams koordinieren zu müssen.

    Grundlegende Details
    Beginnen Sie mit einem Contract-First-Ansatz, indem Sie die REST-API eines Service angeben. Danach erstellen Sie einen Prototyp für eine Implementierung der API, damit Ihre Stakeholder, zum Beispiel die Teams, die sie verwenden, diese testen können. Wenn sich alle zu den Details der API einig sind, können unabhängige Teams parallel arbeiten, um den Service und andere Services zu implementieren, die sie nutzen.

    Definieren Sie Policendurchsetzungen für Sicherheits- und Servicevereinbarungen frühzeitig im Produktlebenszyklus, um sicherzustellen, dass alle Aspekte des Servicevertrags eindeutig sind.

    Behandeln Sie die API-Spezifikation als Code, und verwalten Sie sie in einem Versionskontrollsystem zusammen mit Ihrem Quellcode und Ihren Policy-Konfigurationen.

    Empfehlungen von Oracle
    Geben Sie Ihre API im implementierungsunabhängigen Format OpenAPI an, und speichern Sie sie in einem Repository, das von OCI DevOps Service bereitgestellt wird.

    Implementieren Sie Ihre Services mit einem schlanken Open Source-Framework, wie Micronaut oder Helidon.

    Stellen Sie Ihre Services auf Serverless-Plattformen wie Oracle Container Engine for Kubernetes oder Oracle Functions bereit, um Deployment, Skalierbarkeit und Kosteneffizienz zu vereinfachen.

    Mit Oracle Cloud Infrastructure API Gateway können Sie geschützte und gesteuerte private oder öffentliche Endpunkte aus der API-Spezifikation erstellen.

  • Verpacken Sie Ihre App als Container und stellen Sie sie bereit

    Überblick
    Ein Container verpackt Code und seine Abhängigkeiten als eine Einheit, sodass eine App schnell und zuverlässig in mehreren Computing-Umgebungen ausgeführt wird. Ein Containerimage ist eine Datei, die bei der Ausführung einen Container in einer Computing-Umgebung erstellt und startet.

    Im Vergleich zu herkömmlichen virtuellen Maschinen sind Container kleiner, benötigen weniger Ressourcen und haben schnellere Startzeiten. Sie sind auch plattformunabhängig und können überall Apps ausführen. Um diese Vorteile zu nutzen, zerlegen Sie Ihre App in Services, die jeweils eine diskrete Geschäftsfunktion ausführen und jeden Service als Container verpacken. Bei Legacy-Apps ersetzen Sie jede vorhandene Funktion in Ihrer App schrittweise durch einen Container-Service, bis die gesamte App umgestaltet ist.

    Grundlegende Details
    Das Verpacken von Anwendungscode und Abhängigkeiten in eine einzelne ausführbare Einheit (ein Containerimage) bedeutet, dass ein Container extrem portierbar ist. Indem Container diese Portabilität mit Infrastrukturabstraktion kombinieren, sorgen sie für betriebliche Konsistenz in Ihrer App. Egal, ob Ihre App On-Premise auf einem physischen Server oder in der Cloud auf einer virtuellen Maschine ausgeführt wird, es werden jedes Mal dieselben Ergebnisse erzielt.

    Durch diese konsistente Reproduzierbarkeit und Vorhersagbarkeit vereinfachen Container DevOps-Prozesse und ermöglichen es Ihren Entwicklungsteams, Ihre Apps schneller bereitzustellen. Durch die Isolierung auf Prozessebene und den häufigen Austausch von Containern werden die Prozesse im Zusammenhang mit der Behebung von Software-Sicherheitslücken vereinfacht und beschleunigt. Durch die Nutzung von Apps in modulare Container-Services sind sie zudem sehr robust. Ein Fehler oder Ausfall in einem einzelnen Service bringt die gesamte App nicht zu Fall, und Sie können jeden Service unabhängig vom Rest der App aktualisieren oder patchen.

    Im Gegensatz zu einer virtuellen Maschine verfügt ein Container nicht über ein eigenes Betriebssystem. Stattdessen wird das Betriebssystem des Hosts gemeinsam verwendet. Daher sind Container kleiner und können schneller als virtuelle Maschinen gestartet werden. Die meisten Containerimages sind mehrere zehn MB groß im Vergleich zu virtuellen Maschinen, die mehrere Gigabyte sein können, und ihre Startzeiten liegen in Sekunden statt der Minuten, die zum Starten virtueller Maschinen benötigt werden.

    Die beste Möglichkeit, Ihre App mit modularisierten Services in Containern auszuführen und zu skalieren, ist die Bereitstellung eines Service pro Container. Dieser Ansatz isoliert Services voneinander, wodurch Ausfallzeiten vermieden und die unabhängige Skalierung für jeden Service ermöglicht wird.

    Auch wenn Sie Container manuell bereitstellen können, ist es besser, eine Containerverwaltungssoftware zu verwenden, die in Ihre Tools für kontinuierliche Integration und kontinuierliches Deployment integriert ist.

    Empfehlungen von Oracle
    Verwenden Sie Oracle Cloud Infrastructure Registry (Container Registry), um Ihre Containerimages zu speichern, und Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE), um Ihre Container auszuführen und zu verwalten. Diese vollständig verwalteten Services sind eng in Oracle Cloud Infrastructure-(OCI-)Plattformfunktionen integriert, in allen Oracle Cloud-Regionen verfügbar und erfüllen gesetzliche Standards wie PCI, ISO, SOC, HIPAA und FedRAMP.

    Zusätzlich zum Speichern von Containerimages in Container Registry können Sie Manifestlisten (auch als Images mit mehreren Architekturen bezeichnet) speichern, um mehrere Architekturen zu unterstützen, wie ARM und AMD64. Um potenzielle Sicherheitslücken zu identifizieren und zu mindern, aktivieren Sie das Scannen von Images auf allen in Container Registry hochgeladenen Images. Sie sollten auch Ihre Container-Images signieren, um sicherzugehen, dass nur autorisierte und vertrauenswürdige Images in OKE bereitgestellt werden.

  • Automatisierung von Erstellung, Tests und Bereitstellung

    Überblick
    Kontinuierliche Integration (CI) und kontinuierliches Deployment (CD) sind eine Reihe von Tools und Verfahren, mit denen Entwicklungsteams Codeänderungen häufig und zuverlässig bereitstellen können. Zu der CI/CD-Best Practice gehören Codeprüfungen, Richtlinien für Einheitentests, Integrationstests, Code-Check-ins, Einreichen von Tickets und die Bereitstellung von Anwendungen in Entwicklungs- und Testumgebungen.

    Die kontinuierliche Integration beschreibt eine Praktik, in der Entwickler ihre Codeänderungen häufig in die Hauptverzweigung eines gemeinsam genutzten Repositorys integrieren. Die Änderungen der Entwickler werden validiert, indem ein Build erstellt und dann automatisierte Tests für den Build ausgeführt werden. Die Tests stellen sicher, dass Ihre App nicht unterbrochen wird, wenn neue Änderungen in die Hauptverzweigung integriert werden.

    Die Vorteile der kontinuierlichen Integration umfassen:

    • Weniger Bugs werden in die Produktion versendet, da automatische Tests Regressionsausfälle frühzeitig erkennen
    • Integrationsprobleme werden frühzeitig gelöst, sodass der Erstellungsprozess einfacher wird
    • Fehler werden schneller und einfacher erkannt und gefunden (da jede Änderung in der Regel klein ist)

    Die kontinuierliche Bereitstellung ist ein Schritt über die kontinuierliche Integration hinaus. Nach dem Bestehen der entsprechenden Tests wird ein Build automatisch an eine Test- und/oder Produktionsumgebung geliefert. Ziel der kontinuierlichen Bereitstellung ist es, immer eine Codebasis zu haben, die für das Deployment in einer Kundenproduktionsumgebung bereit ist.

    Weitere Vorteile der kontinuierlichen Bereitstellung sind:

    • Die Automatisierung komplexer Deployments bedeutet, dass Ihr Team weniger Zeit für die Vorbereitung auf ein Release benötigt
    • Häufigere Releases und die Beschleunigung der Feedbackschleife Ihrer Kunden
    • Schnellere Iteration, da weniger Druck auf Entscheidungen bei kleinen Änderungen besteht

    Das kontinuierliche Deployment geht einen Schritt weiter als die kontinuierliche Bereitstellung. Jede Änderung, die alle Tests besteht, wird automatisch in der Kundenproduktionsumgebung bereitgestellt. Es gibt keine menschliche Intervention. Nur ein nicht erfolgreicher Test kann verhindern, dass eine neue Änderung für die Produktion bereitgestellt wird. Ohne menschliches Eingreifen ist das kontinuierliche Deployment stark auf eine gut konzipierte Testautomatisierung angewiesen.

    Weitere Vorteile eines kontinuierlichen Deployments sind:

    • Höhere Entwicklungsgeschwindigkeit, da für Releases keine Unterbrechung erforderlich ist
    • Höhere Kundenzufriedenheit durch verbesserte Qualität und kontinuierliche Verbesserungen

    CI/CD bietet Best Practice zum Speichern, Integrieren, Deployment und Verwalten von Code, um zu automatisieren, wie Sie Ihre Apps erstellen. Diese Best Practice umfasst:

    • Verwenden Sie ein Git-basiertes Code-Repository, um alle Codeassets zu speichern. Verwenden Sie einen unveränderlichen Artefaktservice zum Speichern abgeleiteter Assets.
    • Um eine kontinuierliche Integration zu implementieren, führen Sie den gesamten Code mindestens einmal täglich in eine Verzweigung "Freigabekandidat" zusammen. Stellen Sie beim Zusammenführen von Code in dieser Verzweigung sicher, dass Builds automatisch ausgelöst werden. Führen Sie als Teil der Build-Pipeline alle Einheitentests aus, und beheben Sie alle Pipeline-Ausfälle sofort, bevor Sie eine weitere Entwicklung in der Release-Kandidatenverzweigung durchführen. Verwenden Sie Sicherheits-Scans für den Code, um Sicherheitslücken zu erkennen. Speichern Sie kein Artefakt mit einem Sicherheitslückenproblem. Beheben Sie alle Sicherheitslücken in der Release-Kandidatenverzweigung, bevor Sie die Entwicklung fortsetzen.
    • Um ein kontinuierliches Deployment zu implementieren, stellen Sie Release-Kandidaten automatisch in eine Testumgebung bereit oder verwenden kanarische Deployments. Wenn Test-Deployments erfolgreich sind, werden sie automatisch in die vollständige Produktion hochgestuft. Wenn Test-Deployments nicht erfolgreich sind, beheben Sie die Probleme sofort, bevor Sie die weitere Entwicklung in der Release-Kandidatenverzweigung durchführen. Verwenden Sie Sicherheitsfunktionen als Teil von Deployments, um zu verhindern, dass nicht autorisierte und anfällige Artefakte in der Infrastruktur bereitgestellt werden.
    • Verwenden Sie in der Produktionsumgebung Überwachungstools, um den Zustand der bereitgestellten Anwendungen zu bewerten und Sicherheitslücken nach dem Deployment zu erkennen. Wenn Probleme erkannt werden, implementieren Sie ein automatisches Rollback zur vorherigen Version. Führen Sie Sicherheitsprüfungen in der Post-Deployment-Umgebung durch, und beheben Sie alle aufgetretenen Probleme sofort.

    Empfehlungen von Oracle
    Verwenden Sie den DevOps-Service, um das Deployment Ihrer Cloud-nativen Apps zu automatisieren. Speichern Sie zuerst den Code in einem DevOps-Code-Repository, und erstellen Sie eine Releaseverzweigung. Arbeiten Sie in kleinen Schritten, um Änderungen an der Release-Verzweigung vorzunehmen und Probleme in der Verzweigung täglich abzustimmen, um deren Stabilität zu gewährleisten. Verwenden Sie dann die Triggerfunktionalität im Code-Repository, um automatisch eine DevOps-Build-Pipeline zu starten.

    Verwenden Sie eine einzelne DevOps-Build-Pipeline, um alle Artefakte zu erstellen, die mit dem Code-Repository verknüpft sind. Wenn der Build nicht erfolgreich verläuft, konfigurieren Sie die Build-Pipeline so, dass sie auf Genehmigung wartet, bevor sie abgeschlossen wird. Die Genehmigungsanforderung muss an den Benutzer weitergeleitet werden, der den Build ausgelöst hat. Sie sollten das Problem mit einem neuen Code-Commit lösen und anschließend den Abschluss des Builds genehmigen. Für erfolgreiche Builds konfigurieren Sie die Erstellungspipeline, um die Artefakte automatisch an den Oracle Cloud Infrastructure Artifacts Registry-Service zu übermitteln und automatisch eine DevOps-Deployment-Pipeline auszulösen.

    Mit Resource Manager können Sie alle Infrastrukturumgebungen in einer Zone mit maximaler Sicherheit erstellen, um automatisch von der Deployment-Sicherheit profitieren zu können. Mit Resource Manager können Sie die Infrastruktur als Code verwenden, um die einheitliche Infrastrukturerstellung in allen Regionen zu automatisieren. Anschließend können Sie die DevOps-Deployment-Pipeline so konfigurieren, dass sie immer in den Ressourcen bereitgestellt wird, die Sie in der Sicherheitszone erstellt haben.

    Erstellen Sie eine einzelne DevOps-Deployment-Pipeline, die alle Artefakte bereitstellt, die aus einer einzelnen Build-Pipeline erstellt wurden. Organisieren Sie Deployment-Umgebungen, wie OCI-Region, Availability-Domain und Faultdomain. Konfigurieren Sie die Pipeline mit einer kanarischen, rollenden oder Blue/Green Deployment-Strategie. Konfigurieren Sie sie auch so, dass sie Tests automatisch auslöst. Aktivieren Sie OCI-Überwachung und Application Performance Monitoring in Ihrer Anwendung und Infrastruktur, um Probleme zu erkennen.

    Wenn keine Probleme erkannt und Tests erfolgreich abgeschlossen wurden, konfigurieren Sie die Deployment-Pipeline so, dass die Artefakte automatisch in der nächsten Umgebung der Deployment-Strategie bereitgestellt werden, bis die Artefakte vollständig in allen Produktionsumgebungen bereitgestellt sind. Konfigurieren Sie die Pipeline beim Deployment in der Produktionsumgebung so, dass sie in allen Faultdomains in einer Availability-Domain nacheinander bereitgestellt wird. Sorgen Sie für die Bereitstellung an jede Availability-Domain in einer Region nacheinander und dann jeweils nacheinander in jeder Region. Verwenden Sie OCI Monitoring und Application Performance Monitoring weiter in der Anwendung und Infrastruktur, um Probleme schnell zu erkennen. Richten Sie Alerts ein, und wenn Schlüsselmetriken während des Deployments plötzlich gelöscht werden, verläuft das Deployment automatisch nicht erfolgreich, und Sie lösen ein Rollback auf die vorherige Version aus.

  • Nutzen Sie verwaltete Services, um Komplexität bei der App-Entwicklung und beim Betrieb zu beseitigen

    Überblick
    Ein verwalteter Service stellt spezifische Funktionen bereit, ohne dass Sie Wartungsaufgaben im Zusammenhang mit der Optimierung von Performance, Verfügbarkeit, Skalierung, Sicherheit oder Upgrades ausführen müssen. Mit einem verwalteten Service können Sie sich auf die Bereitstellung von Features für Ihre Kunden konzentrieren, anstatt sich um die Komplexität von Vorgängen zu sorgen.

    Ein verwalteter Oracle Cloud Infrastructure-(OCI-)Service stellt eine skalierbare und sichere Komponente für die Cloud-native Entwicklung bereit. Verwenden Sie verwaltete Services, um Ihre App zu entwickeln und auszuführen und die Daten zu speichern. Sie erhalten erstklassige Lösungen, ohne über Fachwissen in jeder Domain verfügen zu müssen, um Ihre App zu erstellen und zu betreiben.

    Grundlegende Details
    Mit verwalteten Services können Sie hoch verfügbare, skalierbare, agile und leistungsstarke Anwendungen mit Sicherheit, Compliance und Resilienz erstellen.

    Verwaltete Services abstrahieren die Komplexität der zugrundeliegenden Komponenten Ihrer App, sodass Sie Daten einfach speichern und abrufen oder Ihre App erstellen und ausführen können. Die Services können in Toolsets integriert werden und bieten automatisiertes Erstellen, Testen und Deployment Ihrer App. Verwaltete Services verbessern die Produktivität und reduzieren die Markteinführungszeit.

    Verwaltete Services zentralisieren und automatisieren verschiedene Aufgaben des Infrastrukturmanagements, um menschliche Fehler und Fachkenntnisse zu vermeiden. Die zugrundeliegende Infrastruktur wird aktuell und sicher gehalten, und mit den Services können Sie Änderungen oder Zugriff überwachen und verfolgen, was die Vertraulichkeit und Integrität Ihrer App und Daten gewährleistet.

    Verwaltete Services sind hochverfügbar und skalierbar, erfüllen die Anforderungen Ihrer App und Sie bezahlen nur für das, was Sie auch nutzen. Sie können klein anfangen und skalieren, ohne dass die Performance oder Zuverlässigkeit beeinträchtigt wird.

    Empfehlungen von Oracle
    Wir empfehlen die folgenden Cloud-Services:

    • Oracle Autonomous Database zur Verwaltung von Daten für Data Warehousing oder Transaktionsverarbeitung. Autonomous Database bietet In-Memory-, NoSQL- und SQL-Datenbanken mit einem autonomen Vorteil, um den Verwaltungsaufwand zu verringern.
    • Mit Oracle Cloud Infrastructure Container Engine for Kubernetes können Sie Ihre Container erstellen, ausführen und verwalten.
    • Mit Oracle Functions können Sie Anwendungen erstellen, ausführen und skalieren, die für kurze Dauer sicher und isoliert ausgeführt werden, ohne Infrastruktur zu verwalten.
    • Mit Oracle API Gateway können Sie geschützte und gesteuerte private oder öffentliche Endpunkte aus Ihren API-Spezifikationen erstellen.
    • Mit Oracle Cloud Infrastructure Object Storage können Sie eine unbegrenzte Menge unstrukturierter Daten eines beliebigen Inhaltstyps sicher speichern oder abrufen. Es lässt sich problemlos skalieren, ohne dass es zu einer Beeinträchtigung der Performance oder Servicezuverlässigkeit kommt.
    • Oracle Cloud Observability and Management Platform-Services können in alle oben genannten Services integriert werden, um einen Einblick in Logs, Metriken und Ereignisse zu ermöglichen.
    • Oracle Application Express (APEX) ermöglicht das schnelle Erstellen von modernen, datengesteuerten Low-Code-Anwendungen. APEX kann die Verfügbarkeit und Skalierbarkeit maximieren, um die sich ändernden Anforderungen Ihrer Low-Code-App zu erfüllen. Sie ermöglicht automatisiertes Management, konsistent hohe Performance, automatische Skalierung und einfache Administration.

    Diese Services sind hochverfügbar, leistungsstark und elastisch. Die zugrundeliegende Infrastruktur wird verwaltet und gepatcht, um sicherzustellen, dass Ihre App sicher bleibt.

  • Die App-Ebene zustandslos halten

    Überblick
    Der Status einer App kann aus vielen Elementen bestehen, darunter Datencaches, Voreinstellungen eines Benutzers, Personalisierung, zwischen Services ausgetauschte Nachrichten, die Position in einem mehrstufigen Workflow, App-Deployment, Laufzeitkonfiguration und eine Benutzersession (z.B. die Seite, die ein Benutzer zuletzt besucht hat, oder die Größe und Artikel im Warenkorb eines Benutzers). Wenn der Status Ihrer App verloren geht, kann dies zu Datenverlusten, einer Fehlfunktion in Ihrer App, einer suboptimalen Benutzererfahrung und manchmal zu einem vollständigen Ausfall der App führen.

    Wenn Sie den Status Ihrer App in lokalen Dateisystemen oder im Arbeitsspeicher eines einzelnen Hosts speichern, kann er verloren gehen, wenn Ihre App Ausfälle aufweist, wie Neustarts oder lokalisierte Datenträgerausfälle. Speichern Sie stattdessen den Status in externen Persistenzspeichern. Verwenden Sie so wenige Persistenzspeicher wie möglich, im Idealfall nur einen, um die Datenkonsistenz zu gewährleisten.

    Grundlegende Details
    Die Elemente des Status einer App werden in der Regel als mehrere Artefakte in verschiedenen Formaten gespeichert, wie serialisierte Objekte, JSON- oder XML-Dokumente oder Textdateien. Wenn diese Elemente in mehreren Persistenzspeichern gespeichert werden, wie z.B. in externen Dateisystemen, Nachrichtenspeichern, Objektspeichern, mehreren Datenbanken oder in einem elastischem Blockspeicher, können die verschiedenen Datenspeicher nicht mehr synchronisiert werden und dies kann zu Inkonsistenzen im Status führen. Eine App muss auch Transaktionen, Joins und Idempotenz implementieren, um die Datenkonsistenz sicherzustellen, wenn der Status als Einheit aktualisiert werden muss.

    Wenn Elemente des Status einer App in mehreren Speichern verteilt werden, erhöhen sich die Chancen auf Sicherheitslücken. Lifecycle-Vorgänge – wie das Hinzufügen und Entfernen von Knoten, Patching, Backup und Recovery sowie die Replikation für Katastrophen und Recovery – werden äußerst komplex und erfordern eine besondere Berücksichtigung der Zustandskonsistenz in verschiedenen Filialen.

    Daher ist es besser, wenn möglich den Zustand der App und ihre Daten in einer einzigen Datenbank zu speichern. Daten bleiben in einem einzigen Speicher konsistent und können einfacher verwaltet werden. Mit diesem Ansatz können App-Instanzen ersetzt werden. Dies hilft insbesondere bei modernen Anwendungsarchitekturen wie elastischen Microservices oder ephemeren Instanzen, bei denen nur eine Instanz für die Bereitstellung einer einzelnen oder einiger Anforderungen vorhanden ist. Das Hinzufügen eines Knotens wird vereinfacht, da ein neuer Knoten die neueste Kopie des Status erhalten kann und das Entfernen eines Knotens nicht dazu führt, dass der Status vollständig verloren geht. Patches können im Rolling-Modus eingespielt werden, indem nur die ausführbaren Dateien ersetzt werden. Ein Knoten kann aus Backups wiederhergestellt werden und den Status aus der Datenbank abrufen. Der Status kann konsistent als Einheit für die Disaster Recovery in verschiedenen Regionen repliziert werden. Ein konsistenter Status in verschiedenen Regionen kann sicherstellen, dass nach einem Failover oder Switchover keine funktionalen Probleme in Ihrer App auftreten.

    Empfehlungen von Oracle
    Wenn Ihre App eine Datenbank verwendet, speichern Sie ihren Status in derselben Datenbank. Eine Datenbank bietet bessere Verfügbarkeit, Integrität und Sicherheit als Alternativen, wie Dateien oder speicherresidente Darstellungen. Idealerweise verwenden Sie eine Datenbank mit mehreren Modellen (die verschiedene Formate speichern können), um alle Elemente des Status Ihrer App zu speichern. Mit einer Datenbank mit mehreren Modellen anstelle von mehreren Einzeldatenspeichern können Sie außerdem auf einfache Weise Konsistenz in allen Elementen Ihres App-Status erreichen und aufrechterhalten. (Hinweis: Obwohl es zulässig ist, den gecachten Status in der App zu speichern, muss die App so konzipiert sein, dass sie die Datenbank als Quelle der Wahrheit verwendet und ihren Status aus der Datenbank neu erstellen kann.) Oracle Database ist für diesen Zweck ideal geeignet. Sie speichert verschiedene Formate und bietet eine vorhersehbare Leistung, sodass die Speicherung des Status Ihrer App die Leistung Ihrer App nicht beeinträchtigt.

    Wenn Ihre App keine Datenbank verwendet, speichern Sie den Status mit anderen dauerhaften Persistenzspeichern, wie Oracle Cloud Infrastructure Object Storage. Wenn der App-Status nicht in einem einzelnen Datenspeicher gespeichert werden kann, entwerfen Sie Ihre App, um den Status in mehreren Datenspeichern zu speichern, die nach einem Ausfall synchronisiert und als konsistente Einheit wiederhergestellt werden können.

    Im Folgenden finden Sie einige Empfehlungen zum Speichern des Status in einer Oracle Database.

    • Benutzersessionobjektstatus: Verwenden Sie JSON-Objekt-/relationale Zuordnung, wie JPA oder relationale Tabellen.
    • Lokale Datencaches: Bei Daten, die in der App-Tier im Cache gespeichert werden, muss die Datenquelle eine Datenbank sein. Die Caches müssen beim Hochfahren der App oder bei Bedarf neu erstellt werden. Bei Aktualisierungen der Caches muss die Write-Behind-Methode verwendet werden, mit der die Backend-Datenbank aktualisiert wird. Andere Instanzen von Cache in App-Instanzen müssen über die Änderungen benachrichtigt werden, damit die Caches aktualisiert werden können.
    • App-Konfigurationsdaten: Dies sind Artefakte, wie Verbindungsendpunkte, Grenzwerte, Logging-Ebenen, Logziele und Portnummern, die normalerweise als JSON-Dokumente, XML-Dateien oder Eigenschaftendateien gespeichert werden. Verwenden Sie den entsprechenden Datentyp, um diese Daten in einer Datenbank zu speichern.
    • Prozessübergreifende Kommunikation oder Remoteprozessaufrufe: In der Regel kommunizieren Anwendungs-Microservices und -komponenten über Nachrichten miteinander. Verwenden Sie Oracle Database-Transaktionswarteschlangen, um solche Nachrichten dauerhaft zu machen und sicherzustellen, dass Nachrichten überleben und verarbeitet werden, wenn ein Ausfall auftritt.
    • Text (wie Auditlogdatensätze): Apps generieren Logdateien, wie Auditlogs und Diagnoseprotokolle. Verwenden Sie die Oracle Text-Funktionalität, um solche Logs zentral zu speichern.
    • Performanceüberwachung: Apps generieren Metriken oder Zeitreihendaten zu Leistungsüberwachungszwecken. Verwenden Sie Oracle Database-Zeitreihendaten oder JSON-Datenfunktionen, um solche Daten zu speichern.
    • Workflowstatus: Einige Workflow-Engines speichern den Status einer App lokal, und der Failover solcher Workflows kann zu einem Verluststatus führen. Verwenden Sie die Workflow-Engine in der Datenbank, um solche Probleme zu vermeiden. Konfigurieren Sie mindestens Workflow-Engines, um die Datenbank als Persistenzspeicher für ihren Status zu verwenden.
  • Verwenden Sie eine konvergente Datenbank mit vollständiger Unterstützung aller Daten

    Überblick
    Ihre App verwendet möglicherweise Daten in verschiedenen Formaten, wie tabellarisch (relational), unstrukturiert, XML, JSON, räumlich oder grafisch. Normalerweise benötigte eine derartige Vielfalt für jedes Datenformat eine andere Art von Datenbank. Beispiel: eine relationale Datenbank für relationale Daten, ein Dokumentspeicher für unstrukturierte Daten oder eine Diagrammdatenbank für hierarchische verknüpfte Daten. Die Verwendung mehrerer Datenbanken führt jedoch häufig zu zusätzlicher Betriebskomplexität und Dateninkonsistenz. Verwenden Sie stattdessen eine einzige Datenbank mit mehreren Modellen, um mehrere Datentypen und -formate zu speichern, zu indexieren und zu durchsuchen.

    Nutzen Sie die Datenbankfunktionalität, um Ihre App-Logik zu vereinfachen. Beispiel: Verwenden Sie SQL für Abfragen, Joins und Analysen; verwenden Sie Transaktionen, um Konsistenz und Isolation zu gewährleisten; und verwenden Sie integrierte Algorithmen und Analysefunktionen für maschinelles Lernen, um unnötige Datenübertragung zu vermeiden. Um sensible Daten zu schützen, verwenden Sie die Sicherheitsfunktionen und die Zugriffskontrolle der Datenbank und verwenden die Replikation, um die Verfügbarkeit, Skalierbarkeit und Resilienz Ihrer Anwendungen zu verbessern.

    Grundlegende Details
    Verwenden Sie eine Datenbank mit mehreren Modellen, um verschiedene Datentypen zu speichern, wie JSON-Dokumente, Eigenschaftsdiagramme und relationale Daten. Erweiterte Datenbanken mit mehreren Modellen bieten umfassende Unterstützung für alle in der Datenbank gespeicherten Datentypen. Sie können ein neues JSON-Dokument speichern, relationale Zeilen einfügen und ein Eigenschaftsdiagramm innerhalb derselben ACID-Transaktion aktualisieren. Sie können SQL-Anweisungen verwenden, um diese verschiedenen Datentypen zu verknüpfen, zu filtern und zu aggregieren. Dadurch erhalten Sie die starke Konsistenz und den garantiert gleichzeitigen Zugriff, die Sie von relationalen Datenbanken gewöhnt sind. Neben diesem umfassenden Features kann eine Datenbank mit mehreren Modellen auch als ein einziger Datenspeicher verwendet werden, der über andere APIs als SQL zugänglich ist, wie REST-APIs, Dokumentspeicher-APIs und Diagramm-APIs.

    Ein wesentlicher Vorteil der Verwendung einer Datenbank mit mehreren Modellen ist die Wiederverwendbarkeit. Obwohl Daten verschiedene Typen und Ausprägungen aufweisen können, ändert sich die zugrundeliegende Technologie zur Verwaltung dieser Daten nicht. Das bedeutet, dass Sie nicht mehrere Datenbanktechnologien kennenlernen und verstehen müssen, wie Sie jeden einzelnen Datentyp verwenden und optimieren. Und weil die Technologie konstant bleibt, müssen Sie Ihren App-Code nicht umschreiben. Darüber hinaus verbessert eine Datenbank mit mehreren Modellen die Resilienz Ihrer App, indem sie die Datenfragmentierung reduziert und so Backup und Recovery erleichtert.

    Empfehlungen von Oracle
    Mit Oracle Autonomous Database, einer konvergierten Datenbank mit mehreren Modellen, können Sie alle Ihre Daten speichern, verwalten und analysieren. Vereinfachen Sie die Verwaltung Ihrer App, indem Sie die Daten in Tabellen über Ansichten bereitstellen, sodass das zugrunde liegende Schema geändert werden kann, ohne dass sich dies auf Ihre vorhandenen Apps auswirkt. Verwenden Sie editionsbasierte Neudefinition, damit Sie Ihre App ohne Ausfallzeiten aktualisieren können. Verwenden Sie Oracle Data Safe, um Sicherheitskontrollen zu implementieren und auszuwerten, sensible Daten zu maskieren und Datenzugriffe zu prüfen. Verwenden Sie Oracle Data Guard als hoch skalierbaren Lesecache für Ihre Daten, und verwalten Sie ein konsistentes Backup für das Disaster Recovery.

    Oracle Autonomous Database führt operative Aufgaben ohne Auswirkungen oder Unterbrechung in seiner Workload aus. Das bedeutet, dass Sie der App keine komplexe Kompensationslogik hinzufügen müssen, um Skalierungs- oder Failover-Szenarios zu verarbeiten. Die Datenbank verwaltet Ressourcen wie CPU und Speicher unabhängig und bietet elastische bidirektionale Skalierbarkeit.

  • End-to-End-Überwachung und -Nachverfolgung von Instrumenten

    Überblick
    Eine einzelne Benutzeranforderung kann einem komplexen Pfad über mehrere Services oder Microservices hinweg folgen, aus denen eine moderne App besteht. Das komplette Tracing folgt auf die Weiterleitung jeder Anforderung von ihrer Quelle bis zu den Tiefen Ihrer Infrastruktur und hilft Ihnen beim Debugging der Ursache eines Problems. Monitoring wird im Allgemeinen als Diagnosetool verwendet. Dadurch werden Ihre Entwickler benachrichtigt, wenn Ihre App nicht wie erwartet funktioniert.

    Entwickler, Administratoren und Sicherheitsbeauftragte müssen die Integrität, Performance, den Betriebsstatus und mögliche Sicherheitsvorfälle Ihrer App zuverlässig und zeitnah verstehen. Durch dieses Verständnis wird sichergestellt, dass die Funktion und Performance Ihrer App die Erwartungen während ihres Lebenszyklus erfüllen und auch die Diagnose und Anwendungswiederherstellung optimieren können. Umfassende, durchgängige Überwachung und Verfolgung sollten einfach zu implementieren und zu verwalten sein, ohne Ihrer App Komplexität hinzuzufügen.

    Grundlegende Details
    Ihre App kann sich in vielerlei Hinsicht nicht wie erwartet verhalten: Sie kann beispielsweise schlecht funktionieren oder einfach ausfallen. Im Gegensatz zu einer herkömmlichen monolithischen App stellt eine App, die auf Microservices basiert, aufgrund mehrerer Interaktionen zwischen den Komponenten zusätzliche diagnostische Herausforderungen dar.

    Tracing ist der beste Weg, um schnell zu verstehen, was mit einer Benutzeranforderung geschieht, wenn sie sich durch die Microservices und andere Komponenten (wie Infrastruktur) bewegt, aus denen Ihre App besteht. Verwenden Sie komplettes Tracing, um Daten über jede Benutzeranforderung zu sammeln. Prüfen Sie dann die Daten, um zu sehen, wo Ihre App Engpässe und Latenzzeiten aufweisen kann. Beispiel: Eine Anforderung kann mehrere Microservices durchlaufen, bevor sie erfüllt wird. Ohne eine Möglichkeit, die gesamte Anforderung zu verfolgen, gibt es keine Möglichkeit, die Ursache des Ausfalls zu ermitteln.

    Die Überwachung ist im Allgemeinen viel gezielter, sodass Sie das Verhalten Ihrer App besser verstehen, indem Sie Ihre App instrumentieren und dann Metriken erfassen, aggregieren und analysieren. Durch die komplette Überwachung wird außerdem eine intelligente und automatisierte Integration mit Tools ermöglicht, die die Ressourcenkapazität dynamisch anpassen und Antworten auf unerwartete Ereignisse koordinieren.

    Ein klares, genaues und zeitnahes Verständnis des Betriebszustands und der Geschichte einer App besteht nicht nur aus der Messung der Erfahrung von Endbenutzern. Möglicherweise müssen Sie auch die Compliance mit regionalen oder nationalen Gerichtsbarkeiten sicherstellen, die möglicherweise die Erstellung von bedarfsgesteuerten, detaillierten Aktivitätsberichten oder Bestätigungen zur Handhabung bestimmter, sensibler Datenelemente erfordern.

    Im Allgemeinen sollten Überwachungslösungen mit Drittanbieter-Tools kompatibel sein und insbesondere den administrativen Tools Ihrer Umgebung entsprechen. Es ist wichtig, die Designflexibilität aufrechtzuerhalten und eine Abhängigkeit von den Anbietern zu vermeiden.

    Empfehlungen von Oracle
    Erstellen Sie umfassende Überwachungs- und Tracingfunktionen in Ihrer App von Anfang an, und halten Sie diese während des gesamten Lebenszyklus konsistent. Sie sollten einfach zu implementieren und zu verwalten sein, ohne die Entwicklung, Tests und das Deployment komplexer zu machen. Übernehmen Sie nach Möglichkeit Lösungen, die auch die Vielfalt der Plattformen berücksichtigen, die Sie derzeit nutzen und in Zukunft bereitstellen können.

    Oracle Cloud Infrastructure-(OCI-)Services wie Monitoring sollen Out-of-the-box-Unterstützung für Monitoring bereitstellen. Außerdem können Sie viele OCI-Services auf Ihre App-Komponenten erweitern, indem Sie eine konsistente Deployment- und Managementerfahrung über unterstützte APIs und SDKs nutzen. Beispiel: Sie können die automatische Erfassung von Überwachungsmetriken oder die Logerfassung mit zentralisiertem Speicher für alle virtuellen Maschinen und Anwendungen hinzufügen.

    Während der Entwicklung und beim Testen können Sie Services so konfigurieren, dass nur grundlegende Debugging- oder Performancetestinformationen erfasst werden. Wenn Ihre App sich der Produktionsbereitstellung nähert, erhöhen Sie den Umfang, die Häufigkeit und die Rückverfolgbarkeit der gesammelten Informationen, indem Sie einfache Aktualisierungen vorhandener Konfigurationsparameter vornehmen.

    Nutzen Sie die robuste, zentrale Datenerfassung für Ihre gesamte Cloud-Mandantenumgebung, um einen einzelnen Speicherort für Analyse, koordinierte Prüfung und Alertgenerierung bereitzustellen. Service Connector Hub ermöglicht flexible, konsistente und anpassbare Antworten auf Ereignisse. Logging Analytics ermöglicht effiziente Analyse und Untersuchung aller Ihrer Cloud- (und externen) Ereignisprotokollierungssysteme. Sie können auch Service Connector Hub, Oracle Functions und Oracle Notifications verwenden, um erfasste Metriken und Logs in verwertbare Alerts umzuwandeln. Außerdem können Sie unsere Integrationen in Drittanbieterprodukte und -services wie Splunk und Grafana nutzen.

    Mit den folgenden OCI-Services können Sie Logging, Überwachung und Tracing in allen Umgebungen konsolidieren, in denen Ihre App gehostet wird: Logging, Monitoring, Logging Analytics, Application Performance Monitoring, BS-Management, Datenbankmanagement und Java-Management. Diese vollständig verwalteten Services sind in allgemeine OCI-Infrastrukturressourcen integriert und bieten unterstützte Mechanismen zur Integration Ihrer benutzerdefinierten App-Ressourcen.

  • Eliminieren Sie Single Point of Failure durch automatisierte Datenreplikation und Fehlerwiederherstellung

    Überblick
    Ein Single Point of Failure ist eine Komponente einer App, die beim Ausfall Ihre gesamte App nicht verfügbar oder unzuverlässig macht. Wenn Sie eine App entwickeln, die hochverfügbar und zuverlässig ist, verwenden Sie die automatisierte Datenreplikation, um sicherzustellen, dass der Ausfall einer einzelnen Komponente nicht zu Datenverlust führt.

    Die rechnerübergreifende Datenreplikation und die Verwendung redundanter Netzwerke schützen Sie vor routinemäßigen Ausfällen von Maschinen und Netzwerken. Die Replikation Ihrer Daten in Data Centern (oder „Availability-Domains“) über mehrere geografische Regionen hinweg schützt Sie vor lokalisierten Katastrophen, wie Bränden, Erdbeben, Fluten oder Hurrikanen.

    Grundlegende Details
    Damit Ihre App High Availability erreichen kann, müssen Sie sicherstellen, dass die Daten, von denen Ihre App abhängt, bei Ausfällen verfügbar bleiben. Der Schlüssel zur hohen Verfügbarkeit von Daten ist Redundanz durch automatisierte Datenreplikation.

    Bei der Replikation werden Datenbankobjekte wie Tabellen in mehreren Datenbanken, aus denen ein verteiltes Datenbanksystem besteht, kopiert und verwaltet. An einem Standort angewendete Änderungen werden vor der Weiterleitung und Anwendung an den einzelnen Replikaten an Remote-Standorten lokal erfasst und gespeichert.

    Replizierte Datenbanken können in zwei verschiedenen Modi funktionieren: aktiv/passiv und aktiv/aktiv. Im Aktiv/Passiv-Modus gibt es ein einzelnes Primär-Replikat und mindestens ein Sekundär-Replikat. Nur das Primär-Replikat nimmt an der App-Datenverarbeitung teil. Im Aktiv/Aktiv-Modus beteiligen sich alle Replikate an der Datenverarbeitung. Der Aktiv/Aktiv-Modus bietet eine bessere Ressourcenverwendung und höhere Verfügbarkeit, da kein primär-sekundäres Failover erforderlich ist.

    Durch Redundanz wird sichergestellt, dass Datenreplikationen unabhängig voneinander ausfallen. Maschinen- oder Datenträgerausfälle sind in der Regel unabhängig, ein Netzwerk- oder Stromausfall kann jedoch dazu führen, dass eine Gruppe von Rechnern gleichzeitig ausfällt. Zum Schutz vor solchen Vorfällen muss die Netzwerk- und Strominfrastruktur ebenfalls redundant sein, und Datenreplikate müssen sorgfältig über verschiedene Rechner und Speicherorte hinweg platziert werden, die nicht gemeinsam ausfallen können.

    Empfehlungen von Oracle
    Oracle Cloud Infrastructure-(OCI-)Data Center werden sorgfältig entwickelt, um einzelne, schwerwiegende Schwachstellen zu vermeiden. Eine typische Data Center- oder Availability-Domain enthält mehrere unabhängige Fehlereinheiten, die als Faultdomains bezeichnet werden. Zwei unabhängige Faultdomains können nicht gemeinsam ausfallen. Ebenso kann eine einzelne Region über mehrere Availability-Domains verfügen, die geografisch getrennt sind, um sicherzustellen, dass zwei davon nicht gleichzeitig ausfallen können.

    Verwenden Sie OCI-Speicherservices wie Block Volumes, Object Storage und File Storage, um Daten in Fault- und Availability-Domains zu replizieren, sodass sich kein Single Point of Failure auf die Verfügbarkeit der Daten Ihrer App auswirken kann. Profitieren Sie von der robusten Fehlerisolierung, die in OCI integriert ist, mit Container Engine for Kubernetes, um Ihre App über mehrere Fault- und Availability-Domains bereitzustellen. Oracle Autonomous Database, Data Guard und GoldenGate bieten aktiv/aktive Hardware- und Softwarereplikation für hohe Verfügbarkeit sowie Patching und Upgrades ohne Ausfallzeiten. Verwenden Sie diese verwalteten Services für hochverfügbare Daten, ohne dass Sie eine eigene Speicherinfrastruktur erstellen und verwalten müssen.

  • Implementieren Sie automatisierte Defense in Depth zur Sicherung Ihrer App und ihrer Daten

    Überblick
    Defense in Depth ist ein Ansatz, bei dem mehrere, unabhängige und redundante Sicherheitskontrollen als Verteidigungsschichten für eine App fungieren. Die Schichten sind so ausgelegt, dass sie Sicherheit bieten, auch wenn eine davon ausfällt: zum Beispiel eine Firewall kombiniert mit der Angriffserkennung.

    Die manuelle Verwaltung und Konfiguration von Sicherheitskontrollen kann jedoch komplex, undurchsichtig und fehleranfällig sein – individuell und kollektiv. Sichern Sie stattdessen Ihre App und ihre Daten mit automatisierten Sicherheitskontrollen.

    Grundlegende Details
    Defense in Depth verwaltet das Risiko durch die Verwendung verschiedener Kontrollen, die physische, technische, administrative, betriebliche, personelle und verfahrenstechnische Elemente der Sicherheit abdecken. Ihre Unabhängigkeit bedeutet, dass sie eine tiefgreifende Verteidigung bieten, die mit Fehlern, Exploits oder anderen Sicherheitslücken umgehen. Die Kontrollen sind so konzipiert, dass sie Risiken auf unterschiedliche Weise angehen und Logging, Auditing und andere Funktionen bereitstellen, um sicherzustellen, dass versuchte Sicherheitsverstöße erkannt und den zuständigen Stakeholdern gemeldet werden.

    Anstatt ein komplexes Set an Sicherheitskontrollen manuell zu konfigurieren, verwenden Sie einfache und präskriptive automatisierte Steuerelemente, um Ihre App zu sichern. Automatisierte Sicherheitskontrollen beseitigen menschliche Fehler (die Ursache vieler Sicherheitsvorfälle) und helfen Ihnen, Ihre App und ihre Daten zu sichern, ohne dass Sie ein Sicherheitsexperte werden müssen.

    Empfehlungen von Oracle
    Implementieren Sie benutzerfreundliche automatisierte Sicherheitskontrollen in allen Phasen des App-Lebenszyklus, einschließlich Entwicklung, Erstellung, Test, Deployment und Laufzeit. Prüfen Sie Benutzer, Berechtigungen und Zugriffs-Policys in jedem Schritt im Lebenszyklus, und stellen Sie sicher, dass der Zugriff nur erteilt wird, wenn dies angemessen ist. Erkennen Sie Sicherheitsprobleme, die frühzeitig im Softwareentwicklungslebenszyklus eingeführt werden. Durch die Früherkennung wird sichergestellt, dass Ihre App in der Produktion mit Best Practice für die Sicherheitsarchitektur bereitgestellt wird und dass Betriebssicherheitsprobleme durch Fehlkonfigurationen oder offengelegte Schwachstellen erkannt und gemindert werden.

    Oracle Cloud Infrastructure (OCI) bietet mehrere automatisierte Sicherheitsservices zur Sicherung Ihrer App und ihrer Daten. Im Folgenden finden Sie einige Empfehlungen für die Verwendung von OCI-Services:

    • Verwenden Sie Web Application Firewall (WAF), um den Traffic von unbekannten Standorten zu begrenzen. Verwenden Sie für die Transportschichtsicherheit (TLS) Zertifikate für Load Balancer, und verwenden Sie Autorotation. Aktivieren Sie WAF auf jedem Load Balancer, der HTTPS-Inhalt verarbeitet. Aktivieren Sie von Oracle verwaltete Regeln, und optimieren Sie sie auf falsch positive Werte. Begrenzen Sie den Traffic aus Ländern, mit denen Sie keine Geschäfte tätigen, mit Geo-IP-Zugriffsregeln. Verwenden Sie Threat Intelligence in WAF, um Tor-Knoten zu blockieren.
    • Verwenden Sie Oracle Identity and Access Management (IAM) für einen Identity-First-Sicherheitsansatz, der ein einfaches Onboarding und Management von Benutzern ermöglicht. Verwenden Sie IAM am Frontend Ihrer App, um Benutzer mit starken Authentifizierungsmethoden zu authentifizieren und gleichzeitig eine optimale User Experience durch kontextbezogene adaptive Sicherheit, optionale soziale oder föderierte Anmeldung oder kennwortlose Authentifizierung (je nach Anforderungen) zu gewährleisten. Unterstützen Sie gesetzliche Anforderungen, indem Sie Benutzern die Möglichkeit geben, ihre Zustimmung zu Nutzungsbedingungen zu verwalten und Anforderungen an die Datenspeicherung zu unterstützen. Verwenden Sie IAM am Backend, um den Zugriff auf die Komponenten Ihrer App nach Bedarf zu beschränken. Setzen Sie die Authentifizierung für Administratoren durch starke Optionen für die Multifaktor-Authentifizierung (MFA) durch. Setzen Sie starke Sicherheits-Policys durch, die den Zugriff nur über explizit erteilte Berechtigungen zulassen. Separate Zuständigkeiten, damit der Zugang auf diejenigen beschränkt wird, die ihn benötigen.
    • Verschlüsseln Sie Data-at-Rest mit Schlüsseln, die in Oracle Cloud Infrastructure Vault gespeichert sind, auf der Basis von Hardwaresicherheitsmodulen. Sie können für jeden Service auch separate Verschlüsselungsschlüssel verwenden, jedoch Vault-Entitys an Compartments ausrichten. Drehen Sie Masterverschlüsselungsschlüssel mindestens jährlich und Datenschlüssel alle drei Monate. Verwenden Sie einen privaten Vault in der Produktion, und replizieren Sie Schlüssel in sekundären Regionen. Erstellen Sie Backups, und speichern Sie sie in Oracle Cloud Infrastructure Object Storage in einer separaten Region. Sichern Sie Verschlüsselungsschlüssel, und beschränken Sie den Zugriff auf Schlüssel nur auf solche, die vom App-Eigentümer autorisiert wurden.
    • Verwenden Sie integrierte Sicherheits-Principals, um Compute-Instanzen für Aktionen mit anderen OCI-Services zu autorisieren.
    • Setzen Sie das Prinzip der Mindesterreichbarkeit und der Endpunktisolierung durch, indem Sie das Netzwerksicherheitsgruppenfeature in virtuellen OCI-Cloud-Netzwerken (VCNs) verwenden. Aktivieren Sie das NetFlow-Logging auf jedem VCN. Überwachen Sie das DNS-Logging auf Verschlüsselungsaktivität oder auf Befehls- und Kontrollserveraktivität.
    • Starten Sie Ihre App mit Oracle Security Zones in einer Secure-by-Default-Konfiguration. Verwenden Sie Zonen mit maximaler Sicherheit für Compartments mit privaten Subnetzen. Stellen Sie sicher, dass der Operatorzugriff auf alle Compute-Instanzen in privaten Subnetzen über Oracle Cloud Infrastructure Bastion geleitet wird.
    • Aktivieren Sie Oracle Cloud Guard, beheben oder akzeptieren und deaktivieren Sie alle Probleme. Ermöglichen Sie Benachrichtigungen zu Abweichungen und behandeln Sie neue Probleme mit Dringlichkeit.
    • Ermöglichen Sie Oracle Data Safe, um Oracle Datenbanken durch Überwachung von Benutzern und Zugriff zu sichern. Data Safe scannt auch die Datenbanken auf Best Practices zur Sicherheit und Alerts zu Abweichungen.
    • Scannen Sie regelmäßig Instanzen und Container nach bekannten Sicherheitsproblemen mit Oracle Vulnerability Scanning Service.

Architekturmuster

Bewertete Muster mit empfohlener Technik.


Webanwendungen oder Apps

Webanwendungen enthalten in der Regel ein Frontend, das den Benutzern angezeigt wird, und ein Backend mit der Geschäftslogik. Als Antwort auf einen Benutzer oder eine API-Anforderung interagiert eine Webanwendung mit der API oder mit Daten, die in einem Dateisystem, Objektspeicher, Blockspeicher oder einer Datenbank gespeichert sind. Die Anwendung muss verschiedene Clients, wie Browser und Mobilgeräte, unterstützen und mit anderen Systemen und Apps über APIs interagieren.

Messaging

Messaging-Lösungen verbinden Anwendungskomponenten – einschließlich vorhandener On-Premises-Systeme – mit Cloud-Lösungen. Dies kann die Datenübertragung als Teil einer klar definierten verteilten Verarbeitungs-Pipeline oder die Veröffentlichung von Nachrichten an mehrere unabhängige Downstream-Systeme ermöglichen, die sich unabhängig voneinander entwickeln.

Ereignisbasiert

In der Cloud ist ein Ereignis ein wichtiges Ereignis oder eine Änderung in einem System. Die Kernpunkte einer ereignisgesteuerten Architektur sind Ereignisse erfassen, kommunizieren, verarbeiten und persistieren. Beim Erstellen einer ereignisgesteuerten Anwendung auf Oracle Cloud Infrastructure (OCI) können Sie Änderungen in Ihren Cloud-Ressourcen und von Ihrer Anwendung generierte Ereignisse abonnieren. Auf diese Weise können Sie nahezu in Echtzeit reagieren. Die meisten modernen Apps, die mit Microservices erstellt werden, basieren auf einer ereignisgesteuerten Architektur.

Big Data und Analysen

Big Data ist eine Gruppe von Funktionen und Mustern, mit denen Sie alle Datentypen (unstrukturiert, halbstrukturiert und strukturiert) verwalten, erfassen, speichern, katalogisieren, vorbereiten, verarbeiten und analysieren können. Dabei spielt es keine Rolle, ob sie aus Quellen wie Datenbanken, Videos, Formularen, Dokumenten, Logdateien, Webseiten oder Bildern stammen. Die Big-Data-Funktionen von Oracle umfassen verschiedene Services und Tools, damit Sie den Weg zu Big Data basierend auf Ihren Fähigkeiten und Vorlieben beginnen können.

Maschinelles Lernen (ML) und KI

Data Scientists und ML-Ingenieure möchten keine Zeit für die Bereitstellung, das Upgrade, das Patching und die Sicherung der Infrastruktur aufwenden. Sie möchten Modelle erstellen, trainieren, bereitstellen und überwachen, die sich auf das Unternehmen auswirken. Eine Plattform für maschinelles Lernen sollte vollständig verwaltet werden und es ihnen ermöglichen, alle diese Schritte im Lebenszyklus der Modellentwicklung auszuführen.

SaaS-Erweiterungen

Oracle Fusion Cloud, das Oracle Angebot für Unternehmenssoftware as a Service (SaaS), umfasst Lösungen für Bereiche wie HCM, ERP, SCM und CX. Es bietet umfassende Funktionen, aber manchmal möchten Unternehmen benutzerdefinierte UI- und Geschäftsprozesse erstellen, die diese Funktionalität erweitern. Diese Erweiterungs-Apps werden in Informationen aus Oracle Fusion Cloud integriert, verwenden dieselbe Sicherheitsschicht und "mischen" häufig Daten aus anderen Systemen. So erhalten Sie eine Benutzererfahrung, die nahtlos in Oracle Cloud-Apps integriert wird.

Low-Code

Low-Code-Plattformen eignen sich hervorragend zum Erstellen opportunistischer Anwendungen in Zusammenarbeit mit geschäftlichen Stakeholdern, zum Erstellen von Datenberichts- und Analyse-Apps, zum Erweitern von SaaS-Apps und zur Modernisierung von Legacy-Anwendungen. Jeder Codezeile sind Kosten zugeordnet, um sie zu verfassen, zu verwalten, zu debuggen, zu aktualisieren und zu sichern. Mit Oracle Application Express (APEX) können Entwickler diese Kosten vermeiden, indem sie hochwertige Komponenten und gängige Designmuster über eine intuitive und grafische Entwicklungserfahrung bereitstellen.

Technik- und Plattformempfehlungen