Wanneer bedrijven hun SQL-servers willen uitbreiden naar de cloud, zijn er verschillende opties beschikbaar, afhankelijk van de behoefte aan controle, kosten en schaalbaarheid. Dit geldt zeker voor Ralph, de SQL-databasebeheerder in het voorbeeld, die geen ervaring heeft met cloudtechnologieën maar de SQL-infrastructuur van zijn organisatie naar Azure wil verplaatsen.

De eerste overweging die Ralph moet maken, is welke Azure SQL-implementatie het beste past bij zijn bestaande ervaring met on-premises SQL-servers. Het gebruik van een Azure Virtual Machine (VM) met SQL Server geïnstalleerd is waarschijnlijk de optie die het dichtst bij zijn ervaring ligt, aangezien dit hem in staat stelt een volledig beheerde server te draaien die vergelijkbaar is met wat hij gewend is in een datacenter. Dit biedt de vrijheid om volledige controle over het besturingssysteem te behouden, hoewel dit ook verantwoordelijkheden met zich meebrengt, zoals het onderhoud van de infrastructuur en de installatie van updates.

Een andere optie die Ralph kan overwegen, is het implementeren van een Azure SQL Managed Instance. Dit biedt de voordelen van een platform-as-a-service (PaaS), zoals automatische updates, een eenvoudiger beheer van de database en de mogelijkheid om zich meer te concentreren op de configuratie en optimalisatie van de database zelf, in plaats van de onderliggende infrastructuur. Dit maakt het makkelijker voor Ralph om de overgang naar de cloud te maken zonder diepgaande kennis van cloudarchitectuur.

Een andere belangrijke vraag betreft de mate van controle die Ralph wil behouden over de besturingssystemen van zijn cloudservers. De keuze tussen Infrastructure as a Service (IaaS) en Platform as a Service (PaaS) is hierbij van belang. IaaS biedt Ralph volledige controle over het besturingssysteem en de infrastructuur, terwijl PaaS zich richt op het leveren van alleen de benodigde platformcomponenten voor databasebeheer.

Wat betreft de schaalbaarheid van de databases, zou Ralph kunnen overwegen de capaciteit van een bestaande server te vergroten (scaling up) in plaats van nieuwe servers toe te voegen. Scaling up biedt de mogelijkheid om de middelen van een server aan te passen, zoals het verhogen van de CPU of het toevoegen van geheugen. Dit is anders dan sharding, waarbij gegevens over meerdere databases worden verdeeld om de belasting te verdelen, wat vaak complexer is en meer beheer vereist.

Als Ralph besluit om de SQL-database naar de cloud te migreren, kan hij gebruik maken van verschillende tools voor het migratieproces. De Azure Migrate en Azure Data Studio kunnen helpen bij het analyseren en coördineren van de migratie, maar de daadwerkelijke migratie wordt uitgevoerd door Azure Database Migration Service. Het gebruik van deze tools maakt het proces aanzienlijk eenvoudiger en efficiënter.

Naast het overwegen van de juiste technologieën en tools voor de implementatie, is het voor Ralph ook belangrijk om aandacht te besteden aan de beveiliging van de cloudomgeving. Azure biedt verschillende beveiligingsopties om ervoor te zorgen dat de gegevens die naar de cloud worden verplaatst, veilig blijven, zowel in rust als tijdens transport. Authenticatie en autorisatie spelen hierbij een cruciale rol. De keuze tussen Azure Active Directory (Entra ID) en de traditionele SQL Server-authenticatie kan een groot verschil maken in de veiligheid en het beheer van toegang tot gegevens. Entra ID biedt geavanceerde beveiligingsmogelijkheden zoals multi-factor authenticatie, wat een veiliger alternatief biedt dan de traditionele SQL Server-authenticatie, die kwetsbaar is voor aanvallen zoals wachtwoordinterceptie.

Verder is het belangrijk dat Ralph de principes van het minst privilege volgt bij het toekennen van toegangsrechten. Dit betekent dat gebruikers alleen toegang krijgen tot de gegevens en functies die strikt noodzakelijk zijn voor hun werk. Dit helpt de kans op misbruik of ongeautoriseerde toegang te minimaliseren. Het beheren van toegang via Active Directory of Entra ID zorgt ervoor dat Ralph de controle houdt over wie wat kan doen binnen de database, zonder dat hij zich zorgen hoeft te maken over het expliciet beheren van wachtwoorden of andere inloggegevens.

