Ontwikkeling van moderne applicaties

Het is lastig om goede moderne applicaties te verkrijgen. De tools, beperkingen en mogelijkheden veranderen namelijk zeer snel. Het framework van Oracle voor applicatieontwikkeling vereenvoudigt de besluitvorming op het gebied van architectuur zodat u applicaties kunt ontwikkelen en uitvoeren die optimaal beschikbaar, veerkrachtig, volledig veilig en compliant zijn door gebruik te maken van een set ontwerpprincipes en technologie-aanbevelingen.

Weet u al waar u naar op zoek bent? Ga direct naar onze architectuurbibliotheek. Bekijk de referentieapplicatie voor meer informatie over de principes en patronen voor het ontwikkelen van moderne apps.


Belangrijkste vereisten

Algemene vereisten die op elke moderne applicatie van toepassing zijn


Beveiliging en compliance

Stem het beveiligingsbeleid af op de beste werkwijzen in de branche en dwing deze af in alle lagen van de applicatiestack. Waarborg de vertrouwelijkheid en integriteit van data. Gebruik toegangsrechtenbeheer om te bepalen en te beheren wie bepaalde taken mag uitvoeren. Maak het detecteren en diagnosticeren van beveiligingsvoorvallen eenvoudig.


Beschikbaarheid

Zorg ervoor dat applicaties het hele jaar door, dag en nacht beschikbaar zijn zonder downtime (al dan niet gepland).


Schaalbaar

Schaal op van tientallen naar duizenden naar zelfs miljoenen gebruikers en verwerk steeds grotere hoeveelheden data, zonder dat u de applicatie in de toekomst opnieuw hoeft te ontwerpen.


Prestaties

Zorg voor de laagste latentie en de hoogste doorvoer en lever zo de best mogelijke gebruikerservaring.


Flexibiliteit

Vertrouw op moderne automatiseringstools en -methoden voor bouw- en implementatieprocessen. Vermijd knelpunten als gevolg van de noodzaak om handmatige taken uit te voeren.


Zichtbaarheid

Leg prestatiedata vast en monitor systeemprestaties op eventuele achteruitgang. Bied teams de mogelijkheid van automatische waarschuwingen wanneer deze meetwaarden buiten de verwachte grenzen vallen.


Herstelvermogen

Wanneer er problemen optreden, moet u ervoor zorgen dat applicaties zich probleemloos herstellen, de verloren functionaliteit snel terugkeert, dataverlies wordt voorkomen en de gebruikerservaring niet negatief wordt beïnvloed.


Kostenoptimalisatie

Werk tegen zo laag mogelijke totale kosten en zorg voor een goede balans tussen alle andere vereisten.


Overdraagbaarheid

Zorg ervoor dat de architectuur van applicaties voldoet aan open standaarden, zodat migratie van on-premises naar de cloud of van de ene leverancier naar de andere eenvoudiger wordt.

Ontwerpprincipes

Best practices voor applicatiearchitecturen

 

