Why does reach use Amazon CloudFront?

Optimer Mobilindhold med Amazon CloudFront

15/07/2022

Rating: 4.73 (6924 votes)

I en verden, hvor mobiltelefoner står for en overvældende del af internettrafikken – cirka 70% – er det afgørende at levere digitalt indhold hurtigt og effektivt. Brugerne forventer øjeblikkelig adgang til applikationer, videoer og websteder, uanset hvor de befinder sig, eller hvilken type netværksforbindelse de har. Fra Wi-Fi til 5G kan forbindelseshastigheder variere drastisk, hvilket skaber en udfordring for indholdsudbydere. Traditionelle optimeringsteknikker, der udelukkende er baseret på enhedsegenskaber som skærmopløsning, formår ikke at adressere den skiftende netværkskvalitet. Her kommer Content Delivery Networks (CDN'er) ind i billedet, og Amazon CloudFront står som en førende løsning.

How do I get Started with Amazon CloudFront?
To help you get started, read the Amazon CloudFront documentation. Cooperation between client applications and the infrastructure is necessary to achieve the desired results. Therefore in this post we also provide code for a simple client app. In order to test the example, an AWS account must be available.
Indholdsfortegnelse

Hvad er Amazon CloudFront?

Amazon CloudFront er en global Content Delivery Network (CDN) service, der er designet til sikkert at levere data, videoer, applikationer og API'er til dine globale kunder med lav latenstid og høj overførselshastighed. Ved at anvende et netværk af kantlokationer (edge locations) rundt om i verden, cachelagrer CloudFront dit indhold tættere på dine slutbrugere. Dette minimerer den fysiske afstand, data skal rejse, hvilket resulterer i hurtigere indlæsningstider og en markant forbedret mobiloplevelse.

Forestil dig, at en bruger i Danmark ønsker at tilgå en video hostet på en server i USA. Uden en CDN ville anmodningen skulle rejse hele vejen til USA og tilbage. Med CloudFront ville videoen sandsynligvis være cachelagret på en kantlokation i Europa, måske endda i Danmark, hvilket reducerer svartiden fra hundredvis af millisekunder til blot få. Dette er særligt kritisk for mobile enheder, der ofte oplever varierende eller begrænsede netværksforbindelser.

Optimer Indhold til Mobilforbindelser med CloudFront Funktioner

En af de mest innovative måder at udnytte CloudFront på er at optimere indholdsleveringen baseret på en enheds øjeblikkelige netværksforbindelse. Mobilnetværk varierer fra 2G til 5G, og brugere kan være på restriktive dataabonnementer eller have lav båndbredde. Det er derfor ønskeligt at levere optimeret indhold, der matcher forbindelsestypen, snarere end at sende store filer, der belaster både brugerens dataforbrug og netværket.

CloudFront-infrastrukturen har ikke på forhånd kendskab til den lokale netværksforbindelse for en given klient. For at tjene forskellige aktiver på dette grundlag kræver vi en metode, hvor klienten kan signalere disse oplysninger til infrastrukturen. En foretrukken metode er at lade klientapplikationen tilføje en simpel HTTP-anmodningsheader. En logisk valgmulighed er Save-Data-headeren, som mobiloperativsystemer ofte bruger til at indikere et ønske om at spare data.

Why should you use CloudFront vs Amazon S3?
By using CloudFront, you can take advantage of the AWS backbone network and CloudFront edge servers to give your viewers a fast, safe, and reliable experience when they visit your website. A simple approach for storing and delivering static content is to use an Amazon S3 bucket.

Arkitekturen fungerer således: Mobilappen beslutter, om den skal sende Save-Data: on-headeren, når mobiltelefonens OS foreslår det (f.eks. når lav data-tilstand er aktiveret). Når CloudFront modtager anmodningen, matcher den anmodnings-URL'en med tilsvarende sti-mønstre. En CloudFront Funktion, der er konfigureret til at køre ved Viewer Request-begivenheden, vil derefter ændre og videresende anmodningen for at hente den korrekte variant af indholdet baseret på tilstedeværelsen eller fraværet af headeren. Dette muliggør intelligent indholdsoptimering uden at ændre applikationslogikken.

Klientapplikationer og Netværksdetektering

For at implementere denne løsning skal klientapplikationen være i stand til at detektere netværksforholdene og signalere dem til CloudFront. Her er eksempler på, hvordan dette kan gøres på forskellige platforme:

iOS Applikationer

En simpel iOS-app kan bruge Apple Network-frameworket, specifikt nw_path_monitor_t-observatøren, til at overvåge den netværkssti, der er tilgængelig for enheden. Når en telefon eller tablet skifter fra Wi-Fi til mobildata eller omvendt, modtager appen callbacks, der indikerer, at netværksstien er blevet opdateret. I handler-koden kan man afhøre stiens kapaciteter ved hjælp af kaldene nw_path_is_expensive() (fortæller om stien bruger en dyr grænseflade som mobil eller personlig hotspot) og nw_path_is_constrained() (kontrollerer om stien bruger en netværksgrænseflade, der er i lav data-tilstand). Hvis pathConstrained er sand, konfigureres en NSURLSession-objekt med den ekstra anmodningsheader Save-Data: on.

Android Applikationer

For Android-native applikationer giver ConnectivityManager-klassen lignende funktionalitet, der gør det muligt for apps at forespørge en enheds lokale forbindelse. Tilsvarende iOS's lav data-tilstand på Android er Data Saver-tilstand. Apps kan bruge ConnectivityManager API'en til at teste, om Data Saver er aktiveret, og overvåge ændringer i dens status.

Webbaserede Applikationer

For webbaserede applikationer, der kører i en webbrowser, giver Network Information Web API lignende funktionalitet, især ECT-headeren (effective connection type). Det skal dog bemærkes, at denne API på nuværende tidspunkt er eksperimentel teknologi og ikke universelt understøttet af alle browsere.

What is CloudFront CDN?

Opsætning af CloudFront Infrastruktur

For at understøtte denne dynamiske indholdslevering skal CloudFront og Amazon S3 konfigureres korrekt. Processen involverer typisk:

  1. Oprettelse af S3-Bucket: En S3-bucket oprettes til at hoste indholdet, f.eks. billeder. For at levere optimerede versioner, kan man oprette en undermappe (f.eks. /save) i bucket'en, hvor de optimerede versioner af de samme filer opbevares. F.eks. example.jpg i rodmappen og en optimeret example.jpg i /save-mappen.
  2. Oprettelse af CloudFront Distribution: En CloudFront distribution oprettes med S3-bucket'en som oprindelse. Det er vigtigt at konfigurere Origin Access Control (OAC) for at sikre, at CloudFront er den eneste måde at få adgang til indholdet i S3-bucket'en på, og derefter opdatere S3-bucket-politikken i overensstemmelse hermed.
  3. Upload af CloudFront Funktion: En CloudFront Funktion (en serverløs funktion, der kører tæt på brugeren på CloudFronts kantlokationer) uploades og associeres med distributionen. Funktionen inspicerer indgående anmodninger. Hvis Save-Data: on-headeren er til stede, ændrer funktionen URI'en for anmodningen, så den peger på den optimerede version i /save-mappen.

Funktionskoden kunne se sådan ud:

function handler(event) { var request = event.request; var headers = request.headers; if (headers['save-data'] && headers['save-data']['value'] === 'on') { var url = request['uri']; var newurl = '/save' + url; request.uri = newurl; } return request; }

Denne funktion dirigerer anmodningen til /save-mappen, hvis Save-Data-headeren er til stede. Dette kan begrænses til specifikke URI-sti-mønstre, hvilket er nyttigt, hvis kun visse medier er optimeret.

Fordele ved at Bruge CloudFront

Ud over dynamisk indholdsoptimering tilbyder CloudFront en række andre fordele:

Accelereret Levering af Statisk Indhold

CloudFront fremskynder leveringen af statisk indhold som billeder, CSS-filer og JavaScript til brugere over hele verden. Ved at udnytte AWS's backbone-netværk og CloudFronts kantservere får dine brugere en hurtig, sikker og pålidelig oplevelse. Brugen af S3 sammen med CloudFront giver fordele som nem adgangsbegrænsning til dit S3-indhold via Origin Access Control.

Video On Demand og Live Streaming

CloudFront understøtter streaming af medier til globale brugere, både forudindspillede filer og live-begivenheder. For Video On Demand (VOD) kan CloudFront streame i almindelige formater som MPEG DASH, Apple HLS, Microsoft Smooth Streaming og CMAF til enhver enhed. For live streaming kan mediefregmenter cachelagres ved kanten, hvilket reducerer belastningen på din oprindelsesserver.

Forbedret API-Sikkerhed og Hastighed

CloudFront kan accelerere API-kald globalt, hvilket er afgørende for responsivitet og pålidelighed, især for mobile enheder og IoT-applikationer. Slack, for eksempel, forbedrede sikkerheden for deres API'er og opnåede svartider op til 300 ms hurtigere ved at bruge CloudFront. Den gennemsnitlige latenstid for Slack.com globalt faldt fra 90 ms til 15 ms, hvilket viser CloudFronts evne til at fremskynde API'er og give fleksibilitet til at anvende forskellige sikkerhedsforanstaltninger ved kanten.

Tilpasning ved "The Edge" med Lambda@Edge

Kørsel af serverløs kode ved kanten (med Lambda@Edge) åbner op for en række muligheder for at tilpasse indholdet og oplevelsen for brugere med reduceret latenstid. Dette kan inkludere returnering af brugerdefinerede fejlmeddelelser, når din oprindelsesserver er nede, eller brug af funktioner til at godkende brugere og kontrollere adgang til dit indhold, før CloudFront videresender en anmodning til din oprindelse. Det giver også mulighed for at servere privat indhold fra din egen brugerdefinerede oprindelse, ud over at bruge signerede URL'er eller signerede cookies.

What is CloudFront CDN?

CloudFront vs. Amazon S3: En Synergi

Det er vigtigt at forstå, at CloudFront og Amazon S3 ikke er konkurrenter, men snarere komplementære tjenester. Amazon S3 er en objektlagringstjeneste, der giver skalerbar, sikker og holdbar lagring af data. CloudFront er en CDN-tjeneste, der distribuerer dette indhold globalt. Du bruger S3 til at gemme dit indhold og CloudFront til at levere det hurtigt og effektivt til dine brugere.

Fordele ved at bruge S3 sammen med CloudFront:

  • Sikkerhed: Med Origin Access Control (OAC) kan du begrænse direkte adgang til din S3-bucket, så kun CloudFront kan hente indhold derfra.
  • Ydeevne: CloudFront cacher indhold fra S3 på sine kantlokationer, hvilket reducerer latenstiden for slutbrugere.
  • Skalerbarhed: S3 kan håndtere enorme mængder data, og CloudFront kan skalere til at levere dette indhold til millioner af samtidige brugere.
  • Omkostningseffektivitet: Ved at cachelagre indhold reducerer CloudFront behovet for at hente data direkte fra S3 for hver anmodning, hvilket kan mindske dataoverførselsomkostningerne fra S3.

Casestudie: Digital De Agostini

Digital De Agostini, en del af det italienske holdingselskab De Agostini Editore, skaber og driver tematiske tv-kanaler, streaming og Video On Demand (VOD) med fokus på originalt IP-indhold. De søgte at optimere omkostninger, reducere time-to-market, begrænse adgangen til indhold til specifikke geografier og muliggøre live streaming for tv-kanaler. Ved at bruge Amazon S3 til at hoste deres videoindhold og Amazon CloudFront til at levere det til et voksende publikum, opnåede de betydelige resultater.

Denne arkitektur tillod Digital De Agostini hurtigt at iterere, da de kunne gemme så meget videoindhold som nødvendigt i Amazon S3 uden at bekymre sig om serverprovisionering. Adgang til API'er og et brugervenligt kontrolpanel betød, at virksomheden kunne være mere agil, når de tilbød nyt indhold. CloudFront hjalp dem med at levere deres indhold på en skalerbar og sikker måde. De kunne levere streams til store publikummer, samtidig med at de geografisk blokerede brugere fra uønskede lande. CloudFront håndterede også leveringsskalaen og sikrede, at S3-buckets ikke blev overbelastet med anmodninger, hvilket resulterede i en oppetid på næsten 100 procent. Alt dette blev opnået, mens IT- og vedligeholdelsesomkostningerne blev reduceret med 60 procent, og indholdet blev leveret hurtigere til seerne.

Ofte Stillede Spørgsmål (FAQ)

Hvad er en CDN, og hvorfor er CloudFront relevant for mobilbrugere?

En CDN (Content Delivery Network) er et netværk af servere placeret strategisk rundt om i verden, der cacher og leverer indhold tættere på slutbrugeren. CloudFront er relevant for mobilbrugere, fordi det sikrer hurtig og pålidelig levering af indhold, selv på varierende netværksforbindelser, hvilket forbedrer mobilapplikationers og -websiders ydeevne og brugeroplevelse markant.

Does Amazon CloudFront support dynamic content profiles?
Amazon Cloudfront's support for dynamic content profiles and transaction acceleration optimizations make applications like these perform well under high demand.

Kan Amazon CloudFront levere dynamisk indhold og API-kald?

Ja, absolut. Ud over statisk indhold kan CloudFront accelerere leveringen af dynamisk indhold og API-kald. Ved at cachelagre svar, der kan cacheres, og rute anmodninger over AWS's optimerede backbone-netværk, reducerer CloudFront latenstiden for API-interaktioner, hvilket er afgørende for realtidsapplikationer og -tjenester som stemmeassistenter og smarte hjemmeenheder. Slack er et fremragende eksempel på en virksomhed, der har opnået betydelige hastighedsforbedringer for deres API'er med CloudFront.

Hvordan hjælper CloudFront med at reducere omkostninger?

CloudFront reducerer omkostninger på flere måder. For det første mindsker det udgående dataoverførselsomkostninger fra din oprindelsesserver (f.eks. S3) ved at cachelagre indhold ved kanten, hvilket betyder færre anmodninger til oprindelsen. For det andet tilbyder AWS en prisstruktur, der ofte er mere omkostningseffektiv end at opbygge og vedligeholde din egen globale infrastruktur. Desuden kan den forbedrede ydeevne og brugeroplevelse føre til højere engagement og potentielt højere konverteringsrater, hvilket indirekte bidrager til forretningsmæssig værdi.

Er CloudFront kun for store virksomheder?

Nej, CloudFront er designet til at være skalerbar og omkostningseffektiv for virksomheder i alle størrelser, fra små startups til store koncerner. Du betaler kun for den data, du overfører, og de anmodninger, der behandles, hvilket gør det tilgængeligt for et bredt spektrum af brugere med forskellige behov og budgetter. Den nemme opsætning og integration med andre AWS-tjenester gør det også til et attraktivt valg for udviklere og små teams.

Konklusion

Amazon CloudFront er mere end blot en CDN; det er en kraftfuld service, der giver dig mulighed for at levere indhold med enestående hastighed, sikkerhed og fleksibilitet til dine globale brugere. Ved at centralisere beslutninger om, hvordan netværksforbindelse skal påvirke indholdet, der leveres til applikationer, og afkoble disse beslutninger fra applikationslogikken, forenkler CloudFront processen med at optimere indhold under varierende forhold. Slutbrugerne drager fordel af en mere responsiv brugeroplevelse, der stadig stemmer overens med deres præferencer, mens mobilnetværksoperatører drager fordel af den reducerede belastning på ældre netværk. Uanset om du leverer statiske websteder, videoindhold, API'er eller ønsker at tilpasse oplevelsen ved kanten, er CloudFront et uundværligt værktøj i det moderne digitale landskab.

Hvis du vil læse andre artikler, der ligner Optimer Mobilindhold med Amazon CloudFront, kan du besøge kategorien Teknologi.

Go up