Het is eveneens essentieel om compliance- en beveiligingscontroles goed in te stellen voor gevoelige gegevens. Zeker bij het werken met cloudtechnologieën moeten organisaties zich bewust zijn van de regelgeving rondom gegevensbescherming, zoals de GDPR. Azure biedt uitgebreide compliance-opties die helpen bij het voldoen aan wettelijke eisen, maar het is aan de beheerders om ervoor te zorgen dat deze controles correct worden toegepast.

Naast de technische aspecten van de cloudmigratie, is het ook belangrijk voor Ralph om te begrijpen dat het verplaatsen van databases naar de cloud niet alleen een technische uitdaging is, maar ook een organisatorische. Er moet voldoende training en voorbereiding zijn voor het team dat de cloudomgeving beheert, evenals een gedetailleerd plan voor het migreren van gegevens, het testen van de nieuwe infrastructuur en het bewaken van de prestaties na de migratie.

Hoe kan men de integriteit van gegevens waarborgen in een Azure SQL-omgeving met behulp van Ledger-functionaliteit?

De Ledger-functionaliteit in databases biedt een betrouwbare manier om de integriteit van gegevens te waarborgen door cryptografische technieken te gebruiken. Het doel van Ledger is om gevoelige gegevens te beschermen tegen manipulatie, of dit nu het gevolg is van een opzettelijke aanval of onbedoelde fouten. Door Ledger in een database in te schakelen, kan een organisatie de betrouwbaarheid van haar gegevens garanderen en verzekeren dat deze niet zijn veranderd. Dit is een belangrijk kenmerk voor bedrijven die moeten voldoen aan strikte regels omtrent gegevensbeveiliging en transparantie.

Bij het inschakelen van Ledger in een database genereert SQL ledger-tabellen, die in twee hoofdtypes komen: updatable ledger-tabellen en append-only ledger-tabellen. Deze tabellen bieden verschillende methoden om de gegevensintegriteit te waarborgen, afhankelijk van de manier waarop de gegevens worden beheerd en gewijzigd.

Updatable ledger-tabellen zijn ontworpen voor toepassingen die gebruikmaken van UPDATE-, INSERT- en DELETE-commando’s. Ze behouden een aparte geschiedenis van bijgewerkte rijen in een cryptografisch gehashte vorm. Dit proces maakt gebruik van een datastructuur die bekend staat als een blockchain. Elke transactie wordt opnieuw gehasht en aan de keten toegevoegd, zodat een onomstotelijk bewijs van gegevensintegriteit ontstaat. Dit type ledger biedt ook de mogelijkheid om database-hashes te genereren voor externe opslag. Beheerders kunnen deze later gebruiken om de integriteit van de gegevens te verifiëren.

Aan de andere kant zijn append-only ledger-tabellen bedoeld voor toepassingen die alleen INSERT-commando’s genereren, zoals loggen en eventmanagement-tools. Deze tabellen blokkeren UPDATE- en DELETE-commando’s en bewaren geen geschiedenis, omdat er geen gegevenswijzigingen of -verwijderingen zijn die gevolgd of bewaard moeten worden. Dit maakt ze eenvoudiger en efficiënter voor scenario’s waarin alleen nieuwe gegevens worden toegevoegd zonder dat eerdere gegevens worden aangepast.

Beheerders kunnen de Ledger-functionaliteit inschakelen bij het aanmaken van een nieuwe database via het Azure-portaal. Dit proces kan niet ongedaan worden gemaakt, waardoor alle tabellen in de database worden omgezet naar updatable ledger-tabellen. Nieuwe tabellen die daarna worden aangemaakt, zullen standaard ook updatable ledger-tabellen zijn. Het is mogelijk om Ledger per tabel in te schakelen met behulp van T-SQL-commando’s, zonder dat dit op de hele database van toepassing is. Zo kan een specifieke tabel met de optie "LEDGER = ON" worden ingesteld, zoals bijvoorbeeld een tabel voor saldo-informatie.

Bijvoorbeeld, de volgende T-SQL-code maakt een nieuwe tabel aan met de Ledger-functionaliteit ingeschakeld:

