DataOps för modernt informationslager

Azure Data Factory
Azure Databricks
Azure DevOps
Azure Key Vault
Azure Synapse Analytics

Den här artikeln beskriver hur ett fiktivt stadsplaneringskontor kan använda den här lösningen. Lösningen tillhandahåller en datapipeline från slutpunkt till slutpunkt som följer MDW-arkitekturmönstret, tillsammans med motsvarande DevOps- och DataOps-processer, för att utvärdera parkeringsanvändning och fatta mer välgrundade affärsbeslut.

Arkitektur

Följande diagram visar lösningens övergripande arkitektur.

Arkitekturdiagram som visar DataOps för det moderna informationslagret.

Ladda ned en Visio-fil med den här arkitekturen.

Dataflöde

Azure Data Factory (ADF) orkestrerar och Azure Data Lake Storage (ADLS) Gen2 lagrar data:

  1. Webbtjänst-API:et för contosos stadsparkering är tillgängligt för överföring av data från parkeringsplatserna.

  2. Det finns ett ADF-kopieringsjobb som överför data till landningsschemat.

  3. Därefter rensar Och standardiserar Azure Databricks data. Den tar rådata och villkor så att dataexperter kan använda dem.

  4. Om valideringen visar felaktiga data dumpas de i det felaktiga schemat.

    Viktigt!

    Personer har frågat varför data inte verifieras innan de lagras i ADLS. Anledningen är att valideringen kan medföra en bugg som kan skada datauppsättningen. Om du introducerar en bugg i det här steget kan du åtgärda felet och spela upp pipelinen igen. Om du dumpade felaktiga data innan du lade till dem i ADLS är skadade data värdelösa eftersom du inte kan spela upp pipelinen igen.

  5. Det finns ett andra Azure Databricks-transformeringssteg som konverterar data till ett format som du kan lagra i informationslagret.

  6. Slutligen hanterar pipelinen data på två olika sätt:

    1. Databricks gör data tillgängliga för dataexperten så att de kan träna modeller.

    2. Polybase flyttar data från datasjön till Azure Synapse Analytics och Power BI kommer åt data och presenterar dem för företagsanvändaren.

Komponenter

Lösningen använder följande komponenter:

Information om scenario

Med ett modernt informationslager (MDW) kan du enkelt samla alla dina data i valfri skala. Det spelar ingen roll om det är strukturerade, ostrukturerade eller halvstrukturerade data. Du kan få insikter om en MDW via analytiska instrumentpaneler, driftrapporter eller avancerad analys för alla dina användare.

Det är komplext att konfigurera en MDW-miljö för både utvecklingsmiljöer (dev) och produktionsmiljöer (prod). Det är viktigt att automatisera processen. Det bidrar till att öka produktiviteten samtidigt som risken för fel minimeras.

Den här artikeln beskriver hur ett fiktivt stadsplaneringskontor kan använda den här lösningen. Lösningen tillhandahåller en datapipeline från slutpunkt till slutpunkt som följer MDW-arkitekturmönstret, tillsammans med motsvarande DevOps- och DataOps-processer, för att utvärdera parkeringsanvändning och fatta mer välgrundade affärsbeslut.

Lösningskrav

  • Möjlighet att samla in data från olika källor eller system.

  • Infrastruktur som kod: distribuera nya utvecklings- och mellanlagringsmiljöer (stg) på ett automatiserat sätt.

  • Distribuera programändringar i olika miljöer på ett automatiserat sätt:

    • Implementera CI/CD-pipelines (Continuous Integration/Continuous Delivery).

    • Använd distributionsportar för manuella godkännanden.

  • Pipeline som kod: se till att CI/CD-pipelinedefinitionerna finns i källkontrollen.

  • Utför integreringstester på ändringar med hjälp av en exempeldatauppsättning.

  • Kör pipelines enligt schemat.

  • Stöd för framtida agil utveckling, inklusive tillägg av datavetenskapsarbetsbelastningar.

  • Stöd för säkerhet på både radnivå och objektnivå:

    • Säkerhetsfunktionen är tillgänglig i SQL Database.

    • Du hittar den också i Azure Synapse Analytics, Azure Analysis Services (AAS) och Power BI.

  • Stöd för 10 samtidiga instrumentpanelsanvändare och 20 samtidiga power-användare.

  • Datapipelinen ska utföra dataverifiering och filtrera bort felaktiga poster till ett angivet lager.

  • Stöd för övervakning.

  • Centraliserad konfiguration i en säker lagring som Azure Key Vault.

Potentiella användningsfall

Den här artikeln använder den fiktiva staden Contoso för att beskriva användningsfallsscenariot. I berättelsen äger och hanterar Contoso parkeringssensorer för staden. Den äger också de API:er som ansluter till och hämtar data från sensorerna. De behöver en plattform som samlar in data från många olika källor. Data måste sedan verifieras, rensas och omvandlas till ett känt schema. Contosos stadsplanerare kan sedan utforska och utvärdera rapportdata om parkeringsanvändning med datavisualiseringsverktyg, till exempel Power BI, för att avgöra om de behöver fler parkeringsresurser eller relaterade resurser.

