Uge 41: Cloud Storage
- Kenneth H Sørensen
- Oct 11
- 5 min read

Object Storage: MinIO vs Azure Blob
Cloud storage bruges til at gemme og tilgå data sikkert via internettet.
Jeg vil undersøge object storage som den mest udbredte metode, se nærmere på MinIO og Azure Blob Storage, sammenligne deres opbygning og anvendelse, og afslutte med en refleksion over valget af løsning.
Indhold:
Cloud storage
Object storage
Kernebegreber i object storage
Adgangskontrol i object storage
MinIO basics
Azure Blob basics
Sammenligning
Refleksion - Projekt valg
Ressourcer
Cloud Storage
Bruges til at gemme og tilgå data eksternt via internettet i stedet for lokalt.
Det gør det muligt for systemer at gemme data sikkert, dele dem globalt og skalere uden fysisk hardware.
Hvorfor
Centraliseret datalagring i datacentre
Skalering efter behov (STaaS - storage as a service)
Global adgang og redundans
Bruges i cloud-tjenester, backup og microservices
Typer af cloud storage
Der findes tre hovedformer for cloud storage. De adskiller sig i hvordan data struktureres, gemmes og tilgås.
File storage
Data gemmes som filer i et hierarki af mapper og undermapper (som på en computer)
Bruges i netværkslagring som NAS (Network Attached Storage) og i systemer, der arbejder med mange små filer
Nemt at forstå og bruge - men skalerer dårligt ved store datamængder
Godt valg til kontormiljø hvor brugere arbejder med dokumenter og fildeling
Block storage
Data opdeles i mindre blokke, som gemmes direkte på diskniveau
Hver blok har et unikt ID og kan tilgås hurtigt og effektivt
Bruges i databaser og virtuelle maskiner hvor hastighed og præcision er vigtig
Bedst til struktureret data (tabeller med rækker og kolonner)
Object Storage
Den tredje type, gemmer data som objekter i stedet for filer eller blokke.
Ingen hierarkisk struktur - alt ligger fladt og kan skalere til millioner af objekter
Objekt = data + metadata + unikt ID
Organiseres i buckets eller containers - skalerer til meget store datamængder ved korrekt nøgledesign og infrastruktur
Tilgås via HTTP REST API'er (PUT, GET, DELETE)
Høj tilgængelighed og global adgang (gennem clustering/replikering)
Understøtter metadata-søgning, versioning og skalerbarhed
Bedst til ustruktureret data, som billeder, videoer, sensordata, logs og dokumenter
Bruges i cloud-tjenester som AWS S3, Azure Blob Storage og MinIO
Kernebegreber i Object Storage
For at forstå hvordan systemer som MinIO og Azure Blob fungerer, er det vigtigt at kende de grundlæggende begreber i object storage.
Bucket
Logisk container der organiserer objekter (som en topmappe)
Har et unikt navn, fordi det indgår i objektets URL
Bruges til at adskille data og styre adgang via policies og tokens
Object
Den enkelte fil eller dataenhed der gemmes i en bucket
Består af
Data - selve filens indhold (f.eks billedets pixeldata)
Metadata - oplysninger om objektet (f.eks filtype, størrelse, ejer, adgangsregler)
Object key - en unik sti, der identificerer objektet i bucket'en
Object key
Bruges som "filnavn" i systemet (f.eks images/2025/photo.jpg)
Indeholder evt. stier, men mapperne eksisterer ikke fysisk - de er kun en del af nøglen
Policies og tokens
Policies definerer hvem der må tilgå hvilke objekter (læse, skrive, slette)
Tokens giver midlertidig adgang uden at udlevere permanente nøgler
Bruges til sikker kontrol af upload, download og deling
Andet
Versioning og (valgfrit) object lock / immutability kan beskytte mod utilsigtede sletninger og ransomware
Adgangskontrol i Object Storage
Adgang til objekter styres gennem midlertidige og signerede links, så klienter kan hente eller uploade filer uden direkte adgang til login-oplysninger eller nøgler.
Presigned URLs (S3 / MinIO)
Midlertidige links, der giver adgang til et specifikt objekt
Signeres af serveren med brugerens adgangsnøgler
Kan give rettighed til bestemte handlinger (GET, PUT, DELETE)
Har en udløbstid, hvorefter linket ikke længere virker
Bruges til direkte upload eller download mellem klient og storage
SAS Tokens (Azure Blob)
Microsofts variant af presigned URLs
Giver adgang til objekter i en afgrænset periode
Kan styre handlinger, IP-adresser og udløbstid mere detaljeret
Bruges typisk af applikationer eller services, ikke direkte af brugeren
Formål
Sikrer midlertidig, kontrolleret adgang til data
Eliminerer behovet for at udlevere permanente credentials
Muliggør direkte kommunikation mellem klient og storage, hvilket aflaster backend
MinIO
MinIO er en open-source løsning til object storage, der følger S3-standarden (AWS i 2006).
Giver mulighed for at arbejde med cloud-storage lokalt med samme API-principper som i store cloudmiljøer
Kan køre lokalt - server eller i containere (Docker, Kubernetes)
Bruger buckets til at organisere data / objekter
Understøtter presigned URLs - adgang gennem links til up- eller download af objekt
Fungerer med S3-SDK'er og værktøjer som AWS CLI og Postman (samt egen mc CLI)
Efterligner cloud-opførsel lokalt og kan nemt integreres med S3-kompatible platforme
Ideel til udvikling og test uden cloud-omkostninger
Azure Blob
Azure Blob Storage er Microsofts cloud-baserede version af object storage.
Bruges til at gemme store mængder ustruktureret data direkte i skyen.
Azure struktur: Storage Account → Container → Blob (objekt)
Bruger containers til at organisere data / objekter (containers = buckets i MinIO)
Adgang via SAS-tokens - fungerer på samme måde, men kan give mere detaljeret styring (tidsrum, handling, IP-adgang osv.)
Fuldt administreret af Microsoft - høj tilgængelighed, sikkerhed og global replikering
Integration med øvrige Azure-tjenester
Velegnet til produktion og systemer der skal skalere automatisk
Sammenligning
Begge løsninger bygger på de samme principper, men adskiller sig i opsætning, pris og anvendelse.
MinIO | Azure Blob Storage | |
Opsætning | Hurtig lokal installation, kan køre i Docker eller server | Kræver Azure-konto og opsætning via Azure-portalen |
Pris | Gratis (open source) | Betaling efter forbrug (For mig: credits på studiekonto) |
Struktur | Buckets og objekter | Storage account → Container→ Blob |
Adgang | Pre-signed URLs | SAS-Tokens |
Placering | Lokalt eller selvhosted | I Microsofts datacentre |
Administration | Brugeren styrer selv installation, backup og skalerbarhed | Microsoft håndterer al drift, sikkerhed og replikering |
Ydeevne | Hurtig lokalt, afhænger af hardware | Høj oppetid og global skalerbarhed. Ydeevne afhænger af valgt storage-tier |
Integration | Kompatibel med AWS S3, Postman, CLI, SDK’er | Integreret med Azure-tjenester som Functions og App Service |
Brugsscenarier | Udvikling, test, lokale proof-of-concepts | Produktion, enterprise og global skalering |
Opsummering
MinIO giver en realistisk cloud-oplevelse lokalt - ideel til udvikling, test og læring
Azure Blob bruges i produktion - skalerbar, sikker og integreret i Microsofts økosystem
Begge kan bruges i samme arkitektur - MinIO lokalt, Azure i cloud, hvor arkitekturen gør det nemt at udskifte eller tilføje nye storage-adapters (f.eks. fra MinIO til Azure Blob)
Refleksion
Jeg bruger MinIO, fordi det er gratis, hurtigt at sætte op og kan køre lokalt, hvilket gør det velegnet til udvikling og test.
S3-kompatibiliteten gør det muligt at arbejde med de samme koncepter som i skyen, såsom buckets, objekter, metadata og presigned URLs, men uden afhængighed af en cloud-udbyder.
MinIO kan migrere/replikere data til AWS S3, fordi de deler samme API.
Det betyder, at en lokal løsning kan udveksle data eller udvides til AWS uden ændringer i applikationen.
Løsningen kan også skaleres til Azure Blob Storage, da begge bygger på de samme principper for object storage. Her udskiftes kun adapteren, mens domænelaget forbliver det samme.
Denne fleksibilitet understøttes af hexagonal arkitektur, hvor logik og infrastruktur er adskilt, så storage-delen kan udskiftes uden at påvirke forretningslogikken.
Videre plan
Næste skridt bliver at afprøve integrationen mellem MinIO og vores service, og på sigt undersøge, hvordan samme interface kan bruges med Azure Blob gennem en adapter.
Bygge og teste integration mellem MinIO og applikationen
Byg adapter til Azure Blob via samme interface
Undersøg forskelle i adgangskontrol (presigned URLs vs SAS-tokens)
Ressourcer
IBM
Artikel: What is data storage?
Artikel: What is object storage?
Artikel: Object versus file versus block storage: What’s the difference?
AWS
Artikel: Download and upload objects with presigned URLs
MinIO
Dokumentation: MinIO AIStor Documentation
Kommentar: Dok for community ed. er det samme. Ældre dok kan findes her:
Microsoft Learn
Artikel: Introduction to Azure Blob Storage
Artikel: Grant limited access to Azure Storage resources using shared access signatures (SAS)
Google Cloud
Artikel: What is Cloud Storage?