sql
CREATE TABLE [Account].[Balance] (
[CustomerID] INT NOT NULL PRIMARY KEY CLUSTERED,
[LastName]
VARCHAR (50) NOT NULL, [FirstName] VARCHAR (50) NOT NULL, [Balance] DECIMAL (10,2) NOT NULL ) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [Account].[BalanceHistory], LEDGER = ON));

Als de Ledger-functionaliteit al is ingeschakeld op database-niveau, hoeven nieuwe tabellen geen expliciete "LEDGER = ON"-parameter te bevatten, aangezien dit automatisch wordt toegepast.

Daarnaast kunnen beheerders append-only ledger-tabellen creëren, bijvoorbeeld voor het vastleggen van toegangscontrole-evenementen. In dit geval is het niet nodig om versiebeheer in te schakelen, omdat er geen wijzigingen of verwijderingen van gegevens plaatsvinden. De T-SQL-code zou er als volgt uitzien:

sql
CREATE TABLE [AccessControl].[Events] ( [EmployeeID] INT NOT NULL, [AccessOperationDescription] NVARCHAR (1024) NOT NULL, [Timestamp] DATETIME2 NOT NULL )
WITH (LEDGER = ON (APPEND_ONLY = ON));

Naast Ledger-functionaliteit kan het implementeren van row-level security (RLS) in Azure SQL extra bescherming bieden door toegang tot specifieke rijen in een tabel te beperken. Dit kan bijvoorbeeld nuttig zijn in scenario’s waar gevoelige informatie, zoals personeelsgegevens, alleen toegankelijk moet zijn voor bevoegde gebruikers, zoals afdelingshoofden. RLS is een techniek die gebruik maakt van bestaande tools en T-SQL-functies om een beveiligingsbeleid te creëren dat alleen de rijen toont die relevant zijn voor een specifieke gebruiker. De implementatie van RLS kan worden gedaan door een functie te maken die de rijen filtert en een beveiligingsbeleid toe te voegen dat de toegang regelt.

Een voorbeeld van een dergelijke T-SQL-functie zou eruit kunnen zien als:

sql
CREATE FUNCTION Security.hr_securitypredicate(@DeptMgr AS NVARCHAR(100))
RETURNS TABLE WITH SCHEMABINDING AS RETURN SELECT 1 AS hr_securitypredicate_result WHERE @DeptMgr = USER_NAME() OR USER_NAME() = 'Manager';

Beheerders kunnen vervolgens de juiste SELECT-rechten verlenen aan specifieke gebruikers en een beveiligingsbeleid implementeren om de toegang te beperken op basis van de waarden in de rijen. Dit biedt een extra laag van bescherming zonder de structuur van de gegevens te veranderen.

Het is ook van belang te begrijpen dat de implementatie van beveiliging in een SQL-omgeving verder kan worden versterkt met behulp van Microsoft Defender voor SQL. Microsoft Defender is een onderdeel van de Microsoft Defender voor Cloud-service en biedt geavanceerde bedreigingsdetectie, kwetsbaarheidsbeoordeling en andere beveiligingsmaatregelen. Door Defender in te schakelen, kunnen beheerders hun SQL-omgevingen beschermen tegen onbekende dreigingen, terwijl ze aanbevelingen krijgen voor het verbeteren van de beveiliging van hun databases.

Enkele belangrijke functies van Microsoft Defender voor SQL zijn onder andere Advanced Threat Protection (ATP), die kunstmatige intelligentie gebruikt om beveiligingsdreigingen te detecteren, en Vulnerability Assessment, een cloudservice die risico’s in de SQL-database analyseert en corrigeerbare stappen aanbeveelt.

Een database beveiligen met behulp van Ledger-functionaliteit, RLS en Microsoft Defender biedt organisaties krachtige hulpmiddelen om de integriteit van gegevens te waarborgen, zowel tegen interne als externe dreigingen. Deze mechanismen versterken de algehele beveiliging van de omgeving en kunnen bijdragen aan compliance met regelgeving en industriële standaarden.

Hoe de implementatie van hybride SQL Server-oplossingen uit te voeren met Azure IaaS en PaaS

