Oblaku urođene aplikacije

Peter Deutsch: Zablude distribuiranih sustava

  • mreža je pouzdana
  • kašnjenje je 0
  • postoji beskonačna širina pojasa
  • mreža je sigurna
  • topologija se ne mijenja
  • postoji jedan administrator
  • cijena transporta je 0
  • mreža je homogena

CAP teorem

  • konzistentnost (consistency, C) -> SQL baze
  • raspoloživost (availability, A) -> većina NoSQL baza
  • otpornost na particioniranje mreže (partitioning, P)

Raspoloživost i SLA

Temelji

  • kontejneri: Docker, ali i LXC, Jails, Zones
    • copy-on-write datotečni sustav, slojevi i dijeljenje podataka
    • brže pokretanje od virtualnih strojeva
  • orkestracija kontejnera

Orkestracija kontejnera

  • predviđanje potrebe za resursima i postavljanje kontejnera na čvorove klastera
    • upravljanje resursima kontejnera, što znači postavljanje kontejnera na čvorove koji imaju dovoljno resursa ili premještanje kontejnera na druge čvorove klastera ako resursa nema dovoljno
  • povezivanje kontejnera na mrežu
    • upravljanje internim umrežavanjem kontejnera
  • praćenje zdravlja kontejnera i čvorova klastera za ponovno pokretanje u slučaju kvarova na razini kontejnera ili čvora
  • balansiranje opterećenja između kontejnera i skaliranje kontejnera unutar čvora i unutar klastera po potrebi

Primjeri: Kubernetes, Portainer, Rancher

Kubernetes - komponente

Komponente

Upravljački:

  • etcd
  • kube-apiserver
  • kube-scheduler
  • kube-controller-manager

Podatkovni:

  • kubelet
  • kube-proxy

Kubernetes - terminologija

Bezposlužiteljsko računarstvo

Funkcije nisu kontejneri

  • jedna operacija umjesto čitave usluge
  • ne brinu o zavisnostima
  • odgovaraju na jednu vrstu događaja, dok kontejneri mogu imati proizvoljan REST/gRPC/... API

Mikrousluge

Načela oblaku urođenih aplikacija

Verzioniranje aplikacijskog programskog sučelja

  • REST ne zahtijeva verzioniranje, ali u praksi se često koristi
    • /api/v1/users, api-v1.example.com/users, Accept: application/vnd.example.users.v1+json
    • moguće granularno verzioniranje, npr. /api/v2/users ne zahtijeva da v2 postoji i za druge resurse
  • kompatibilnost unaprijed i unatrag
    • nova polja su opcionalna
    • zadržavanje postojećih polja
    • zadržavanje imena polja kroz verzije
  • semantičko verzioniranje

Komunikacija mikrousluga

API gateway

Autentifikacija i autorizacija

Za one koji žele znati više