Alles openen Alles sluiten

    • Gebruik zo mogelijk low-code platforms; anders gebruikt u uitgerijpte programmeertalen en lichtgewicht frameworks

      Overzicht
      De programmeertalen en frameworks die u gebruikt om uw applicatie te bouwen, spelen een cruciale rol bij de succesvolle oplevering en het onderhoud van uw applicatie na verloop van tijd. De keuze die u maakt ten aanzien van de taal en het framework, heeft op lange termijn gevolgen voor de manier waarop u uw bedrijf schaalt, uw applicatie gebruikt en hoogwaardige functies levert aan uw klanten. Veranderingen in taal of framework zijn over het algemeen prijzig. Als u parallelle ecosystemen voor meerdere talen en frameworks ondersteunt, wordt de applicatie complexer en minder flexibel.

      De keuze van de taal en het framework is van invloed op een reeks factoren, waaronder afleversnelheid, stabiliteit en kracht van het bestaande ecosysteem, operationele beschikbaarheid en productieprestaties. Gebruik waar mogelijk platforms met weinig code, zodat u zich kunt richten op het oplossen van uw bedrijfsproblemen en niet wordt geconfronteerd met de complicaties van traditionele ontwikkelmethoden. Als de vereisten voor uw applicatie complexer zijn, kies dan voor ontwikkelde talen en lichtgewicht frameworks.

      Belangrijkste details
      Als u platforms met weinig code gebruikt, kunt u zakelijke applicaties sneller bouwen, testen en implementeren dan wanneer u handmatig programmeert op de traditionele manier. Deze platforms zijn zeer geschikt voor het bouwen van opportunistische applicaties in samenwerking met zakelijke belanghebbenden en voor het bouwen van applicaties voor datarapportages en -analyses. Met low-code platforms kunt u ook SaaS-apps uitbreiden en verouderde apps moderniseren. Met deze aanpak vermijdt u complicaties wanneer u nieuwe mogelijkheden wilt toevoegen, zoals datavisualisatie, dataverzameling, data-analyse, beveiliging, toegankelijkheid, prestaties en globalisering. Een platform met weinig code vermindert deze complexiteit aanzienlijk en zorgt voor een drastische vermindering van de hoeveelheid code die u moet onderhouden.

      Als u echter een applicatie wilt maken met geavanceerdere mogelijkheden, kies dan voor een volwassen programmeertaal in combinatie met een lichtgewicht framework. Kies een programmeertaal die u belangrijke voordelen biedt, zoals:

      • Beveiliging
      • Krachtige prestaties en een hoge mate van efficiëntie
      • Ondersteuning voor tools
      • Uitgebreide, bijgewerkte documentatie
      • Een ecosysteem van bibliotheken
      • Conformiteit met een testsuite of referentie-implementatie
      • Een sterke community

      Nieuwere talen hebben doorgaans een hogere wijzigingssnelheid in het taalontwerp en het bijbehorende ecosysteem en de bibliotheken. Een hogere wijzigingssnelheid betekent dat het moeilijker is om risico's in te schatten en dat het duurder is om wijzigingen door te voeren.

      Wanneer u een framework kiest, kies dan voor een open-sourceframework. Open-sourceframeworks worden voortdurend door collega's beoordeeld, wat inhoudt dat de functies nauw aansluiten bij de wensen van de meeste ontwikkelaars, omdat deze bijdragen aan het maken en onderhouden van frameworks. Bugs worden snel opgespoord en gerepareerd. U wilt uiteraard ook een lichtgewicht framework dat weinig resources (CPU, geheugen, netwerkbandbreedte of bestandsingangen) gebruikt.

      Gebruik een applicatieframework dat een goede balans biedt tussen het verbeteren van de taakgerichtheid (bedrijfslogica vóór standaardtekst en scaffolding) en de flexibiliteit (zodat u huidige en toekomstige behoeften aan functies kunt ondersteunen). Kies voor een framework dat gebruiksvriendelijke, betrouwbare en niet-controversiële standaardwaarden biedt voor veelvoorkomende functies, zoals loggen, telemetrie, beveiliging, configuratie, en voor veelvoorkomende patronen, zoals het bouwen van REST-API's.

      Aanbevelingen van Oracle
      Oracle APEX is een platform met weinig code dat u hoogwaardige componenten biedt, zoals formulieren, grafieken en widgets voor de gebruikersinterface. APEX biedt ook gemeenschappelijke ontwerppatronen via een intuïtieve grafische ontwikkelomgeving. Applicaties die met APEX zijn ontwikkeld, hebben toegang tot lokale data via SQL en kunnen integreren met externe services via REST-API's. Bovendien kunt u de functionaliteit die u in APEX ontwikkelt, ook publiceren als REST-API's voor extern gebruik.

      Als een platform met weinig code niet geschikt is voor uw app, kies dan Java als programmeertaal. Java biedt een stabiele en brede combinatie van mogelijkheden voor de meest voorkomende gebruiksscenario's van applicaties en heeft een gezond ecosysteem van betrouwbare en stabiele bibliotheken en frameworks voor het ontwikkelen van moderne applicaties. De nadruk bij Java ligt op eenvoud en leesbaarheid in combinatie met een uitstekende ondersteuning voor ontwikkelaarstools, waaronder statische analysetools en testframeworks. Hierdoor worden de kosten voor softwareonderhoud en het risico op bugs in productieapplicaties verlaagd.

      Gebruik GraalVM om uw applicatie te ontwikkelen en uit te voeren. GraalVM is een JDK-distributie die de stabiliteit van Java koppelt aan de allerbeste prestaties door middel van dynamische runtimeoptimalisatie, frequente en proactieve patching van zwakke plekken in de beveiliging, en goedkope prestatieanalyses en diagnostische tools, zoals Java Flight Recorder.

      Hanteer bij het bouwen van uw applicatie een 'API-first'-benadering met behulp van Graal Cloud Native of het Helidon-framework. Beide benaderingen bieden scaffolding, dat de tijd voor het opleveren van uw applicatie aanzienlijk verkort, evenals gebruiksvriendelijke patronen voor veel voorkomende gebruiksscenario's, zoals REST-API's, gebaseerd op een set van eenvoudige, niet-controversiële frameworkkeuzes voor veel voorkomende activiteiten zoals logging, telemetrie en opslag. Beide benaderingen ondersteunen daarnaast hoogwaardige services doordat ze niet-blokkerende I/O ondersteunen met idiomatische, reactieve API's, en lage latentie door ondersteuning van krachtige netwerkbibliotheken.

      • Kies Helidon MicroProfile voor applicaties die nauw zijn afgestemd op het Java-ecosysteem voor ondernemingen, bijvoorbeeld CDI, JAX-RS of JPA. De 'standards-first'-ondersteuning van Helidon voor moderne Java-ondernemingspatronen via MicroProfile maakt het overzetten van bestaande Java EE-applicaties naar microservices eenvoudiger.
      • Kies Graal Cloud Native (GCN) of Helidon SE voor applicaties die niet afhankelijk zijn van het bestaande Java-ecosysteem van uw onderneming. De applicatie-scaffolding van GCN tijdens de compilatie verhoogt de prestaties van applicaties tijdens runtime en maakt controle op frameworkniveau mogelijk, waardoor veel beveiligings- en kwaliteitsproblemen met betrekking tot reflectie en runtime-configuratie kunnen worden uitgebannen.

      Helidon en GCN hebben beide ingebouwde ondersteuning voor native images van GraalVM, zodat u geheugenefficiënte en compacte applicaties kunt bouwen.

    • Bouw uw applicatie als een reeks services die via REST-API's communiceren

      Overzicht
      Splits de functies of taken van uw applicatie op in onafhankelijke losgekoppelde services die met elkaar samenwerken. Ontwerp elke service met een beperkt functioneel bereik dat is gericht op één functie of functionaliteit. In vergelijking met een traditionele monolithische architectuur resulteert deze aanpak in een verbetering van het onderhoud, de ontwikkeling, het testen, de implementatie en de schaalbaarheid van de app.

      Kies voor een 'contract-first'-benadering van het REST-API-ontwerp om duidelijke en begrijpelijke interfaces te bieden voor communicatie met en tussen services. Een API-contract biedt het mechanisme dat teams nodig hebben om te kunnen samenwerken en functionaliteit te kunnen gebruiken zonder afhankelijk te zijn van de interne details van de implementatie van een service. Een service kan bijvoorbeeld volledig eigendom zijn van een ontwikkelteam dat de implementatie ervan naar eigen inzicht kan verbeteren zonder codeafhankelijkheden te hoeven coördineren met andere ontwikkelteams.

      Belangrijkste details
      Start met een 'contract-first'-benadering door de REST-API van een service te specificeren. Maak vervolgens een prototype van een implementatie van de API om uw belanghebbenden, zoals de teams die het gaan gebruiken, dit te laten uitproberen. Wanneer iedereen het eens is over de details van de API, kunnen onafhankelijke teams parallel gaan werken aan de implementatie van de service en andere services die de service gaan gebruiken.

      Definieer uw beleidshandhaving met betrekking tot beveiliging en SLA's (Service Level Agreements) vroeg in de productlevenscyclus om er zeker van te zijn dat alle aspecten van het servicecontract voor iedereen duidelijk zijn.

      Beschouw uw API-specificatie als code en beheer deze in een versiebeheersysteem, samen met uw broncode en beleidsconfiguraties.

      Aanbevelingen van Oracle
      Specificeer uw API met behulp van de implementatieonafhankelijke indeling OpenAPI en sla deze op in een repository die wordt geleverd door Oracle Cloud Infrastructure (OCI) DevOps.

      Implementeer uw services met behulp van een lichtgewicht open-source benadering, zoals Graal Cloud Native of Helidon.

      Implementeer uw services op een serverloos platform, zoals Oracle Container Engine for Kubernetes of Oracle Functions, met het oog op implementatiegemak, schaalbaarheid en kostenefficiëntie.

      Gebruik Oracle Cloud Infrastructure API Gateway om beschermde en beheerde privé- of openbare eindpunten te maken op basis van de API-specificatie.

      Gebruik Oracle Cloud Infrastructure Service Mesh voor het vereenvoudigen en beveiligen van de communicatie tussen services die in uw Oracle Container Engine for Kubernetes cluster worden gehost. Met OCI Service Mesh kunt u bovendien al het netwerkverkeer tussen uw services observeren aan de hand van metrics en logs die worden gegenereerd door de proxycomponent die naast de applicatiepods wordt uitgevoerd.

    • Verpak en implementeer uw applicatie in containers

      Overzicht
      Met containers kunnen ontwikkelaars code en alle bijbehorende afhankelijkheden verpakken in één eenheid, zodat een applicatie snel en betrouwbaar draait op meerdere computingomgevingen. Een containerimage is een bestand dat, wanneer het wordt uitgevoerd, een container maakt en start in een computingomgeving.

      Containers zijn in vergelijking met traditionele virtuele machines kleiner, vereisen minder resources en hebben een snellere starttijd. Ze zijn ook platformonafhankelijk en kunnen applicaties overal uitvoeren. Als u van deze voordelen wilt profiteren, moet u uw applicatie ontleden in services die elk een afzonderlijke bedrijfsfunctie uitvoeren en elke service in een container verpakken. Bij verouderde applicaties vervangt u geleidelijk alle bestaande functies in uw applicatie door een in een container geplaatste service, totdat de hele applicatie is geherstructureerd.

      Belangrijkste details
      Het verpakken van applicatiecode en afhankelijkheden in één uitvoerbare eenheid (een containerimage) betekent dat een container uiterst overdraagbaar is. Doordat containers deze overdraagbaarheid combineren met infrastructurele abstractie, zorgen ze voor operationele consistentie van uw app. Of uw applicatie nu on-premises op een fysieke server of in de cloud op een virtuele machine draait, hij geeft elke keer dezelfde resultaten.

      Deze consistente reproduceerbaarheid en voorspelbaarheid helpen containers bij het vereenvoudigen van DevOps-processen, zodat uw ontwikkelteams uw applicaties sneller kunnen implementeren. Dankzij de isolatie op procesniveau en doordat ze vaak worden vervangen, vereenvoudigen en versnellen containers de processen die gepaard gaan met het verhelpen van zwakke plekken in de software. Het opsplitsen van applicaties in modulaire containerservices maakt ze ook zeer robuust. Wanneer er een fout of storing optreedt in een afzonderlijke service, gaat niet de hele applicatie plat, en u kunt elke service onafhankelijk van de rest van de applicatie updaten of patchen.

      In tegenstelling tot een virtuele machine heeft een container geen eigen besturingssysteem; een container deelt het besturingssysteem met zijn host. Daardoor zijn containers kleiner in omvang en starten ze sneller op dan virtuele machines. De meeste containerimages zijn tientallen megabytes groot, terwijl virtuele machines meerdere gigabytes groot kunnen zijn. De opstarttijd van containerimages bedraagt enkele seconden, terwijl het opstarten van virtuele machines minuten duurt.

      De beste manier om uw applicatie te draaien en te schalen met behulp van modulaire diensten in containers, is door één service per container te implementeren. Met deze aanpak worden services van elkaar geïsoleerd, wat downtime voorkomt en onafhankelijke schaling voor elke service mogelijk maakt.

      Hoewel u containers handmatig kunt implementeren, is het beter om containerbeheersoftware te gebruiken die integreert met uw tools voor continue integratie (CI, Continuous Integration) en continue implementatie (CD, Continuous Deployment).

      Aanbevelingen van Oracle
      Gebruik Oracle Cloud Infrastructure Registry (Container Registry) voor het opslaan van uw containerimages en Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) voor het uitvoeren en beheren van uw containers. Deze volledig beheerde services zijn nauw geïntegreerd met de mogelijkheden van het OCI-platform, zijn beschikbaar in alle Oracle Cloud regio's en voldoen aan regelgevingsstandaarden zoals PCI, ISO, SOC, HIPAA en FedRAMP.

      Naast het opslaan van containerimages in Container Registry, kunt u ook manifestlijsten (soms 'multi-architecture images' genoemd) opslaan om meerdere architecturen te ondersteunen, zoals ARM en AMD64. Schakel het scannen van images in voor alle images die naar Container Registry worden geüpload, om potentiële zwakke plekken in de beveiliging te identificeren en te verhelpen. U dient ook uw containerimages te ondertekenen om er zeker van te zijn dat er alleen geautoriseerde en betrouwbare images in OKE worden geïmplementeerd.

    • Automatiseer het bouwen, testen en implementeren

      Overzicht
      Continue integratie (CI, Continuous Integration) en continue implementatie (CD, Continuous Deployment) zijn sets met tools en procedures die door ontwikkelteams worden gebruikt om codewijzigingen frequent en betrouwbaar op te leveren. Best practices op het gebied van CI/CD omvatten beoordelingen van code, begeleiding bij het testen van eenheden, integratietests, het inchecken van code, het aanmaken van tickets en het implementeren van applicaties in ontwikkel- en testomgevingen.

      Continue integratie (CI) verwijst naar een praktijk waarbij ontwikkelaars regelmatig hun codewijzigingen integreren in de hoofdvertakking van een gedeelde repository. De wijzigingen van de ontwikkelaars worden gevalideerd door een build te maken en vervolgens geautomatiseerde tests op die build uit te voeren. De tests zorgen ervoor dat uw applicatie niet defect raakt wanneer nieuwe wijzigingen in de hoofdvertakking worden geïntegreerd.

      Enkele voordelen van continue integratie (CI) zijn:

      • Er is tijdens de productiefase sprake van minder bugs, omdat regressiefouten vroegtijdig worden opgespoord via geautomatiseerde tests.
      • Integratieproblemen worden vroegtijdig opgelost, waardoor het bouwproces eenvoudiger wordt.
      • Fouten worden sneller en gemakkelijker gedetecteerd en gelokaliseerd (over het algemeen worden slechts kleine wijzigingen doorgevoerd).

      Continue levering gaat een stap verder dan continue integratie: nadat een build de vereiste tests heeft doorstaan, wordt deze automatisch afgeleverd in een test- en/of productieomgeving. Het doel van continue levering is om altijd een codebase klaar te hebben voor implementatie naar een productieomgeving van de klant.

      Continue levering biedt onder meer de volgende extra voordelen:

      • Automatisering van complexe implementaties, zodat uw team minder tijd kwijt is aan de voorbereiding van een release
      • Frequentere releases, waardoor uw klantenfeedbacklus wordt versneld
      • Snellere iteratie omdat er minder druk ligt op beslissingen over kleine wijzigingen

      Continue implementatie (CD) gaat nog een stap verder dan continue levering. Elke wijziging die alle tests doorstaat, wordt automatisch geïmplementeerd in de productieomgeving van uw klant. Er komt geen mens aan te pas – alleen een mislukte test kan voorkomen dat een nieuwe wijziging wordt uitgerold naar de productieomgeving. Omdat er geen menselijke tussenkomst is, is continue implementatie sterk afhankelijk van goed ontworpen testautomatisering.

      Continue implementatie biedt onder meer de volgende extra voordelen:

      • Hogere ontwikkelingssnelheid omdat er niet gewacht hoeft te worden op releases
      • Grotere klanttevredenheid dankzij verbeterde kwaliteit en een continue stroom van verbeteringen

      CI/CD biedt best practices voor het opslaan, integreren, implementeren en onderhouden van code om de manier waarop u uw applicaties bouwt te automatiseren. Deze best practices omvatten het volgende:

      • Pas het 'shift-left'-paradigma toe en richt u op het zo vroeg mogelijk detecteren en voorkomen van problemen in de levenscyclus van softwareontwikkeling (SDLC). Controleer bijvoorbeeld de externe afhankelijkheden van uw app op kwetsbaarheden tijdens doorlopende integratie.
      • Gebruik een op Git gebaseerde coderepository om al uw codeactiva op te slaan. Gebruik een onveranderbare artefactservice om afgeleide activa op te slaan.
      • Voeg alle code minstens één keer per dag samen in een 'release candidate'-vertakking om continue integratie te implementeren. Wanneer u code samenvoegt in die vertakking, zorg er dan voor dat builds automatisch worden geactiveerd. Voer als onderdeel van de buildpijplijn alle eenheidstests uit en repareer onmiddellijk alle fouten in de pijplijn voordat u verder gaat met de ontwikkeling in de 'release candidate'-vertakking. Voer beveiligingsscans uit op de code om zwakke plekken op te sporen. Sla geen artefacten met zwakke plekken op. Repareer alle zwakke plekken in de 'release candidate'-vertakking voordat u verder gaat met de ontwikkeling.
      • Zorg voor automatische levering van 'release candidates' in een testomgeving of gebruik canary-implementaties om continue implementatie te implementeren. Als de testimplementaties succesvol zijn, kunt u ze automatisch doorzetten naar volledige productie. Als de testimplementaties mislukken, moet u de problemen onmiddellijk oplossen voordat u verdere ontwikkeling uitvoert in de 'release candidate'-vertakking. Maak bij implementaties gebruik van beveiligingsfuncties om te voorkomen dat ongeautoriseerde en kwetsbare artefacten worden geïmplementeerd in de infrastructuur.
      • Gebruik in de productieomgeving monitoringtools om de werking van de geïmplementeerde applicaties te beoordelen en eventuele zwakke plekken na de implementatie op te sporen. Als er problemen worden gedetecteerd, implementeer dan een automatisch herstel naar de vorige versie. Voer na de implementatie veiligheidscontroles uit in de omgeving en los onmiddellijk alle problemen op die worden gedetecteerd.

      Aanbevelingen van Oracle
      Gebruik de DevOps-service om de implementatie van uw cloud-native applicaties te automatiseren. Sla eerst de code op in een DevOps-coderepository en maak een releasevertakking. Breng in kleine stappen wijzigingen aan in de releasevertakking en los problemen in de vertakking dagelijks op om de stabiliteit ervan te garanderen. Gebruik vervolgens de triggerfunctionaliteit in de coderepository om automatisch een DevOps-buildpijplijn te starten.

      Gebruik één DevOps-buildpijplijn om alle artefacten te bouwen die aan de coderepository zijn gekoppeld. Als de build mislukt, configureer de buildpijplijn dan zodanig dat op goedkeuring wordt gewacht voordat deze wordt voltooid. Het goedkeuringsverzoek moet naar de vastlegger gaan die de build heeft gestart. Deze moet het probleem oplossen met een nieuwe codevastlegging en vervolgens de voltooiing van de build goedkeuren. Om een build succesvol te laten verlopen, moet u de buildpijplijn zodanig configureren dat de artefacten automatisch worden afgeleverd bij de Oracle Cloud Infrastructure Artifacts Registry service en er automatisch een DevOps-implementatiepijplijn wordt geactiveerd.

      Voeg Application Dependency Management toe om zwakke plekken in de beveiliging van applicatieafhankelijkheden te detecteren tijdens een buildfase in een OCI DevOps-buildpijplijn. Op deze manier kunt u potentiële beveiligingsproblemen detecteren en herstellen zodra ze bekend zijn.

      Gebruik Resource Manager om al uw infrastructuuromgevingen in een maximaal beveiligde zone te maken en automatisch te profiteren van de implementatiebeveiliging. Met behulp van Resource Manager kunt u de infrastructuur als code gebruiken om het maken van infrastructuur in al uw regio's op een consistente manier te automatiseren. Vervolgens kunt u de DevOps-implementatiepijplijn zo configureren dat deze altijd wordt geïmplementeerd naar de resources die u in de beveiligingszone hebt gemaakt.

      Maak één DevOps-implementatiepijplijn waarmee u alle artefacten kunt implementeren die zijn gemaakt op basis van één buildpijplijn. Rangschik implementatieomgevingen, zoals de OCI-regio, het beschikbaarheidsdomein en het foutdomein. Configureer de pijplijn middels een strategie voor een canary-, voortschrijdende of blue-green-implementatie. U kunt de pijplijn ook zodanig configureren dat tests automatisch worden geactiveerd. Schakel OCI Monitoring en Application Performance Monitoring in voor uw applicatie en infrastructuur om problemen op te sporen.

      Als er geen problemen worden gedetecteerd en de tests succesvol worden afgerond, kunt u de implementatiepijplijn configureren zodat de artefacten automatisch naar de volgende omgeving in de implementatiestrategie worden geïmplementeerd totdat alle artefacten volledig zijn geïmplementeerd in alle productieomgevingen. Zorg er tijdens de implementatie naar de productieomgeving voor dat u de pijplijn zodanig configureert dat alle foutdomeinen één voor één worden geïmplementeerd in een beschikbaarheidsdomein. Voer één implementatie tegelijk uit naar elk beschikbaarheidsdomein per regio en doe dit vervolgens één voor één naar elke regio. Blijf gebruikmaken van OCI Monitoring en Application Performance Monitoring voor de applicatie en de infrastructuur om problemen sneller op te sporen. Stel waarschuwingen in zodat de implementatie automatisch mislukt als tijdens de implementatie belangrijke metrics plotseling dalen. Activeer in zo'n situatie een herstel naar de vorige versie.

    • Gebruik beheerde services om complexiteit bij het ontwikkelen en gebruiken van applicaties te elimineren

      Overzicht
      Een beheerde service biedt specifieke functionaliteit zonder dat u onderhoudstaken hoeft uit te voeren met betrekking tot het optimaliseren van prestaties, beschikbaarheid, schaling, beveiliging of upgrades. Met een beheerde service kunt u zich concentreren op het leveren van functies voor uw klanten en hoeft u zich niet druk te maken over de complexiteit van de bewerkingen.

      Een beheerde OCI-service biedt een schaalbare en veilige component voor cloud-native ontwikkeling. Gebruik beheerde services om uw applicatie te ontwikkelen en uit te voeren en de data ervan op te slaan. U profiteert van eersteklas oplossingen zonder dat u expertise in elk domein nodig hebt om uw applicatie te bouwen en uit te voeren.

      Belangrijkste details
      Met beheerde services kunt u zeer toegankelijke, schaalbare, flexibele en krachtige applicaties maken die voldoen aan beveiligings- en nalevingsvereisten en beschikken over herstelvermogen.

      Beheerde services maken de onderliggende componenten van uw applicatie minder complex, waardoor het eenvoudig wordt om data op te slaan en op te halen of een applicatie te maken en deze uit te voeren. De services integreren met toolsets voor het geautomatiseerd bouwen, testen en implementeren van uw app. Beheerde services verbeteren de productiviteit en verkorten de marktintroductietijd.

      Beheerde services centraliseren en automatiseren verschillende infrastructuurbeheertaken, waardoor menselijke fouten en de behoefte aan specialistische vaardigheden worden weggenomen. De onderliggende infrastructuur wordt up-to-date en veilig gehouden, en de services maken het mogelijk wijzigingen of toegang te monitoren en bij te houden, waardoor de vertrouwelijkheid en integriteit van uw applicatie en uw data wordt gewaarborgd.

      Beheerde services zijn uitermate beschikbaar en schaalbaar en voldoen aan de behoeften van uw app. Bovendien betaalt u alleen voor wat u gebruikt. U kunt klein beginnen en opschalen zonder dat de prestaties of de betrouwbaarheid afnemen.

      Aanbevelingen van Oracle
      Wij raden de volgende cloudservices aan:

      • Oracle Autonomous Database voor het beheer van data voor datawarehousing of transactieverwerking. Autonomous Database biedt in-memory-, NoSQL- en SQL-databases met een autonoom voordeel om de overheadkosten voor het beheer te verminderen.
      • Oracle Cloud Infrastructure Container Engine for Kubernetes om uw containers te maken, uit te voeren en te beheren.
      • Oracle Functions om applicaties te maken, draaien en schalen die gedurende korte perioden op een veilige en geïsoleerde manier draaien, zonder dat u infrastructuur hoeft te beheren.
      • Oracle API Gateway om beschermde en beheerde privé- of openbare eindpunten van uw API-specificaties te maken.
      • Oracle Cloud Infrastructure Object Storage om een onbeperkte hoeveelheid ongestructureerde data van elk type content veilig op te slaan of op te halen. De service kan naadloos worden op- of afgeschaald, zonder dat de prestaties of de betrouwbaarheid afnemen.
      • Oracle Cloud Observability and Management Platform services integreren met alle bovenstaande services om inzicht in logboeken, meetcriteria en evenementen te verkrijgen.
      • Oracle Application Express (APEX) om snel moderne, datagestuurde applicaties met weinig code te kunnen bouwen. APEX optimaliseert beschikbaarheid en schaalbaarheid om aan de veranderende eisen van uw applicatie met weinig code te voldoen. APEX biedt geautomatiseerd beheer, consequent hoge prestaties, automatische schaalbaarheid en eenvoudig beheer.

      Deze services zijn zeer goed beschikbaar, leveren hoge prestaties en zijn flexibel. De onderliggende infrastructuur wordt beheerd en gepatcht om de voortdurende veiligheid van uw applicatie te waarborgen.

    • Zorg ervoor dat applicatielaag statusloos blijft

      Overzicht
      De status van een applicatie kan uit allerlei elementen bestaan, zoals datacaches, de voorkeuren van een gebruiker, gepersonaliseerde instellingen, berichten die tussen services worden uitgewisseld, de positie in een workflow die uit meerdere stappen bestaat, de implementatie van de applicatie, runtimeconfiguratie en de sessie van een gebruiker (bijvoorbeeld de pagina die een gebruiker het laatst heeft bezocht of de grootte van en de items in de winkelwagen van een gebruiker). Als de status van uw applicatie verloren gaat, kan dit leiden tot verlies van data, een storing in uw applicatie, een suboptimale gebruikerservaring en soms zelfs tot volledige uitval van uw applicatie.

      Als u de status van uw applicatie opslaat op een lokaal bestandssysteem of in het geheugen van één host, dan kan deze verloren gaan als uw applicatie te maken krijgt met een storing, zoals een herstart of een lokale schijfstoring. Sla de status daarom liever op externe persistentieopslagplaatsen op. Gebruik echter zo weinig mogelijk persistentieopslagplaatsen; idealiter slechts één om dataconsistentie te bieden.

      Belangrijkste details
      De elementen van de status van een applicatie worden traditioneel opgeslagen als meerdere artefacten in verschillende indelingen, zoals geserialiseerde objecten, JSON- of XML-documenten of tekstbestanden. Als deze elementen worden opgeslagen op meerdere persistentieopslagplaatsen, zoals externe bestandssystemen, berichtenopslagplaatsen, objectopslagplaatsen, meerdere databases of flexibele blokopslag, dan kan het gebeuren dat de verschillende dataopslagplaatsen niet meer synchroon lopen met inconsistenties in de status tot gevolg. Een applicatie moet ook transacties, joins en idempotentie implementeren om dataconsistentie te garanderen wanneer de status als een eenheid moet worden bijgewerkt.

      Door elementen van de status van een applicatie over meerdere opslagplaatsen te verspreiden, neemt de kans op zwakke plekken in de beveiliging toe. Levenscyclusbewerkingen – zoals het toevoegen en verwijderen van nodes, patchen, back-up en herstel en replicatie voor calamiteiten en herstel – worden hierdoor extreem complex en vereisen speciale aandacht, zodat de consistentie van de status in de verschillende opslagplaatsen behouden blijft.

      Het is daarom beter om, indien mogelijk, de status en data van de applicatie in één database op te slaan. Data blijft consistent wanneer het in één opslag is opgeslagen en is bovendien eenvoudiger te beheren. Met deze aanpak is het mogelijk om applicatie-instances te vervangen. Dit is vooral nuttig bij moderne applicatie-architecturen, zoals flexibele microservices of vluchtige instances waarbij een instance alleen bestaat voor het uitvoeren van één of enkele aanvragen. Het toevoegen van een node wordt eenvoudiger omdat een nieuwe node de laatste kopie van de status kan krijgen. Het weghalen van een node leidt niet tot volledig verlies van de status. U kunt doorlopend patches aanbrengen door simpelweg de uitvoerbare bestanden te vervangen. Een node kan vanuit back-ups worden hersteld en krijgt een status vanuit de database. De status kan consequent als een eenheid worden gerepliceerd naar verschillende regio's voor herstel na een calamiteit. Met een consistente status in verschillende regio's voorkomt u dat er functionele problemen optreden in uw applicatie na een failover of overschakeling.

      Aanbevelingen van Oracle
      Als uw applicatie een database gebruikt, gebruik dan dezelfde database om de status op te slaan. Een database biedt betere beschikbaarheid, integriteit en beveiliging dan alternatieve opties, zoals bestanden of in-memory representaties. Gebruik idealiter een multi-model database (die verschillende indelingen kan opslaan) om alle elementen van de status van uw applicatie op te slaan. Door gebruik te maken van een multi-model database in plaats van meerdere single-purpose dataopslagplaatsen, kunt u ook eenvoudiger consistentie bereiken en behouden tussen alle elementen van uw applicatiestatus. (Opmerking: hoewel het toegestaan is om de status 'In cache' op te slaan in de app, moet de applicatie zo zijn ontworpen dat deze de database gebruikt als de centrale databron en in staat is om de status opnieuw te genereren vanuit de database.) Oracle Database is ideaal geschikt voor dit doel. Hierin worden verschillende indelingen opgeslagen en het levert voorspelbare prestaties, dus het opslaan van de positie van uw applicatie in de database doet geen afbreuk aan de prestaties van de app.

      Als uw applicatie geen database gebruikt, gebruik dan andere duurzame persistentieopslagplaatsen, zoals Oracle Cloud Infrastructure Object Storage, om de status op te slaan. Als de status van de applicatie niet in één dataopslag kan worden opgeslagen, ontwerp uw applicatie dan zo dat de status wordt opgeslagen in meerdere dataopslagplaatsen die synchroon kunnen worden gehouden en die na een storing als een consistente eenheid kunnen worden hersteld.

      Hieronder vindt u enkele aanbevelingen voor het opslaan van de status in een Oracle Database.

      • Status van gebruikerssessieobject: gebruik JSON-object-/relationele toewijzing, zoals JPA, of relationele tabellen.
      • Lokale datacaches: voor data die in de applicatielaag wordt gecachet, moet de database de centrale databron zijn. De caches moeten opnieuw worden opgebouwd bij het opstarten van de applicatie of wanneer dit nodig is. Bij updates van de caches moet de 'write-behind'-methode worden gebruikt, waarmee de back-enddatabase wordt bijgewerkt. Andere instances van de in-applicatie instances van de cache moeten op de hoogte worden gebracht van de wijzigingen, zodat de caches kunnen worden vernieuwd.
      • Data over applicatieconfiguratie: dit zijn artefacten, zoals verbindingseindpunten, limieten, logboekniveaus, logboekbestemmingen en poortnummers die doorgaans worden opgeslagen als JSON-documenten, XML-bestanden, of eigenschappenbestanden. Gebruik het juiste datatype om deze data in een database op te slaan.
      • Communicatie tussen processen of aanroepen van externe processen: microservices en componenten van applicaties communiceren doorgaans met elkaar met behulp van berichten. Gebruik de transactiewachtrijen van Oracle Database om dergelijke berichten duurzaam te maken en ervoor te zorgen dat berichten blijven bestaan en worden verwerkt als er een storing optreedt.
      • Tekst (zoals controlelogbestanden): applicaties genereren logbestanden, zoals controlelogboeken en diagnostische logboeken. Gebruik de Oracle Text functionaliteit om dergelijke logboeken centraal op te slaan.
      • Prestatiemonitoring: applicaties genereren meetwaarden of tijdreeksdata voor prestatiemonitoringdoeleinden. Gebruik Oracle Database tijdreeksdata of de JSON-datafunctionaliteit om dergelijke data op te slaan.
      • Workflow-status: sommige workflow-engines slaan de status van een applicatie lokaal op, en de failover van dergelijke workflows kan ertoe leiden dat de status verloren gaat. Gebruik de workflow-engine in de database om dergelijke problemen te voorkomen. Configureer in ieder geval workflow-engines om de database te gebruiken als een persistentieopslagplaats voor de status van de app.
    • Gebruik een geconvergeerde database met volledige ondersteuning voor alle data

      Overzicht
      Uw applicatie gebruikt mogelijk data in verschillende indelingen, zoals in tabelvorm (relationeel), ongestructureerd, XML, JSON, ruimtelijk of grafisch. In het verleden was voor deze verscheidenheid voor elke data-indeling een ander soort database nodig. Bijvoorbeeld een relationele database voor relationele data, een documentopslag voor ongestructureerde data of een grafiekdatabase voor hiërarchisch gekoppelde data. Het gebruik van meerdere databases leidt echter vaak tot extra operationele complexiteit en inconsistentie van data. Gebruik in plaats daarvan één multi-model database voor het opslaan, indexeren en doorzoeken van meerdere datatypen en -indelingen.

      Maak gebruik van de databasefunctionaliteit om de logica van uw applicatie te vereenvoudigen. Gebruik bijvoorbeeld SQL voor query's, joins en analyses; gebruik transacties om consistentie en isolatie te garanderen; en gebruik ingebouwde machine learning-algoritmen en analysemogelijkheden om onnodige dataoverdracht te voorkomen. Maak gebruik van de beveiligingsfuncties en toegangscontrole van de database om gevoelige data te beschermen, en gebruik replicatie om de beschikbaarheid, schaalbaarheid en het herstelvermogen van uw applicaties te verbeteren.

      Belangrijkste details
      Gebruik een multi-model database om verschillende soorten data op te slaan, zoals JSON-documenten, eigenschapsgrafieken en relationele data. Geavanceerde multi-model databases bieden volledige ondersteuning voor elk type data dat in de database is opgeslagen. U kunt een nieuw JSON-document opslaan, relationele rijen invoegen en een eigenschapsgrafiek bijwerken, allemaal binnen dezelfde ACID-transactie. U kunt SQL-statements gebruiken om deze verschillende typen data samen te voegen, te filteren en te aggregeren. Dit zorgt voor de sterke consistentie- en gelijktijdigheidsgaranties die u gewend bent van relationele databases. Naast deze uitgebreide set van functies, kan een multi-model database ook worden gebruikt als een single-purpose dataopslag, die toegankelijk is via andere API's dan SQL, zoals REST-API's, documentopslag-API's, en grafiek-API's.

      Een belangrijk voordeel van het gebruik van een multi-model database is de herbruikbaarheid. Hoewel data verschillende typen en vormen kunnen hebben, blijft de onderliggende technologie voor het beheren van die data onveranderd. Dit betekent dat u geen kennis van meerdere databasetechnologieën hoeft te hebben en niet hoeft te weten hoe u elke technologie voor elk type data moet gebruiken en afstemmen. En doordat de technologie hetzelfde blijft, hoeft u de code van uw applicatie niet te herschrijven. Bovendien verbetert een multi-model database het herstelvermogen van uw applicatie door datafragmentatie te verminderen, waardoor back-up en herstel eenvoudiger worden.

      Aanbevelingen van Oracle
      Maak voor het opslaan, beheren en analyseren van al uw data gebruik van Oracle Autonomous Database, een geconvergeerde, multi-model database. Vereenvoudig het onderhoud van uw applicatie door weergaven te gebruiken om de data in tabellen weer te geven, zodat het onderliggende schema kan worden gewijzigd zonder dat dit gevolgen heeft voor uw bestaande applicaties. Gebruik Edition-Based Redefinition zodat u uw applicatie kunt upgraden zonder downtime. Gebruik Oracle Data Safe om beveiligingscontroles te implementeren en te evalueren, gevoelige data te maskeren en toegang tot data te controleren. Gebruik Oracle Data Guard als een zeer schaalbare leescache voor uw data en voor het beheren van een consistente back-up voor herstel na calamiteiten.

      Oracle Autonomous Database voert operationele taken uit zonder dat de workload wordt beïnvloed of onderbroken. Dit betekent dat u geen complexe compensatielogica aan de applicatie hoeft toe te voegen om schalings- of failover-scenario's uit te voeren. De database beheert resources, zoals CPU en opslag, onafhankelijk en biedt flexibele schaalbaarheid in twee richtingen.

    • End-to-end monitoring en tracering van instrumenten

      Overzicht
      Een aanvraag van een gebruiker doorloopt soms een complex traject door de verschillende services of microservices waaruit een moderne applicatie bestaat. Bij end-to-end tracering wordt het traject van elk verzoek vanaf de bron tot diep in de infrastructuur gevolgd. Dit helpt u bij het opsporen van de hoofdoorzaak van een probleem. Monitoring wordt over het algemeen gebruikt als een diagnostisch hulpmiddel, waarbij uw ontwikkelaars worden gewaarschuwd wanneer uw applicatie niet werkt zoals verwacht.

      Ontwikkelaars, beheerders en beveiligingsmedewerkers moeten een helder en tijdig inzicht hebben in de werking, de prestaties, de operationele status en mogelijke beveiligingsincidenten van uw app. Dit inzicht zorgt ervoor dat de werking en prestaties van uw applicatie gedurende de levenscyclus aan de verwachtingen voldoen; ook kan het de diagnose van incidenten en applicatieherstel stroomlijnen. Het implementeren en beheren van uitgebreide end-to-end monitoring en tracering moet eenvoudig zijn, zonder dat uw applicatie hierdoor complexer wordt.

      Belangrijkste details
      Uw app kan zich niet op verschillende manieren gedragen, zoals wel wordt verwacht. De app kan bijvoorbeeld slecht presteren of gewoon helemaal niet werken. In tegenstelling tot een traditionele monolithische applicatie, biedt een applicatie die is opgebouwd uit microservices extra diagnostische uitdagingen vanwege de vele interacties tussen de componenten.

      Tracering is de beste manier om snel duidelijk te krijgen wat er gebeurt met een aanvraag van een gebruiker wanneer deze wordt geleid door de microservices en andere componenten, zoals de infrastructuur, die deel uitmaken van uw app. Gebruik end-to-end tracering om data te verzamelen over elke gebruikersaanvraag en bekijk vervolgens de data om te zien waar uw applicatie te maken kan krijgen met knelpunten en vertragingen. Een aanvraag kan bijvoorbeeld door meerdere microservices heen en weer worden gestuurd voordat deze wordt uitgevoerd. Het gehele traject van een aanvraag moet worden getraceerd om de hoofdoorzaak van de storing te kunnen vaststellen.

      Monitoring is over het algemeen veel gerichter. Het geeft een beter inzicht in hoe uw applicatie presteert door de applicatie uit te rusten met instrumenten en vervolgens statistieken te verzamelen, te aggregeren en te analyseren. End-to-end monitoring maakt ook intelligente en geautomatiseerde integratie met tools mogelijk die de resourcecapaciteit dynamisch aanpassen en reacties op onverwachte gebeurtenissen coördineren.

      Een duidelijk, nauwkeurig en tijdig inzicht in de operationele status en geschiedenis van een applicatie heeft niet alleen betrekking op het meten van de ervaring van de eindgebruiker. Het kan ook zijn dat u moet voldoen aan regionale of nationale regelgeving die bepaalt dat u on-demand gedetailleerde activiteitenrapporten of attesten moet kunnen genereren over de manier waarop wordt omgegaan met specifieke, gevoelige data-elementen.

      In het algemeen moeten monitoringoplossingen compatibel zijn met tools van derden en in het bijzonder afgestemd zijn op de administratieve tools in uw omgeving. Het is belangrijk om de ontwerpflexibiliteit te behouden en te voorkomen dat u afhankelijk bent van één leverancier.

      Aanbevelingen van Oracle
      Bouw vanaf het begin uitgebreide monitoring- en traceringsfuncties in uw applicatie in en houd deze consistent gedurende de gehele levenscyclus. Deze functies mogen ontwikkeling, tests en implementatie niet complexer maken en moeten eenvoudig te implementeren en beheren zijn. Kies waar mogelijk oplossingen die geschikt zijn voor de diversiteit aan platforms die u momenteel gebruikt en in de toekomst mogelijk gaat gebruiken.

      OCI-services, zoals Monitoring, zijn ontworpen om kant-en-klare ondersteuning te bieden voor bewaking. Ook kunt u veel OCI-services uitbreiden naar uw applicatiecomponenten door gebruik te maken van een consistente implementatie- en beheerervaring via ondersteunde API's en SDK's. Zo kunt u bijvoorbeeld geautomatiseerde verzameling van monitoringstatistieken of logboekregistratie met gecentraliseerde opslag toevoegen voor al uw virtuele machines en applicaties.

      Tijdens het ontwikkelen en testen kunt u services zo configureren dat ze alleen basisinformatie over foutopsporing of prestatietests verzamelen. Naarmate uw applicatie dichter bij de productiefase komt, kunt u het bereik, de frequentie en de traceerbaarheid van de verzamelde informatie vergroten door eenvoudige updates van bestaande configuratieparameters uit te voeren.

      Met Oracle Cloud Infrastructure Service Mesh worden automatisch verschillende communicatiemetrics en logbestanden vastgelegd voor services die worden uitgevoerd in Oracle Container Engine for Kubernetes. U kunt deze data gebruiken om de status van uw services in de mesh bij te houden en de applicatieprestaties te verbeteren.

      U kunt voor uw gehele cloudtenancyomgeving gebruikmaken van krachtige, gecentraliseerde dataverzameling om één enkele locatie te bieden voor analyse, gecoördineerd onderzoek en het genereren van waarschuwingen. Service Connector Hub maakt flexibele, consistente en aanpasbare reacties op gebeurtenissen mogelijk. Met OCI Logging Analytics kunt u efficiënte analyse en efficiënt onderzoek uitvoeren van al uw eventregistratiesystemen, zowel in de cloud als extern. U kunt ook gebruikmaken van OCI Service Connector Hub, Functions en Notifications om opgenomen metrics en logbestanden om te zetten in bruikbare meldingen. En natuurlijk kunt u profiteren van onze integraties met producten en services van derden, zoals Splunk en Grafana.

      De volgende OCI-services helpen u bij het consolideren van uw logboekregistratie, monitoring en tracering in alle omgevingen waarin uw applicatie wordt gehost: Logging, Monitoring, Logging Analytics, Application Performance Monitoring, OS Management, Database Management en Java Management Service. Deze volledig beheerde services zijn geïntegreerd met gemeenschappelijke OCI-infrastructuurbronnen en bieden ondersteunde mechanismen om uw aangepaste applicatieresources te integreren.

    • Elimineer 'single point of failure' door middel van geautomatiseerde datareplicatie en herstel van storingen

      Overzicht
      Een single point of failure is één onderdeel van een applicatie dat, wanneer het uitvalt, uw hele applicatie inactief of onbetrouwbaar maakt. Wanneer u een applicatie ontwikkelt die optimaal beschikbaar en betrouwbaar moet zijn, kunt u het beste geautomatiseerde datareplicatie gebruiken om te voorkomen dat het falen van één onderdeel tot dataverlies leidt.

      Datareplicatie tussen machines en het gebruik van redundante netwerken bieden bescherming tegen regelmatig voorkomende machine- en netwerkstoringen. Door uw data te repliceren in datacenters (of 'beschikbaarheidsdomeinen') in meerdere geografische regio's, bent u beschermd tegen plaatselijke calamiteiten, zoals branden, aardbevingen, overstromingen of orkanen.

      Belangrijkste details
      Wilt u dat uw applicatie in hoge mate beschikbaar is, dan moet u ervoor zorgen dat de data waarvan uw applicatie afhankelijk is, beschikbaar blijven als er storingen optreden. De sleutel tot een goede beschikbaarheid van data is redundantie via geautomatiseerde datareplicatie.

      Replicatie is het proces van het kopiëren en onderhouden van databaseobjecten, zoals tabellen, in meerdere databases die samen een gedistribueerd databasesysteem vormen. Wijzigingen die op één locatie worden aangebracht, worden vastgelegd en lokaal opgeslagen voordat ze worden doorgestuurd en toegepast op elk van de replica's die zich op externe locaties bevinden.

      Gerepliceerde databases kennen twee verschillende modi: actief-passief en actief-actief. In de actief-passieve modus is er één primaire replica en één of meer secundaire replica's; alleen de primaire replica neemt deel aan de verwerking van applicatiedata. In de actief-actieve modus nemen alle replica's deel aan de dataverwerking. De actief-actieve modus biedt een beter gebruik van resources en een betere beschikbaarheid omdat er geen primaire-secundaire failover nodig is.

      Redundantie zorgt ervoor dat een storing in een datareplica niet van invloed is op andere datareplica's. Machine- of schijfstoringen zijn meestal onafhankelijk, maar een netwerk- of stroomstoring kan ertoe leiden dat een groep machines tegelijkertijd uitvalt. Om tegen dergelijke incidenten te beschermen, moeten netwerk- en stroominfrastructuur ook bestand zijn, en moeten datareplica's zorgvuldig worden geplaatst op verschillende machines en locaties die niet samen kunnen uitvallen.

      Aanbevelingen van Oracle
      OCI-datacenters zijn zorgvuldig ontworpen zodat er geen enkel single point of failure is met catastrofale gevolgen. Een doorsnee datacenter of beschikbaarheidsdomein bevat meerdere onafhankelijke storingseenheden die foutdomeinen worden genoemd. Twee onafhankelijke foutdomeinen kunnen niet gezamenlijk uitvallen. Ook kan een regio meerdere beschikbaarheidsdomeinen hebben die geografisch gescheiden zijn, zodat er geen twee tegelijk kunnen uitvallen.

      Gebruik OCI-opslagservices, zoals blokvolumes, objectopslag en bestandsopslag, om data te repliceren in fout- en beschikbaarheidsdomeinen, zodat geen enkel single point of failure de beschikbaarheid van de data van uw applicatie kan beïnvloeden. Profiteer van de veerkrachtige foutisolatie die in OCI is ingebouwd en gebruik Container Engine for Kubernetes om uw applicatie te implementeren in meerdere fout- en beschikbaarheidsdomeinen. Oracle Autonomous Database, Data Guard en GoldenGate bieden actieve-actieve hardware- en softwarereplicatie voor optimale beschikbaarheid, evenals patches en upgrades zonder downtime. Gebruik deze beheerde services om uw data in hoge mate toegankelijk te maken zonder dat u uw eigen opslaginfrastructuur hoeft te bouwen en te onderhouden.

    • Implementeer geautomatiseerde defense-in-depth om uw applicatie en bijbehorende data te beveiligen

      Overzicht
      Defense-in-depth is een benadering waarbij meerdere onafhankelijke, redundante beveiligingscontroles fungeren als verdedigingslagen voor een applicatie. De verschillende lagen zijn ontworpen om beveiliging te bieden, zelfs als een van de lagen niet goed werkt, bijvoorbeeld een firewall gecombineerd met inbraakdetectie.

      Het handmatig beheren en configureren van beveiligingscontroles kan echter complex, ondoorzichtig en foutgevoelig zijn, zowel afzonderlijk als collectief. Beveilig in plaats daarvan uw applicatie en de bijbehorende data door gebruik te maken van geautomatiseerde beveiligingscontroles.

      Belangrijkste details
      Defense-in-depth beheerst risico's door gebruik te maken van diverse controles die de fysieke, technische, administratieve, operationele, personele en procedurele elementen van beveiliging bestrijken. Dankzij hun onafhankelijkheid bieden deze controles een grondige bescherming tegen storingen, exploits of andere zwakke plekken in de beveiliging. De controles benaderen risico's op verschillende manieren en bieden logboekregistratie, audits en andere functies om ervoor te zorgen dat pogingen tot inbreuk op de beveiliging worden gedetecteerd en gemeld aan de juiste belanghebbenden.

      In plaats van handmatig een reeks complexe beveiligingscontroles te moeten configureren, kunt u eenvoudige en vooraf gedefinieerde geautomatiseerde controles gebruiken om uw applicatie te beveiligen. Geautomatiseerde beveiligingscontroles voorkomen menselijke fouten (een hoofdoorzaak van veel beveiligingsincidenten) en helpen u uw applicatie en de bijbehorende data te beveiligen zonder dat u een beveiligingsexpert hoeft te worden.

      Aanbevelingen van Oracle
      Implementeer eenvoudig te gebruiken geautomatiseerde beveiligingscontroles in alle fasen van de levenscyclus van uw applicatie, waaronder ontwikkeling, bouwen, testen, implementatie en runtime. Verifieer gebruikers, machtigingen en toegangsbeleidsregels in elke stap van de levenscyclus en zorg ervoor dat alleen toegang wordt verleend wanneer dat nodig is. Spoor al vroeg in de softwareontwikkelingscyclus beveiligingsproblemen op. Door vroegtijdige detectie van problemen kan uw applicatie in productie worden genomen met best practices op het gebied van beveiligingsarchitectuur en kunnen operationele beveiligingsproblemen die worden veroorzaakt door verkeerde configuraties of openbaar gemaakte kwetsbaarheden, worden opgespoord en beperkt.

      OCI biedt meerdere geautomatiseerde beveiligingsservices om uw applicatie en de bijbehorende data te beveiligen. Hieronder volgen enkele aanbevelingen voor het gebruik van OCI-services:

      • Gebruik een webapplicatiefirewall (WAF) om het verkeer vanaf onbekende locaties te beperken. Maak voor TLS (Transport Layer Security) gebruik van certificaten voor lastverdelers en autorotatie. Activeer de WAF voor elke lastverdeler met HTTPS-content. Activeer regels die door Oracle worden beheerd en stem deze af op valse positieven. Beperk verkeer vanuit landen waarmee u geen zaken doet door middel van IP-toegangsregels op basis van geografische locatie. Gebruik bedreigingsinformatie in uw WAF om Tor-nodes te blokkeren.
      • Gebruik Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) voor een 'identity-first'-benadering van beveiliging die eenvoudige onboarding en beheer van gebruikers mogelijk maakt. Gebruik OCI IAM aan de front-end van uw applicatie om gebruikers te verifiëren met krachtige verificatiemethoden en behoud tegelijkertijd een optimale gebruikerservaring via contextbewuste adaptieve beveiliging, optionele sociale of federatieve aanmelding of verificatie zonder wachtwoord (afhankelijk van de vereisten). Zorg dat u hierbij voldoet aan wettelijke vereisten door gebruikers in staat te stellen hun toestemming voor gebruiksvoorwaarden te beheren en door ondersteuning te bieden voor dataopslag. Gebruik OCI IAM aan de back-end om de toegang tot de componenten van uw applicatie waar nodig te beperken. Dwing verificatie af voor beheerders via krachtige MFA-opties (meervoudige verificatie). Handhaaf een sterk beveiligingsbeleid waarbij alleen toegang wordt verleend via expliciet toegekende machtigingen. Scheid verantwoordelijkheden zodat de toegang beperkt wordt tot personen die het nodig hebben.
      • Versleutel ongebruikte data met sleutels die zijn opgeslagen in OCI Vault, ondersteund door hardwarebeveiligingsmodules. Wellicht wilt u liever voor elke service aparte coderingssleutels gebruiken, maar wilt u entiteiten van OCI Vault wel afstemmen op compartimenten. Rouleer hoofdcoderingssleutels ten minste elk jaar en datasleutels elke drie maanden. Gebruik een privékluis in de productiefase en repliceer de sleutels in secundaire regio's. Maak back-ups en sla deze op in Oracle Cloud Infrastructure Object Storage in een aparte regio. Beveilig coderingssleutels en beperk de toegang tot sleutels tot personen die zijn geautoriseerd door de applicatie-eigenaar.
      • Gebruik ingebouwde beveiligingsprincipals om compute-instances te machtigen om acties uit te voeren op andere OCI-services.
      • Handhaaf het principe van minimale bereikbaarheid tot eindpuntisolatie door gebruik te maken van de functie voor netwerkbeveiligingsgroepen in virtuele cloudnetwerken (VCN's) van OCI. Activeer NetFlow logging op elk virtueel cloudnetwerk. Houd DNS-logging in de gaten met het oog op cryptomining-activiteiten of activiteiten op de command-and-control-server.
      • Start uw applicatie in een veilige standaardconfiguratie door Oracle Security Zones te gebruiken. Gebruik Maximum Security Zones voor compartimenten met privé-subnetten. Zorg ervoor dat de operatortoegang tot compute-instances in privé-subnetten via Oracle Cloud Infrastructure Bastion verloopt.
      • Activeer Oracle Cloud Guard om alle problemen op te lossen of om de problemen te accepteren en te deactiveren. Activeer meldingen over afwijkingen en pak nieuwe problemen met spoed aan.
      • Activeer Oracle Data Safe om Oracle databases te beveiligen door gebruikers en toegang te bewaken. Data Safe scant ook de databases op best practices op het gebied van beveiliging en waarschuwt bij afwijkingen.
      • Scan instances en containers regelmatig op bekende beveiligingsproblemen met behulp van Oracle Cloud Infrastructure Vulnerability Scanning Service.
      • Gebruik OCI Service Mesh voor het verifiëren en versleutelen van de communicatie tussen services in uw Oracle Container Engine for Kubernetes (OKE) cluster. Met OCI Service Mesh kunt u bovendien toegangspolicy's configureren voor het beheren van de communicatie tussen services en het valideren van externe aanvragen.

Architectuurpatronen

Adviespatronen met aanbevolen technologiekeuzes


Internetapplicaties en mobiele applicaties

Internetapplicaties bestaan gewoonlijk uit een front-end (wat gebruikers zien) en een back-end (het deel dat de bedrijfslogica bevat). In reactie op een aanvraag van een gebruiker of API, communiceert een internetapplicatie met de API of met data die is opgeslagen in een bestandssysteem, objectopslag, blokopslag of database. De applicatie moet verschillende clients ondersteunen, zoals browsers en mobiele apparaten, en communiceren met andere systemen en applicaties door middel van API's.

Berichten versturen

Oplossingen voor het versturen van berichten verbinden applicatiecomponenten, inclusief bestaande on-premises systemen, met cloudoplossingen. Dit maakt dataoverdracht mogelijk als onderdeel van een goed gedefinieerde gedistribueerde verwerkingspijplijn, of voor de publicatie van berichten naar meerdere onafhankelijke downstreamsystemen die zich onafhankelijk van elkaar ontwikkelen.

Eventgestuurd

In de cloud is een event elke significante gebeurtenis of verandering in een systeem. De kernprincipes van een eventgestuurde architectuur zijn het vastleggen, communiceren, verwerken en bewaren van events. Als u een eventgestuurde applicatie bouwt op OCI, kunt u zich abonneren op wijzigingen in uw cloudresources en op events die uw applicatie genereert. Hierdoor kunt u bijna in realtime op deze events reageren. De meeste moderne applicaties die zijn gebouwd met microservices zijn gebaseerd op een eventgestuurde architectuur.

Big data en analytics

Big data is een verzameling mogelijkheden en patronen waarmee u alle soorten data (ongestructureerd, semi-gestructureerd en gestructureerd) kunt beheren, verzamelen, opslaan, catalogiseren, voorbereiden, verwerken en analyseren. Het maakt daarbij niet uit van welke bron de data afkomstig zijn. Denk bijvoorbeeld aan databases, video's, formulieren, documenten, logbestanden, webpagina's of afbeeldingen. De mogelijkheden voor big data die Oracle biedt, omvatten verschillende services en tools, zodat u uw big data-traject kunt starten op basis van uw vaardigheden en voorkeuren.

Machine learning (ML) en AI

Datawetenschappers en ML-engineers willen geen tijd verspillen aan het inrichten, upgraden, patchen en beveiligen van de infrastructuur. Ze willen modellen bouwen, trainen, implementeren en monitoren die het bedrijf verder helpen. Een machine-learning platform moet volledig worden beheerd en hen de mogelijkheid bieden om al deze stappen in de levenscyclus van de modelontwikkeling uit te voeren.

SaaS-uitbreidingen

Oracle Fusion Cloud, het SaaS-aanbod (software as a service) voor bedrijven van Oracle, omvat oplossingen voor gebieden als HCM, ERP, SCM en CX. Het biedt uitgebreide functionaliteit, maar soms willen organisaties aangepaste gebruikersinterfaces en bedrijfsprocessen ontwikkelen ter uitbreiding van die functionaliteit. Deze uitbreidingsapplicaties integreren met informatie uit Oracle Fusion Cloud, gebruiken dezelfde beveiligingslaag en combineren vaak data uit andere systemen, waardoor een gebruikerservaring ontstaat die naadloos integreert met Oracle Cloud Apps.

Weinig code

Platforms met weinig code zijn zeer geschikt voor het bouwen van opportunistische applicaties in samenwerking met zakelijke belanghebbenden, het bouwen van applicaties voor datarapportages en -analyses, het uitbreiden van SaaS-applicaties en het moderniseren van verouderde applicaties. Elke regel code brengt kosten met zich mee: voor het schrijven, onderhouden, debuggen, upgraden en beveiligen ervan. Oracle Application Express (APEX) helpt ontwikkelaars deze kosten te besparen door hoogwaardige componenten en gemeenschappelijke ontwerppatronen te bieden via een intuïtieve en grafische ontwikkelervaring.

Technologieaanbevelingen

Alles openen Alles sluiten

Een lijst met aanbevolen technologieën voor moderne applicaties, gevalideerd aan de hand van feedback van Oracle-klanten

Categorieën en aanbevolen technologieën, zie beschrijving hieronder In deze afbeelding worden de categorieën en aanbevolen technologieën getoond die in de omliggende tekst worden beschreven. De relaties tussen de categorieën worden als volgt geïllustreerd: de categorie Languages and Frameworks bevat invoer voor de categorie DevOps, die weer invoer is voor de categorie Application. Deze drie categorieën worden ondersteund door de categorie Security and Governance, die zelf wordt ondersteund door de categorie Observability and Management. Elke categorie bevat afbeeldingen met de meest prominente technologieën voor die categorie.