In de hedendaagse cloudinfrastructuur biedt Microsoft verschillende opties voor de implementatie van SQL Server-oplossingen, voornamelijk via de modellen Infrastructure as a Service (IaaS) en Platform as a Service (PaaS). Beide modellen bieden verschillende niveaus van verantwoordelijkheid en beheer voor de klant en de cloudprovider. Dit artikel onderzoekt de verschillen tussen deze modellen en biedt een gedetailleerd overzicht van de implementatie van SQL Server in een hybride cloudomgeving.

Microsoft Azure biedt drie belangrijke SQL-aanbiedingen: SQL Server op een virtuele machine (VM) binnen IaaS, Azure SQL Database en Azure SQL Managed Instance binnen PaaS. Elk van deze heeft zijn eigen voor- en nadelen, afhankelijk van de specifieke behoeften en vereisten van de organisatie.

SQL Server op een Azure Virtual Machine (IaaS) biedt maximale flexibiliteit, aangezien het de volledige controle over de serverconfiguratie en de applicaties, inclusief SQL Server, aan de klant overlaat. Dit maakt het model ideaal voor organisaties die al bekend zijn met on-premises SQL Server-implementaties en hun bestaande werkwijzen willen voortzetten zonder zich zorgen te maken over training of het aanpassen van hun beheerprocessen. Daarnaast biedt dit model voordelen zoals versie-vrijheid, waar de klant elke gewenste versie van SQL Server kan installeren, inclusief oudere versies of open-source distributies.

De mogelijkheid om extra SQL Server-tools te installeren, zoals SQL Server Integration Services (SSIS), SQL Server Analysis Services (SSAS), en SQL Server Reporting Services (SSRS), maakt het aantrekkelijk voor geavanceerde implementaties. Dit is niet mogelijk in de PaaS-aanbiedingen, die beperkte configuratieopties bieden.

Echter, IaaS vereist dat de klant volledig verantwoordelijk is voor het onderhoud van de virtuele machine, inclusief het besturingssysteem, applicaties en updates. Dit kan door sommige beheerders als een nadeel worden gezien, aangezien ze voortdurend patches en updates moeten toepassen. Anderzijds waarderen sommige IT-beheerders de controle die dit biedt, omdat ze updates kunnen evalueren voordat ze deze implementeren.

Daarnaast moeten IaaS-klanten zelf zorgen voor de licenties voor hun software, inclusief SQL Server. Azure biedt echter de mogelijkheid om bestaande on-premises licenties via het Azure Hybrid Benefit-programma over te zetten naar een virtuele machine in de cloud, wat aanzienlijke kostenbesparingen kan opleveren.

Azure SQL Database en Azure SQL Managed Instance (PaaS) bieden een volledig beheerde oplossing waarbij de klant zich geen zorgen hoeft te maken over de onderliggende infrastructuur, zoals besturingssysteembeheersing en patches. In plaats daarvan ligt de verantwoordelijkheid voor deze taken bij Microsoft. Dit maakt PaaS een aantrekkelijke optie voor organisaties die geen behoefte hebben aan de gedetailleerde controle die IaaS biedt, of voor bedrijven die de operationele complexiteit van hun SQL Server-omgeving willen verminderen.

Azure SQL Database biedt een database-as-a-service, waarbij de klant alleen de database zelf beheert, terwijl Azure SQL Managed Instance een meer traditionele SQL Server-omgeving simuleert in de cloud, maar dan met de voordelen van automatische schaling en volledig beheer door Microsoft. Beide PaaS-opties bieden automatisch patchbeheer, maar zijn beperkter wat betreft de mogelijkheid om oudere versies van SQL Server of aanvullende tools zoals SSIS, SSAS en SSRS te installeren.

Een ander belangrijk verschil tussen IaaS en PaaS betreft de schaalbaarheid en prestaties. PaaS-oplossingen bieden vaak geavanceerdere schaling en prestaties, omdat ze zijn ontworpen voor cloud-native toepassingen en continu kunnen worden geoptimaliseerd door Microsoft.

Bij de keuze tussen IaaS en PaaS moeten organisaties niet alleen kijken naar technische vereisten, maar ook naar kosten, beheergemak en de benodigde flexibiliteit. Voor bedrijven die een grote mate van controle en maatwerk nodig hebben, kan IaaS de voorkeur hebben. PaaS daarentegen biedt een snellere implementatie en minder onderhoud, wat aantrekkelijk is voor organisaties die snel willen opschalen zonder zich zorgen te maken over infrastructuurbeheer.