Tillgänglighet för gatuparkering

Att tänka på

I följande lista sammanfattas viktiga lärdomar och metodtips som visas i den här lösningen:

Kommentar

Varje objekt i listan nedan länkar till det relaterade avsnittet Key Learnings i dokumenten för exemplet med parkeringssensorlösningen på GitHub.

Distribuera det här scenariot

Följande lista innehåller de övergripande steg som krävs för att konfigurera lösningen Parkeringssensorer med motsvarande bygg- och versionspipelines. Du hittar detaljerade installationssteg och krav i den här Azure Samples-lagringsplatsen.

Installation och distribution

  1. Inledande installation: Installera eventuella krav, importera GitHub-lagringsplatsen Azure Samples till din egen lagringsplats och ange nödvändiga miljövariabler.

  2. Distribuera Azure-resurser: Lösningen levereras med ett automatiserat distributionsskript. Den distribuerar alla nödvändiga Azure-resurser och Microsoft Entra-tjänstens huvudnamn per miljö. Skriptet distribuerar även Azure Pipelines, variabelgrupper och tjänstanslutningar.

  3. Konfigurera git-integrering i dev Data Factory: Konfigurera git-integrering så att den fungerar med den importerade GitHub-lagringsplatsen.

  4. Utför en första version och version: Skapa en exempeländring i Data Factory, som att aktivera en schemautlösare och se sedan ändringen distribueras automatiskt mellan miljöer.

Distribuerade resurser

Om distributionen lyckas bör det finnas tre resursgrupper i Azure som representerar tre miljöer: dev, stg och prod. Det bör också finnas bygg- och versionspipelines från slutpunkt till slutpunkt i Azure DevOps som automatiskt kan distribuera ändringar i dessa tre miljöer.

En detaljerad lista över alla resurser finns i avsnittet Distribuerade resurser i README för dataops – parkeringssensor.

Kontinuerlig integrering och kontinuerlig leverans

Diagrammet nedan visar CI/CD-processen och sekvensen för bygg- och versionspipelines.

Diagram som visar processen och sekvensen för build och release.

Ladda ned en Visio-fil med den här arkitekturen.

  1. Utvecklare utvecklar i sina egna sandbox-miljöer i utvecklingsresursgruppen och genomför ändringar i sina egna kortlivade git-grenar. Exempel: <developer_name>/<branch_name>

  2. När ändringarna är klara skapar utvecklare en pull-begäran (PR) till huvudgrenen för granskning. Om du gör det startas automatiskt PR-valideringspipelinen, som kör versionerna enhetstester, linting och datanivåprogrampaket (DACPAC).

  3. När PR-valideringen har slutförts utlöser incheckningen till main en bygg-pipeline som publicerar alla nödvändiga byggartefakter.

  4. Slutförandet av en lyckad bygg-pipeline utlöser den första fasen i versionspipelinen. På så sätt distribueras publiceringsversionens artefakter till utvecklingsmiljön, förutom ADF.

    Utvecklare publicerar manuellt till dev ADF från samarbetsgrenen (main). Den manuella publiceringen uppdaterar ARM-mallarna (Azure Resource Manager) i grenen adf_publish .

  5. Det lyckade slutförandet av den första fasen utlöser en manuell godkännandegrind.

    Vid godkännande fortsätter versionspipelinen med den andra fasen och distribuerar ändringar till stg-miljön.

  6. Kör integreringstester för att testa ändringar i stg-miljön.

  7. När den andra fasen har slutförts utlöser pipelinen en andra manuell godkännandegrind.

    Vid godkännande fortsätter versionspipelinen med den tredje fasen och distribuerar ändringar till prod-miljön.

Mer information finns i avsnittet Bygg- och versionspipeline i README.

Testning

Lösningen innehåller stöd för både enhetstestning och integreringstestning. Den använder pytest-adf och Nutter Testing Framework. Mer information finns i avsnittet Testning i README.

Observerbarhet och övervakning

Lösningen stöder observerbarhet och övervakning för Databricks och Data Factory. Mer information finns i avsnittet Observerbarhet/övervakning i README.

Nästa steg

Om du vill distribuera lösningen följer du stegen i avsnittet Så här använder du exempelavsnitteti README för dataops – parkeringssensor.

Lösningskodexempel på GitHub

Observerbarhet/övervakning

Azure Databricks

Data Factory

Synapse Analytics

Azure Storage

Återhämtning och haveriberedskap

Azure Databricks

Data Factory

Synapse Analytics

Azure Storage

Detaljerad genomgång

En detaljerad genomgång av lösningen och nyckelbegreppen finns i följande videoinspelning: DataDevOps för Modern Data Warehouse på Microsoft Azure