top of page

Uge 41: Cloud Storage

  • Writer: Kenneth H Sørensen
    Kenneth H Sørensen
  • Oct 11
  • 5 min read

ree


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?



bottom of page