Het begrijpen van de juiste toepassing van tabelpartitionering en databasesharding is van cruciaal belang wanneer men een SQL Server-oplossing op Azure implementeert. Tabelpartitionering helpt bij het efficiënt beheren van grote hoeveelheden gegevens door tabellen op te splitsen in kleinere, beter beheersbare delen. Dit kan de prestaties aanzienlijk verbeteren, vooral voor applicaties die zware lees- of schrijfactiviteiten uitvoeren.

Database sharding daarentegen verdeelt de database in verschillende kleinere databases (shards), wat helpt bij het horizontaal schalen van toepassingen. Dit kan noodzakelijk zijn wanneer de belasting van een enkele database te groot wordt om efficiënt te beheren, zoals het geval kan zijn bij grote, verspreide toepassingen. Beide technieken kunnen de prestaties en de schaalbaarheid van hybride SQL Server-oplossingen verbeteren.

Tot slot is het belangrijk te begrijpen dat, hoewel de technische voordelen van hybride SQL Server-implementaties duidelijk zijn, organisaties zich ook bewust moeten zijn van de beveiligingsimplicaties van cloudgebaseerde databases. De verantwoordelijkheid voor het beveiligen van gegevens in de cloud ligt deels bij de klant, zelfs in PaaS-omgevingen. Het gebruik van encryptie, veilige toegangsmethoden en het naleven van compliance-vereisten zijn essentieel voor het waarborgen van de integriteit en vertrouwelijkheid van gegevens, vooral wanneer gevoelige informatie wordt verwerkt.

Hoe kunnen ARM-sjablonen en Bicep-bestanden de implementatie van SQL-componenten in Azure vereenvoudigen?

Wanneer een sjabloon de implementatie van zowel een virtueel netwerk als een virtuele machine specificeert, zal ARM altijd het virtuele netwerk eerst implementeren, ongeacht de volgorde van de commando's in het sjabloonbestand. Dit komt doordat ARM zich bewust is van de afhankelijkheid van de virtuele machine ten opzichte van het virtuele netwerk. Dit is een belangrijk kenmerk van hoe Azure Resource Manager (ARM) de afhankelijkheden tussen verschillende resources beheert, waardoor het voor gebruikers gemakkelijker wordt om geavanceerde implementaties te plannen zonder zich zorgen te maken over de volgorde van de componenten.

Hoewel abonnees nieuwe sjablonen vanaf nul kunnen maken en handmatig vullen met de juiste syntaxis, is dit een tijdrovend proces dat diepgaande kennis van het sjabloonformaat en de syntaxis vereist. Een veel eenvoudigere manier om een ARM-sjabloon te maken, is door de optie "Download een sjabloon voor automatisering" te gebruiken op de pagina "Review + Create" van een SQL-installatie. Dit opent een sjabloonvenster, waarin een vooraf geconfigureerd sjabloon wordt weergegeven dat alle instellingen bevat die tijdens het installatieproces zijn geconfigureerd. De abonnee kan het sjabloon naar wens aanpassen en vervolgens opslaan of downloaden voor later gebruik. Dit biedt een gemakkelijke manier om snel een sjabloon te genereren dat de specifieke configuraties van een bestaande installatie weerspiegelt.

Het is ook mogelijk om een ARM-sjabloonbestand te bekijken en te maken op basis van een bestaande SQL-installatie, waarbij alle huidige instellingen van de installatie in de code worden opgenomen. Bij het opslaan van een ARM-sjabloon kan de abonnee een unieke naam opgeven en versie-informatie toevoegen. Op deze manier kan ARM functioneren als een bibliotheek van SQL-componentinstallaties die door de abonnee opnieuw geïmplementeerd kunnen worden wanneer dat nodig is. Azure biedt ook een ander hulpmiddel voor het opslaan van ARM-sjablonen, genaamd template specs. Template specs zijn deelbare resources die Azure opslaat in resourcegroepen met behulp van role-based access control (RBAC). Gebruikers kunnen template specs maken van bestaande ARM-sjablonen via de grafische interface van Azure, of met behulp van de az ts create-opdracht in de Azure CLI of de New-AzTemplateSpec cmdlet in PowerShell.

