logo

Netmaking

22 71 95 97

NM Cloud: Sikker og stabil hosting med Amazon Web Services

Med vår lange erfaring som både tilbyder og forbruker av hostingtjenester har vi klare meninger om hva som utgjør et godt hostingmiljø; det må samsvare med både utviklernes og kundenes forventninger til sikkerhet og stabilitet. Her får du innsikt i hvordan vår skytjeneste NM Cloud er satt sammen.

Amazon Web Services
Overordnet består NM Cloud-miljøet av diverse komponenter fra Amazon Web Services (AWS). Miljøet er bygget på prinsippet om å tilby et sikkert, stabilt, og redundant hostingmiljø uten å gå på akkord med fleksibilitet og smidig utvikling.

AWS er i skrivende stund verdens desidert største plattform for skytjenester. AWS tilbyr et stort utvalg produkter ment til å bygge trygge hostingmiljøer til alle typer applikasjoner og tjenester. Produktene legger også til rette for skalering i takt med økende ressursbehov.

Maksimal ytelse og oppetid
NM Cloud er miljø med High availability. High availability innebærer å unngå såkalt “Single point failure” der problemer i én enkelt komponent kan medføre nedetid for hele applikasjonen. I motsetning til tradisjonelle hostingmiljøer med flere kritiske komponenter på én enkelt server, er NM Cloud en dynamisk mengde isolerte komponenter med skalérbarhet i hvert ledd. Resultatet er et miljø som sørger for både maksimal ytelse og oppetid, til og med i situasjoner med sviktende maskinvare.

Hvordan er Amazon Web Services satt sammen?
Skissen nedenfor gir et visuelt inntrykk av hvordan komponentene i miljøet er satt sammen. Hver enkelt komponent er beskrevet nærmere under.

 

Amazon reference architecture

(Kilde: aws.amazon.com)

1. Cloud-maler (CloudFormation)

Oppsett og konfigurasjon av hver komponent styres med ved hjelp av maler. Hver mal beskriver komponentens unike behov og hvordan den skalerer og kommuniserer med andre komponenter.

Malene - i JSON-format - dekker hele infrastrukturen og inngår som en del av den øvrige kodebasen. På den måten kan miljøet enkelt repliseres i flere miljøer, eller på en annen AWS-konto, for eksempel av en tredjepart.

2. Virtuelt privat nettverk (Virtual Private Cloud)

VPC omfavner og isolerer samtlige av miljøets komponenter i flere private nettverk (dvs. ikke tilgjengelig fra internett). Nettverkene inkluderer oppsett av egne IP adresse-serier, subnets, og gateways (NAT) på tvers av Amazons tilgjengelige datasentre for å sikre oppetid selv om et av datasentrene mot formodning skulle oppleve problemer.

3. Lastbalanserer (Elastic Load Balancer)

Lastbalansereren er miljøets eneste offentlige knutepunkt som distribuerer innkommende trafikk videre til relevante tjenester, vanligvis til en av miljøets tilgjengelige webservere. Det betyr at offentlig trafikk mot miljøet må gå veien om lastbalansereren.

Lastbalansereren er iboende skalérbar (“elastic”) basert på mengde trafikk som mottas, og fungerer som første skanse mot visse typer angrep (bl.a. DDoS).

I tillegg kan lastbalansereren fungere som et sentralisert oppbevaringssted for SSL-sertifikater som sørger for kryptering av trafikken.

4. Webservere (EC2)

Hovedoppgaven til en webserver er å levere selve applikasjonen ved bruk av ren maskinkraft (CPU). Ved å nyttegjøre T2-generasjonen får man moderne og effektive webservere som er skreddersydd for å øke raskt i ytelse når applikasjonen trenger det; for eksempel ved økt trafikk eller ved spesielt ressurskrevende operasjoner.

For å sikre god ytelse og stabilitet i perioder med betydelige ressursbehov vil autoskalering sørge for å iverksette nye webservere som vil dele på trafikken som distribueres av lastbalansereren. På den måten får man såkalt “horisontal skalering” som drar nytte av hver ressurs på en mest mulig effektiv måte.

Autoskaleringen benyttes også dersom en av webserverne får problemer (f.eks. en feil på harddisken) eller må oppgraderes. I disse tilfellene blir den aktuelle webserveren erstattet og tatt ut av rotasjon, uten at det påvirker oppetid eller ytelse.

I perioder med lav trafikk vil autoskaleringen på samme måte sørge for å nedskalere mengden webservere til et forhåndsdefinert minimumsantall.

5. Datalagring (S3)

Fordi miljøet nyttegjør flere webservere må dataene som lagres av selve applikasjonen (f.eks. opplasting av et bilde til en CMS-artikkel) oppbevares på ett sentralisert sted.

Datalagringsplattformen S3 tilbyr ubegrenset kapasitet, et enkelt webgrensesnitt, SDKer til de fleste programmeringsspråk, og ikke minst trygge og raske overføringer fra applikasjon til sluttbruker.

6. Databaser (RDS)

De fleste applikasjoner bygget på toppen av en relasjonsdatabasestruktur. Med “Amazon Relational Database Service” (RDS) får man tildelt en sentralt administrert tjeneste som driftes av AWS. Tjenesten er skreddersydd spesifikke databasebehov, som for eksempel høy I/O-kapasitet.

Med RDS overlater man den normalt tidkrevende oppgaven som forbindes med å administrere en database over til den sentrale administrasjonen hos AWS, og frigjør dermed både tid og ressurser til å fokusere på andre, mer sentrale oppgaver. Administrasjonen inkluderer blant annet:

  • Enkelt oppsett og bruk
  • Monitorering og statistikk
  • Påføring av sikkerhetsoppdateringer
  • Replisering til en sekundærinstans
  • “Point in time” backups og snapshots
  • Kryptert nettverksforbindelse

7. Content Delivery Network (CloudFront)

Et CDN er et mellomlager for å akselerere distribusjonen av innhold via et globalt nettverk av proxy servere. CloudFront (Amazons CDN) nyttegjør AWS’ globale tilstedeværelse til å mellomlagre tekst, grafikk, og script m.m. for raskest mulig distribusjon til sluttbrukeren.

Dersom man har en ressursintensiv applikasjon kan et CDN være en svært effektiv tjeneste for å øke hastigheten betydelig uten å bruke midler på mer tidkrevende optimaliseringer.

Konklusjon

Miljøet beskrevet i dette innlegget er neste generasjon av det som tradisjonelt har vært NM Cloud. Det er også verdt å nevne at miljløet også består av andre tilstøtende og spennende teknologier som blant annet Docker. Dersom du har spørsmål eller er interessert i en nærmere prat om hvorvidt NM Cloud er en god match for din applikasjon, må du gjerne ta kontakt med undertegnede.

Fredrik Tidemann

Fredrik er senior webutvikler hos Netmaking og har alltid et smil på lur. I tillegg til et brennende engasjement for PHP og Symfony, liker Fredrik å reise, trene, tilberede gode kaffe og ta imot pull requests på hobbyprosjektet CodeKeepr.