Azure biedt verschillende manieren om ARM-sjablonen en template specs te implementeren. Het Azure-portaal biedt een mogelijkheid voor handmatige implementatie van sjablonen, maar het is ook mogelijk om implementaties uit te voeren vanuit een opdrachtprompt in Azure CLI, met behulp van de az deployment-commando's, of in PowerShell met de New-Az cmdlets, of via de Azure Cloud Shell. Deze opdrachtprompts bieden ook scriptingmogelijkheden waarmee abonnees geautomatiseerde massadeployments kunnen ontwerpen.

Het is belangrijk te vermelden dat het Azure Templates-hulpmiddel per 31 maart 2025 wordt gepensioneerd. Microsoft raadt aan in plaats daarvan template specs te gebruiken. Kandidaten voor het DP-300-examen dienen zich bewust te zijn van deze wijziging, hoewel template specs niet voorkomen in de doelstellingen van het examen.

Bicep-bestanden als alternatief voor JSON-syntaxis

ARM-sjablonen en template specs zijn krachtige hulpmiddelen voor het documenteren en dupliceren van Azure-implementaties, maar voor abonnees die van plan zijn om direct met de sjablooncode te werken, kan de JSON-syntaxis een aanzienlijke leercurve met zich meebrengen. Bicep is een alternatief sjabloon-taal die verschillende voordelen heeft ten opzichte van JSON. De belangrijkste voordelen zijn onder andere:

  1. Eenvoudigere syntaxis: Bicep vereenvoudigt de definitie van variabelen en elimineert veel van de gecompliceerde interpunctie en haakjes die nodig zijn in JSON.

  2. Herbruikbare modules: Bicep-bestanden kunnen modules aanroepen die zijn opgeslagen als andere Bicep-bestanden, waardoor abonnees modulaire sjablonen kunnen maken voor complexe installaties.

  3. Afhankelijkheidsdetectie: Bicep-bestanden hoeven de afhankelijkheden tussen Azure-resources niet te documenteren, omdat Bicep deze automatisch detecteert.

Bijvoorbeeld, een ARM-sjabloon om een SQL-server en database te implementeren kan er als volgt uitzien in JSON-syntaxis:

json
"$schema": "https://schema.management.azure.com/schemas/2019-04 json#", "contentVersion": "1.0.0.0", "metadata": { "_generator": { "name": "bicep", "version": "0.26.54.24096", "templateHash": "701368865972773013" } }, "parameters": { "serverName": { "type": "string", "defaultValue": "[uniqueString('sql', resourceGroup().id)]" }, "sqlDBName": { "type": "string", "defaultValue": "SampleDB" } }, "resources": [ { "type": "Microsoft.Sql/servers", "name": "[parameters('serverName')]", "location": "[parameters('location')]", "properties": { "administratorLogin": "[parameters('administratorLogin')]" } } ]

In vergelijking is de code in een Bicep-bestand om dezelfde installatie uit te voeren veel korter en gemakkelijker voor niet-programmeurs om te begrijpen en aan te passen aan hun eigen behoeften:

bicep
param serverName string = uniqueString('sql', resourceGroup().id)
param sqlDBName string = 'SampleDB' param location string = resourceGroup().location param administratorLogin string @secure() param administratorLoginPassword string resource server 'Microsoft.Sql/servers@2019-06-01-preview' = { name: serverName location: location properties: { administratorLogin: administratorLogin administratorLoginPassword: administratorLoginPassword } } resource sqlDB 'Microsoft.Sql/servers/databases@2020-08-01-preview' = { name: '${server.name}/${sqlDBName}' location: location sku: { name: 'Standard' tier: 'Standard' } }

Bicep-bestanden zijn compatibel met ARM-sjablonen. Wanneer een abonnee een Bicep-bestand implementeert, converteert ARM de Bicep-syntaxis eerst naar een ARM-sjabloon in JSON-syntaxis.

Automatisering van implementaties met Azure CLI en PowerShell

Zowel Azure CLI als PowerShell bevatten commando's waarmee abonnees ARM-sjablonen vanuit hun respectieve opdrachtprompt kunnen implementeren. In Azure CLI zou een commando om een ARM-sjabloon te implementeren er als volgt uit kunnen zien:

bash
az deployment group create --resource-group ResourceGroup1 --name '\path\sqltemplate.json'

Als Azure CLI niet beschikbaar is, kunnen abonnees dezelfde commando's gebruiken in de Azure Cloud Shell. Hoewel het gebruik van PowerShell voor SQL-implementaties niet gebruikelijk is, is het wel mogelijk. Het equivalente commando in PowerShell zou als volgt kunnen zijn:

bash
New-AzResourceGroupDeployment -Name SQLDeployment -ResourceGroupName -TemplateFile c:\MyTemplates\sqltemplate.json -TemplateParameterFile storage.parameters.json

Hoewel het mogelijk is om Azure CLI en PowerShell te gebruiken om declaratieve ARM-sjablonen vanuit een opdrachtprompt te implementeren, kunnen abonnees ook scripts maken die de installatie van SQL-componenten rechtstreeks vanuit deze prompts automatiseren. Deze zijn echter imperatieve scripts, wat betekent dat ze commando's moeten bevatten die de specifieke SQL-componenten in de juiste volgorde installeren.

Wat belangrijk is om te begrijpen

Naast het feit dat Bicep eenvoudiger te begrijpen is en template specs de voorkeur hebben boven het oude Azure Templates-hulpmiddel, is het essentieel om te weten hoe de afhankelijkheden tussen resources automatisch worden beheerd in Bicep. Dit maakt de foutgevoeligheid bij het creëren van complexe implementaties aanzienlijk kleiner. Bovendien biedt de integratie van Bicep met ARM-sjablonen de flexibiliteit om beide formaten in één project te gebruiken, afhankelijk van de situatie. Automatisering met Azure CLI of PowerShell kan bovendien de tijd die nodig is voor massadeployments aanzienlijk verkorten, wat vooral handig is in grotere omgevingen waar meerdere implementaties tegelijk plaatsvinden.

Hoe de Orkestratie van SQL Server in Azure de Implementatie en Onderhoud Vereenvoudigt

De rol van Azure Resource Manager (ARM) is cruciaal bij het effectief beheren en orkestreren van de implementatie van SQL Server in de cloud. Ongeacht de methode die een abonnee gebruikt om een nieuwe SQL-database te creëren — of het nu een portal dialoog, een ARM-sjabloon, een CLI- of PowerShell-script of een REST API betreft — de aanvraag doorloopt altijd ARM. Deze tool controleert of de abonnee de juiste machtigingen heeft om de vereiste reken-, opslag- en netwerkcomponenten te implementeren. Naast de authenticatie en autorisatie is ARM verantwoordelijk voor het groeperen van middelen en het onderhouden van de onderlinge afhankelijkheden, zodat de middelen consistent en in de juiste volgorde worden geïmplementeerd. Dit proces wordt orkestratie genoemd. Vanwege deze afhankelijkheden kan ARM een declaratief model gebruiken voor het implementeren van middelen. In dit model specificeert een sjabloon de te installeren middelen, en ARM is verantwoordelijk voor het orkestreren van hun implementatie.

Het alternatief voor dit declaratieve model is het imperatieve model, waarbij een reeks taken in een vaste volgorde moet worden uitgevoerd, zoals in een script of batchbestand. Dit laatste model is veel minder flexibel en geautomatiseerd in vergelijking met de declaratieve aanpak die ARM biedt, waarbij de gebruiker zich kan richten op de gewenste uitkomst zonder zich zorgen te maken over de precieze uitvoering van elke stap.

In hybride scenario's, waar een combinatie van on-premises en cloud SQL-omgevingen wordt gebruikt, blijft ARM een essentiële rol spelen in het orkestreren van de communicatie en datastromen tussen deze omgevingen. Dit is niet alleen belangrijk voor het beheer van de database-infrastructuur, maar ook voor het waarborgen van een consistente gebruikerservaring, ongeacht of de data zich nu in de cloud of on-premises bevindt.

Naast de orkestratie van implementaties, vereist het onderhoud van SQL Server in Azure een specifieke aanpak. Voor PaaS-producten van Azure SQL, zoals Azure SQL Database, worden updates en patches automatisch door het systeem toegepast, zodat de abonnee zich geen zorgen hoeft te maken over deze aspecten. Echter, voor subscribers die SQL Server draaien op een virtuele machine (VM) in een IaaS-omgeving, is het aan hen om patches en updates toe te passen of dit proces te automatiseren. De Azure VM's ondersteunen geautomatiseerde patching voor zowel het besturingssysteem als SQL Server-updates, maar dit moet wel expliciet worden ingeschakeld via de VM-configuratie.

Het inschakelen van geautomatiseerde patching vereist dat de SQL Server IaaS-agent is geïnstalleerd op de virtuele machine. Abonnees kunnen vervolgens een onderhoudsvenster configureren, het enige moment waarop Azure patches en updates kan installeren. Dit onderhoudsvenster is essentieel voor het minimaliseren van verstoringen in de werking van de SQL Server, aangezien updates altijd tijdens de goedgekeurde uren worden doorgevoerd.

Bij hybride implementaties moet de verbinding tussen de on-premises datacenter en Azure betrouwbaar en veilig zijn. Dit kan worden bereikt door gebruik te maken van een site-to-site VPN-verbinding of een ExpressRoute-tunnel. Hoewel een VPN een goedkopere optie is, is het afhankelijk van de internetverbinding van het datacenter, wat een risico kan vormen voor de prestaties en betrouwbaarheid. ExpressRoute biedt daarentegen een dedicated verbinding naar het Microsoft datacenter, wat hogere prestaties en betrouwbaarheid biedt, maar tegen hogere kosten. De keuze tussen deze twee opties is vaak afhankelijk van de specifieke bedrijfsbehoeften en de vereisten voor latentie en bandbreedte.

In het geval van de uitbreiding van on-premises SQL Server-omgevingen naar de cloud, kunnen bedrijven profiteren van de elasticiteit van Azure om hun capaciteit snel op of af te schalen afhankelijk van de bedrijfsbehoeften. Dit is met name nuttig voor bedrijven die piekbelastingen ervaren tijdens bepaalde periodes, zoals feestdagen of seizoensgebonden drukte. De hybride oplossing stelt hen in staat om snel extra VMs toe te voegen of de bestaande hardware te upgraden zonder zware investeringen in fysieke infrastructuur.

Daarnaast biedt een hybride SQL-infrastructuur de mogelijkheid om fouttolerantie en gegevensherstel op grotere schaal te implementeren. Door SQL VM's in meerdere regio's te plaatsen, kunnen bedrijven hun gegevens beschermen tegen regionale storingen, zoals natuurrampen of andere rampen. Dit biedt een kosteneffectieve manier om redundantie in te voeren zonder de noodzaak van dure datacenters op meerdere locaties.

Afhankelijk van de infrastructuurkeuze kan ook een off-site back-upstrategie worden geïmplementeerd naar Azure. Dit biedt extra bescherming voor SQL-gegevens in het geval van een storing of verlies van on-premises back-ups. Azure Backup ondersteunt SQL Server op virtuele machines, maar het is ook mogelijk om on-premises SQL-gegevens direct naar Azure Storage te back-uppen. Hierdoor kunnen gegevens veilig worden bewaard, zelfs als lokale back-ups falen, en kunnen ze indien nodig snel worden hersteld naar een nieuwe Azure SQL-installatie.

Tot slot biedt Azure Arc een oplossing voor bedrijven die zowel on-premises als cloudgebaseerde SQL Server-omgevingen willen beheren vanuit één interface. Azure Arc stelt beheerders in staat om on-premises servers naadloos in de Azure-omgeving te integreren, waardoor het beheer en de monitoring van beide omgevingen eenvoudiger en gestroomlijnder wordt. Dit maakt het mogelijk om consistentie te waarborgen en de complexiteit van het beheer van hybride omgevingen te verminderen.

Het effectief beheren van hybride SQL Server-oplossingen vereist een goed begrip van de onderlinge afhankelijkheden, zowel op het gebied van infrastructuur als toepassingen. Het is van belang om niet alleen de technische aspecten van implementatie en onderhoud te begrijpen, maar ook hoe deze strategieën bijdragen aan de algehele bedrijfsvoering, veerkracht en schaalbaarheid. Het benutten van de voordelen van Azure biedt een enorme flexibiliteit, maar vereist wel een zorgvuldige planning en uitvoering om een robuuste, betrouwbare en toekomstbestendige oplossing te waarborgen.