{"id":84876,"date":"2020-06-11T13:43:18","date_gmt":"2020-06-11T11:43:18","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/uskoryaem-internet-zaprosy-i-spim-spokojno"},"modified":"2020-06-11T13:43:18","modified_gmt":"2020-06-11T11:43:18","slug":"uskoryaem-internet-zaprosy-i-spim-spokojno","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/uskoryaem-internet-zaprosy-i-spim-spokojno","title":{"rendered":"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/07e2e32d406b8b5d6d6cb3f627a31c3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNetflix \u2014 marknadsledare inom internet-TV \u2014 \u00e4r f\u00f6retaget som skapade och aktivt utvecklar detta segment. Netflix \u00e4r inte bara k\u00e4nt f\u00f6r sin omfattande katalog av filmer och serier, tillg\u00e4ngliga fr\u00e5n n\u00e4stan vilken plats som helst p\u00e5 planeten och p\u00e5 alla enheter med sk\u00e4rm, utan ocks\u00e5 f\u00f6r sin p\u00e5litliga infrastruktur och unika ingenj\u00f6rskultur. <\/p>\n<p>Ett tydligt exempel p\u00e5 Netflix strategi f\u00f6r att utveckla och underh\u00e5lla komplexa system presenterades p\u00e5 DevOops 2019. <noindex><a rel=\"nofollow\" href=\"https:\/\/sfedov.com\">Sergey Fedorov<\/a><\/noindex> \u2014 chef f\u00f6r utveckling p\u00e5 Netflix. Han \u00e4r alumn fr\u00e5n fakulteten f\u00f6r Datavetenskap p\u00e5 NNGU, och Sergey \u00e4r en av de f\u00f6rsta ingenj\u00f6rerna i Open Connect \u2014 CDN-teamet p\u00e5 Netflix. Han har byggt \u00f6vervaknings- och analyssystem f\u00f6r videodata, lanserat den popul\u00e4ra tj\u00e4nsten FAST.com f\u00f6r att m\u00e4ta internethastighet och har de senaste \u00e5ren arbetat med att optimera internetf\u00f6rfr\u00e5gningar s\u00e5 att Netflix-appen fungerar s\u00e5 snabbt som m\u00f6jligt f\u00f6r anv\u00e4ndarna.<\/p>\n<p>F\u00f6redraget fick utm\u00e4rkta recensioner fr\u00e5n konferensens deltagare, och vi har f\u00f6rberett en textversion f\u00f6r er.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"n7Te9WIz1ho\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/n7Te9WIz1ho\/hqdefault.jpg\" alt=\"Spela video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h2>I f\u00f6redraget ber\u00e4ttade Sergey detaljerat<\/h2>\n<p><\/p>\n<ul>\n<li>om vad som p\u00e5verkar f\u00f6rdr\u00f6jningen av internetf\u00f6rfr\u00e5gningar mellan klienten och servern;<\/li>\n<li>hur man minskar dessa f\u00f6rdr\u00f6jningar;<\/li>\n<li>hur man designar, uppr\u00e4tth\u00e5ller och \u00f6vervakar felresistenta system;<\/li>\n<li>hur man uppn\u00e5r resultat p\u00e5 kort tid med minimal risk f\u00f6r verksamheten;<\/li>\n<li>hur man analyserar resultat och l\u00e4r sig av misstagen.<\/li>\n<\/ul>\n<p>\nSvar p\u00e5 dessa fr\u00e5gor \u00e4r viktiga inte bara f\u00f6r dem som arbetar i stora f\u00f6retag. <\/p>\n<p>De presenterade principerna och teknikerna b\u00f6r varje person som utvecklar och underh\u00e5ller internetprodukter k\u00e4nna till och praktisera.<\/p>\n<p><b>Vidare \u2014 ber\u00e4ttelsen fr\u00e5n talarens perspektiv.<\/b><\/p>\n<h2>Vikten av internethastighet<\/h2>\n<p>\nHastigheten p\u00e5 internetf\u00f6rfr\u00e5gningar \u00e4r direkt kopplad till aff\u00e4rer. L\u00e5t oss ta shoppingomr\u00e5det som exempel: f\u00f6retaget Amazon sa 2009 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gigaspaces.com\/blog\/amazon-found-every-100ms-of-latency-cost-them-1-in-sales\/\">att en f\u00f6rdr\u00f6jning p\u00e5 100 ms leder till en f\u00f6rs\u00e4ljningsf\u00f6rlust p\u00e5 1%.<\/a><\/noindex>Antalet mobila enheter \u00f6kar, liksom antalet mobilsidor och appar. Om din sida laddar l\u00e4ngre \u00e4n 3 sekunder, f\u00f6rlorar du cirka h\u00e4lften av anv\u00e4ndarna.<\/p>\n<p>Sedan <noindex><a rel=\"nofollow\" href=\"https:\/\/webmasters.googleblog.com\/2018\/01\/using-page-speed-in-mobile-search.html\">juli 2018<\/a><\/noindex> s\u00e5 tar Google h\u00e4nsyn till hur snabbt din sida laddar i s\u00f6kresultaten: ju snabbare sidan \u00e4r, desto h\u00f6gre placering f\u00e5r den i Google.<\/p>\n<p>Anslutningshastighet \u00e4r ocks\u00e5 viktig inom finansiella institutioner d\u00e4r f\u00f6rdr\u00f6jning \u00e4r kritisk. \u00c5r 2015 avslutade f\u00f6retaget Hibernia Networks <noindex><a rel=\"nofollow\" href=\"https:\/\/www.submarinenetworks.com\/en\/systems\/trans-atlantic\/project-express\/hibernia-express-connects-new-york-to-london-in-under-58-95ms\">avslutade<\/a><\/noindex> en kabeldragning mellan New York och London f\u00f6r 400 miljoner dollar f\u00f6r att minska f\u00f6rdr\u00f6jningen mellan st\u00e4derna med 6 ms. T\u00e4nk dig, 66 miljoner dollar f\u00f6r 1 ms minskning av f\u00f6rdr\u00f6jning!<\/p>\n<p>Enligt <noindex><a rel=\"nofollow\" href=\"https:\/\/hpbn.co\/primer-on-web-performance\/\">forskningen<\/a><\/noindex>, hastigheten p\u00e5 anslutningen \u00f6ver 5 Mbit\/s slutar p\u00e5verka laddningstiden f\u00f6r en typisk webbplats direkt. Det finns dock en linj\u00e4r relation mellan f\u00f6rdr\u00f6jningen av anslutningen och laddningstiden f\u00f6r sidan:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/340ca1f2c5bdd6ca95a5caf02f67e3fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMen Netflix \u00e4r inte en typisk produkt. Effekten av f\u00f6rdr\u00f6jning och hastighet p\u00e5 anv\u00e4ndaren \u00e4r ett aktivt forsknings- och utvecklingsomr\u00e5de. Det finns laddning av applikationen och val av inneh\u00e5ll som beror p\u00e5 f\u00f6rdr\u00f6jning, men laddning av statiska element och streaming beror ocks\u00e5 p\u00e5 hastigheten p\u00e5 anslutningen. Analys och optimering av de nyckelfaktorer som p\u00e5verkar kvaliteten p\u00e5 tj\u00e4nsten f\u00f6r anv\u00e4ndaren \u00e4r ett aktivt forskningsomr\u00e5de f\u00f6r flera team inom Netflix. Ett av m\u00e5len \u00e4r att minska f\u00f6rdr\u00f6jningen mellan Netflix-enheter och den molnbaserade infrastrukturen.<\/p>\n<p>I rapporten kommer vi att fokusera p\u00e5 att minska f\u00f6rdr\u00f6jningen (latency) med exempel fr\u00e5n Netflix-infrastrukturen. Vi kommer att se p\u00e5 hur vi praktiskt kan n\u00e4rma oss design-, utvecklings- och driftprocesser f\u00f6r komplexa distribuerade system och anv\u00e4nda tiden p\u00e5 innovation och resultat snarare \u00e4n p\u00e5 att diagnostisera driftsproblem och fel.<\/p>\n<h2>Inom Netflix<\/h2>\n<p>\nTusentals olika enheter st\u00f6der Netflix-appar. Deras utveckling hanteras av fyra olika team som g\u00f6r separata versioner av klienter f\u00f6r Android, iOS, TV och webbl\u00e4sare. Vi l\u00e4gger mycket tid och kraft p\u00e5 att f\u00f6rb\u00e4ttra och anpassa anv\u00e4ndargr\u00e4nssnittet. F\u00f6r detta \u00e4ndam\u00e5l genomf\u00f6r vi parallellt hundratals A\/B-tester.<\/p>\n<p>Personalisering st\u00f6ds av hundratals mikrotj\u00e4nster i AWS-molnet som tillhandah\u00e5ller personligt anpassade data f\u00f6r anv\u00e4ndaren, beg\u00e4rningshantering, telemetri, Big Data och Encoding. Trafikvisualiseringen ser ut s\u00e5 h\u00e4r:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/n7Te9WIz1ho?t=364\">L\u00e4nk till videon med demonstration (6:04-6:23)<\/a><\/noindex><\/p>\n<p>Till v\u00e4nster finns entry point, och sedan f\u00f6rdelas trafiken mellan flera hundra mikrotj\u00e4nster som st\u00f6ds av olika backend-team.<\/p>\n<p>En annan viktig komponent i v\u00e5r infrastruktur \u00e4r Open Connect CDN, som levererar statiskt inneh\u00e5ll till slutanv\u00e4ndaren \u2014 video, bilder, kod f\u00f6r klienter, osv. CDN ligger p\u00e5 anpassade servrar (OCA \u2014 Open Connect Appliance). Inuti finns SSD- och HDD-disksystem som styrs av en optimerad FreeBSD, med NGINX och en upps\u00e4ttning tj\u00e4nster. Vi designar och optimerar h\u00e5rdvaru- och programkomponenter s\u00e5 att en s\u00e5dan CDN-server kan skicka s\u00e5 mycket data som m\u00f6jligt till anv\u00e4ndarna. <\/p>\n<p>\"V\u00e4ggen\" av dessa servrar p\u00e5 internettrafikens utbytespunkt (Internet eXchange \u2014 IX) ser ut s\u00e5 h\u00e4r:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/8155601c344acb1eb05b925193af8f9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInternet Exchange ger m\u00f6jlighet f\u00f6r internetleverant\u00f6rer och inneh\u00e5llsleverant\u00f6rer att \"koppla ihop\" med varandra f\u00f6r en mer direkt datautbyte p\u00e5 internet. Det finns cirka 70-80 Internet Exchange-punkter runt om i v\u00e4rlden d\u00e4r v\u00e5ra servrar \u00e4r installerade, och vi hanterar sj\u00e4lva deras installation och underh\u00e5ll:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/77a2465314e47c0b2c90dbf7a2fb5e6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDessutom tillhandah\u00e5ller vi ocks\u00e5 servrar direkt till internetleverant\u00f6rer, som de installerar i sitt n\u00e4tverk, vilket f\u00f6rb\u00e4ttrar lokaliseringen av Netflix-trafiken och str\u00f6mmande kvalitet f\u00f6r anv\u00e4ndarna:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/63e077d2649bfafea5c7af43a0faaf85.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn upps\u00e4ttning AWS-tj\u00e4nster ansvarar f\u00f6r dirigering av videof\u00f6rfr\u00e5gningar fr\u00e5n kunder till CDN-servrar, samt konfiguration av sj\u00e4lva servrarna \u2014 uppdatering av inneh\u00e5ll, programkod, inst\u00e4llningar osv. F\u00f6r detta har vi ocks\u00e5 byggt ett backbone-n\u00e4tverk som ansluter servrar p\u00e5 Internet Exchange-punkter med AWS. Backbone-n\u00e4tverket \u00e4r ett globalt n\u00e4tverk av fiberoptiska kablar och routrar, som vi kan designa och konfigurera utifr\u00e5n v\u00e5ra behov.<\/p>\n<p>uttalandet <noindex><a rel=\"nofollow\" href=\"https:\/\/www.sandvine.com\/hubfs\/Sandvine_Redesign_2019\/Downloads\/Internet%20Phenomena\/Internet%20Phenomena%20Report%20Q32019%2020190910.pdf\">bed\u00f6mningar av Sandvine<\/a><\/noindex>, v\u00e5r CDN-infrastruktur levererar under peak timmar ungef\u00e4r \u215b av det globala internettrafiken och \u2153 av trafiken i Nordamerika, d\u00e4r Netflix har funnits l\u00e4ngst. Imponerande siffror, men f\u00f6r mig \u00e4r en av de mest otroliga prestationerna att hela CDN-systemet utvecklas och underh\u00e5lls av ett team p\u00e5 mindre \u00e4n 150 personer.<\/p>\n<p>Ursprungligen var CDN-infrastrukturen designad f\u00f6r att leverera videodata. Men med tiden ins\u00e5g vi att vi \u00e4ven kunde anv\u00e4nda den f\u00f6r att optimera dynamiska f\u00f6rfr\u00e5gningar fr\u00e5n kunder till AWS-molnet.<\/p>\n<h2>Om att p\u00e5skynda internet<\/h2>\n<p>\nI dag har Netflix 3 AWS-regioner, og forsinkelsen av foresp\u00f8rselen til skyen vil avhenge av hvor langt kunden er fra den n\u00e6rmeste regionen. Samtidig har vi en rekke CDN-servere som brukes til levering av statisk innhold. Er det en m\u00e5te \u00e5 bruke denne infrastrukturen p\u00e5 for \u00e5 akselerere dynamiske foresp\u00f8rsel? Dessverre kan vi ikke cache disse foresp\u00f8rslene \u2014 APIene er personaliserte og hvert resultat er unikt.<\/p>\n<p>La oss lage en proxy p\u00e5 CDN-serveren og begynne \u00e5 kj\u00f8re trafikken gjennom den. Vil dette v\u00e6re raskere?<\/p>\n<h2>Materie<\/h2>\n<p>\nLa oss huske hvordan nettverksprotokoller fungerer. I dag bruker st\u00f8rstedelen av trafikken p\u00e5 internett HTTPs, som er avhengig av lavere niv\u00e5 protokoller som TCP og TLS. For at klienten skal koble seg til serveren, gjennomf\u00f8rer den et handshake, og for \u00e5 opprette en sikker forbindelse m\u00e5 klienten utveksle meldinger med serveren tre ganger, og minst \u00e9n gang til for \u00e5 overf\u00f8re data. Med en forsinkelse p\u00e5 ett utvekslingsparti (RTT) p\u00e5 100 ms trenger vi 400 ms for \u00e5 motta det f\u00f8rste databit:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/ab12024f5a9940ca470f27821ca3c631.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvis sertifikatene er plassert p\u00e5 CDN-serveren, kan vi betydelig redusere tiden for \u00abh\u00e5ndtrykk\u00bb mellom klienten og serveren, hvis CDN er n\u00e6rmere. Anta at forsinkelsen til CDN-serveren er 30 ms. Da vil det ta 220 ms for \u00e5 f\u00e5 det f\u00f8rste databit:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/d63134bb51592aaa6a5e0c86f1a070e0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMen fordelene slutter ikke der. N\u00e5r forbindelsen allerede er opprettet, \u00f8ker TCP congestion window (mengden informasjon som kan overf\u00f8res parallelt over denne forbindelsen). Hvis et dataparti g\u00e5r tapt, reduserer de klassiske implementasjonene av TCP-protokollen (som TCP New Reno) det \u00e5pne \u00abvinduet\u00bb med halvparten. \u00d8kningen av congestion window, og hastigheten p\u00e5 gjenoppretting fra tap, avhenger igjen av forsinkelsen (RTT) til serveren. Hvis denne forbindelsen bare g\u00e5r til CDN-serveren, vil gjenopprettingen v\u00e6re raskere. Tap av pakker er en standardforeteelse, spesielt for tr\u00e5dl\u00f8se nettverk.<\/p>\n<p>Internetkapaciteten kan minska, s\u00e4rskilt under rusningstid p\u00e5 grund av trafik fr\u00e5n anv\u00e4ndare, vilket kan leda till \"k\u00f6er\". Det finns ingen m\u00f6jlighet p\u00e5 internet att ge prioritet \u00e5t vissa f\u00f6rfr\u00e5gningar framf\u00f6r andra. Till exempel, att ge prioritet \u00e5t mindre och tidsk\u00e4nsliga f\u00f6rfr\u00e5gningar i f\u00f6rh\u00e5llande till \"tunga\" datastreams som belastar n\u00e4tverket. I v\u00e5rt fall g\u00f6r dock v\u00e5r egen backbone-n\u00e4tverk det m\u00f6jligt att g\u00f6ra detta p\u00e5 en del av beg\u00e4ran \u2014 mellan CDN och molnet, och vi kan konfigurera det helt. Vi kan st\u00e4lla in s\u00e5 att sm\u00e5 och f\u00f6rdr\u00f6jningsk\u00e4nsliga paket prioriteras, medan st\u00f6rre datastreams skickas n\u00e5got senare. Ju n\u00e4rmare CDN \u00e4r kunden, desto mer effektivitet.<\/p>\n<p>Dessutom p\u00e5verkar aprotokollen p\u00e5 applikationsniv\u00e5 (OSI-niv\u00e5 7) latensen. Nya protokoll som HTTP\/2 g\u00f6r det m\u00f6jligt att optimera prestandan f\u00f6r parallella f\u00f6rfr\u00e5gningar. Men vi har Netflix-kunder med \u00e4ldre enheter som inte st\u00f6der nya protokoll. Inte alla kunder kan uppgraderas eller optimeras. Medan mellan CDN-proxy och molnet har vi full kontroll och m\u00f6jlighet att anv\u00e4nda nya, optimala protokoll och inst\u00e4llningar. Den ineffektiva delen med gamla protokoll kommer endast att agera mellan kunden och CDN-servern. Dessutom kan vi multiplexera f\u00f6rfr\u00e5gningar p\u00e5 en redan etablerad anslutning mellan CDN och molnet, vilket f\u00f6rb\u00e4ttrar utnyttjandet av anslutningen p\u00e5 TCP-niv\u00e5n:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/a05b49680734670dcfce9111f3ba1919.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>M\u00e4ta<\/h2>\n<p>\nTrots att teorin lovar f\u00f6rb\u00e4ttringar, kastar vi oss inte direkt in i produktion. Ist\u00e4llet m\u00e5ste vi f\u00f6rst bevisa att id\u00e9n fungerar i praktiken. F\u00f6r detta beh\u00f6ver vi svara p\u00e5 n\u00e5gra fr\u00e5gor:<\/p>\n<ul>\n<li><b>Hastighet<\/b>: Kommer proxy vara snabbare?<\/li>\n<li><b>P\u00e5litlighet<\/b>: Kommer det oftare att g\u00e5 s\u00f6nder?<\/li>\n<li><b>Komplexitet<\/b>: Hur integrera med applikationer?<\/li>\n<li><b>Kostnad<\/b>: Hur mycket kostar det att drifts\u00e4tta ytterligare infrastruktur?<\/li>\n<\/ul>\n<p>\nL\u00e5t oss titta n\u00e4rmare p\u00e5 v\u00e5r metod f\u00f6r att utv\u00e4rdera den f\u00f6rsta punkten. De \u00f6vriga behandlas p\u00e5 liknande s\u00e4tt.<\/p>\n<p>F\u00f6r att analysera hastigheten p\u00e5 f\u00f6rfr\u00e5gningar vill vi f\u00e5 data f\u00f6r alla anv\u00e4ndare, utan att spendera mycket tid p\u00e5 utveckling och utan att bryta produktionen. F\u00f6r detta finns det flera angreppss\u00e4tt:<\/p>\n<ol>\n<li>RUM, eller passiv m\u00e4tning av f\u00f6rfr\u00e5gningar. Vi m\u00e4ter tiden f\u00f6r nuvarande f\u00f6rfr\u00e5gningar fr\u00e5n anv\u00e4ndarna och s\u00e4kerst\u00e4ller fullst\u00e4ndig anv\u00e4ndart\u00e4ckning. Nackdelen \u00e4r en inte s\u00e4rskilt stabil signal p\u00e5 grund av m\u00e5nga faktorer, s\u00e5som olika storlekar p\u00e5 f\u00f6rfr\u00e5gningarna, behandlingstid p\u00e5 servern och klienten. Dessutom kan man inte testa en ny konfiguration utan effekt p\u00e5 produktion.<\/li>\n<li>Laboratorietester. Speciella servrar och infrastruktur som imiterar kunder. Genom dessa utf\u00f6r vi n\u00f6dv\u00e4ndiga tester. P\u00e5 s\u00e5 s\u00e4tt f\u00e5r vi fullst\u00e4ndig kontroll \u00f6ver m\u00e4tresultaten och ett tydligt signal. Men det finns ingen fullst\u00e4ndig t\u00e4ckning av enheter och anv\u00e4ndarl\u00e4gen (s\u00e4rskilt med en tj\u00e4nst \u00f6ver hela v\u00e4rlden och st\u00f6d f\u00f6r tusentals enhetsmodeller).<\/li>\n<\/ol>\n<p>\nHur kan man kombinera f\u00f6rdelarna med b\u00e5da metoderna?<\/p>\n<p>V\u00e5rt team har hittat en l\u00f6sning. Vi skrev en liten kodsnutt \u2013 en probe \u2013 som vi integrerade i v\u00e5r applikation. Prober l\u00e5ter oss g\u00f6ra helt kontrollerade n\u00e4tverkstester fr\u00e5n v\u00e5ra enheter. Det fungerar p\u00e5 f\u00f6ljande s\u00e4tt: <\/p>\n<ol>\n<li>Strax efter att appen har laddats ner och den initiala aktiviteten har avslutats startar vi v\u00e5ra prober. <\/li>\n<li>Kunden g\u00f6r en beg\u00e4ran till servern och f\u00e5r ett \"recept\" f\u00f6r testet. Receptet \u00e4r en lista med URL-adresser som HTTP(s) beg\u00e4ran ska g\u00f6ras mot. Ut\u00f6ver detta konfigurerar receptet beg\u00e4rningsparametrar: f\u00f6rdr\u00f6jningar mellan beg\u00e4rningar, m\u00e4ngd beg\u00e4rda data, HTTP(s) headers osv. Dessutom kan vi parallellt testa flera olika recept \u2013 vid beg\u00e4ran om konfiguration best\u00e4ms slumpm\u00e4ssigt vilket recept som ska ges. <\/li>\n<li>Tidpunkten f\u00f6r start av proben v\u00e4ljs s\u00e5 att den inte krockar med aktiv anv\u00e4ndning av n\u00e4tverksresurser p\u00e5 kunden. I praktiken v\u00e4ljs tiden n\u00e4r kunden inte \u00e4r aktiv.<\/li>\n<li>Efter att ha mottagit receptet g\u00f6r kunden beg\u00e4rningar till var och en av URL-adresserna parallellt. Beg\u00e4ran till varje adress kan upprepas \u2013 s\u00e5 kallade \"pulser\". Vid den f\u00f6rsta pulsen m\u00e4ter vi hur l\u00e5ng tid det tog att etablera en koppling och ladda ner data. Vid den andra pulsen m\u00e4ter vi tiden f\u00f6r att ladda ner data via den redan etablerade kopplingen. F\u00f6re den tredje kan vi s\u00e4tta en f\u00f6rdr\u00f6jning och m\u00e4ta hastigheten f\u00f6r att \u00e5teretablera kopplingen osv.\n<p>Under test, we measure all parameters that the device can obtain:<\/p>\n<ul>\n<li>DNS request time;<\/li>\n<li>TCP connection setup time;<\/li>\n<li>TLS connection setup time;<\/li>\n<li>time to receive the first byte of data;<\/li>\n<li>total loading time;<\/li>\n<li>status code result.<\/li>\n<\/ul>\n<\/li>\n<li> After all pulses are completed, the sample downloads the results of all measurements for analytics.<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/fff11d487b7c7725707cdeeca0734296.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKey points include minimal dependence on client logic, data processing on the server, and measuring concurrent requests. This allows us to isolate and test the impact of various factors influencing request performance, varying them within a single recipe, and obtaining results from real clients.<\/p>\n<p>Such infrastructure has proven useful not only for analyzing request performance. Currently, we have 14 active recipes, over 6,000 samples per second, receiving data from all corners of the earth with full device coverage. If Netflix were to purchase such a service from third-party companies, it would cost millions of dollars a year, with much worse coverage.<\/p>\n<h2>Testing the theory in practice: prototype<\/h2>\n<p>\nWith such a system, we were able to assess the efficiency of the CDN proxy on request latency. Now we need to:<\/p>\n<ul>\n<li>create a proxy prototype;<\/li>\n<li>deploy the prototype on the CDN;<\/li>\n<li>determine how to route clients to the proxy on a specific CDN server;<\/li>\n<li>compare performance with requests to AWS without a proxy.<\/li>\n<\/ul>\n<p>\nThe task is to quickly evaluate the effectiveness of the proposed solution. For the prototype implementation, we chose Go due to its good network libraries. We installed the proxy prototype as a static binary on each CDN server to minimize dependencies and simplify integration. In the initial implementation, we maximized the use of standard components and made small modifications for HTTP\/2 connection pooling and request multiplexing.<\/p>\n<p>F\u00f6r att balansera mellan AWS-regioner har vi anv\u00e4nt en geografisk DNS-databas, samma som anv\u00e4nds f\u00f6r att balansera kunder. F\u00f6r att v\u00e4lja en CDN-server f\u00f6r kunden anv\u00e4nder vi TCP Anycast f\u00f6r servrar i Internet Exchange (IX). I detta alternativ anv\u00e4nder vi en IP-adress f\u00f6r alla CDN-servrar, vilket g\u00f6r att kunden dirigeras till CDN-servern med det minsta antalet IP-hops. Vi har ingen kontroll \u00f6ver routern f\u00f6r att konfigurera TCP Anycast p\u00e5 CDN-servrar som \u00e4r installerade hos internetleverant\u00f6rer (ISP), s\u00e5 vi anv\u00e4nder <noindex><a rel=\"nofollow\" href=\"https:\/\/www.infoq.com\/presentations\/netflix-streaming-arch\/\">samma logik<\/a><\/noindex>, enligt vilken kunder dirigeras till internetleverant\u00f6rer f\u00f6r videostreaming.<\/p>\n<p>S\u00e5, vi har tre typer av v\u00e4gar f\u00f6r beg\u00e4ran: till molnet via \u00f6ppna internet, via en CDN-server i IX eller via en CDN-server bel\u00e4gen hos internetleverant\u00f6ren. V\u00e5rt m\u00e5l \u00e4r att f\u00f6rst\u00e5 vilken v\u00e4g som \u00e4r b\u00e4st och vilken nytta vi f\u00e5r av proxy j\u00e4mf\u00f6rt med hur beg\u00e4rningar dirigeras i produktion. F\u00f6r detta anv\u00e4nder vi ett testsystem p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/51b64d5be0aaf0f141484ee0fd373396.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVarje v\u00e4g blir ett separat m\u00e5l, och vi ser p\u00e5 den tid vi f\u00e5tt. F\u00f6r analysen sl\u00e5r vi samman proxyresultaten i en grupp (v\u00e4ljer den b\u00e4sta tiden mellan IX och ISP-proxy), och j\u00e4mf\u00f6r med tiden f\u00f6r beg\u00e4rningar till molnet utan proxy:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/ec01690f6a312e61649282b0e6208778.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom man kan se, visade resultaten sig vara otydiga \u2014 i de flesta fall ger proxy en bra acceleration, men det finns ocks\u00e5 tillr\u00e4ckligt med kunder d\u00e4r situationen avsev\u00e4rt f\u00f6rs\u00e4mras. <\/p>\n<p>I slut\u00e4ndan gjorde vi flera viktiga saker:<\/p>\n<ol>\n<li>Utv\u00e4rderade den f\u00f6rv\u00e4ntade prestandan f\u00f6r beg\u00e4rningar fr\u00e5n kunder till molnet via CDN-proxy.<\/li>\n<li>Fick data fr\u00e5n riktiga kunder, fr\u00e5n alla typer av enheter.<\/li>\n<li>F\u00f6rstod att teorin inte bekr\u00e4ftades till 100% och det initiala f\u00f6rslaget med CDN-proxy skulle inte fungera f\u00f6r oss.<\/li>\n<li>Vi riskerade inte \u2014 vi \u00e4ndrade inte produktionskonfigurationen f\u00f6r kunderna.<\/li>\n<li>Vi brakade ingenting. <\/li>\n<\/ol>\n<p><\/p>\n<h2>Prototyp 2.0<\/h2>\n<p>\nS\u00e5, vi g\u00e5r tillbaka till ritbordet och upprepar processen fr\u00e5n b\u00f6rjan.<\/p>\n<p>Id\u00e9n \u2014 ist\u00e4llet f\u00f6r 100% proxy kommer vi f\u00f6r varje kund att best\u00e4mma den snabbaste v\u00e4gen och dirigera beg\u00e4rningar dit \u2014 det vill s\u00e4ga, vi kommer att g\u00f6ra det som kallas klientstyrning.<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/780817f48a4d2b292d5545e0aa1ccc50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHur ska vi implementera detta? Vi kan inte anv\u00e4nda logik p\u00e5 serversidan, eftersom syftet \u00e4r att ansluta till denna server. Vi m\u00e5ste p\u00e5 n\u00e5got s\u00e4tt g\u00f6ra detta p\u00e5 klienten. Och helst ska vi g\u00f6ra det med minsta m\u00f6jliga komplexitet f\u00f6r att undvika integrationsfr\u00e5gor med ett stort antal klientplattformar. <\/p>\n<p>Svaret \u00e4r att anv\u00e4nda DNS. I v\u00e5rt fall har vi en egen DNS-infrastruktur, och vi kan st\u00e4lla in en dom\u00e4nzon f\u00f6r vilken v\u00e5ra servrar kommer att vara auktoritativa. Det fungerar s\u00e5 h\u00e4r:<\/p>\n<ol>\n<li>Klienten g\u00f6r en beg\u00e4ran till DNS-servern med hj\u00e4lp av en v\u00e4rd, till exempel api.netflix.com.<\/li>\n<li>Beg\u00e4ran n\u00e5r v\u00e5r DNS-server.<\/li>\n<li>DNS-servern vet vilken v\u00e4g som \u00e4r snabbast f\u00f6r denna klient och ger den motsvarande IP-adressen. <\/li>\n<\/ol>\n<p>\nDet finns en ytterligare komplexitet i l\u00f6sningen: auktoritativa DNS-leverant\u00f6rer ser inte klientens IP-adress och kan endast se IP-adressen till den rekursiva resolver som klienten anv\u00e4nder. <\/p>\n<p>I slut\u00e4ndan m\u00e5ste v\u00e5r auktoritativa resolver fatta beslut inte f\u00f6r enskilda klienter, utan f\u00f6r en grupp av klienter baserat p\u00e5 den rekursiva resolvern. <\/p>\n<p>F\u00f6r att l\u00f6sa detta anv\u00e4nder vi samma probes, aggregerar m\u00e4tresultaten fr\u00e5n klienterna mot varje rekursiv resolver och avg\u00f6r vart denna grupp ska dirigeras \u2013 via proxy genom IX med hj\u00e4lp av TCP Anycast, genom ISP-proxy eller direkt till molnet.<\/p>\n<p>Vi f\u00e5r ett s\u00e5dant system:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/ad23219938d1cb7b6eef498671c3e151.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen resulterande modellen f\u00f6r DNS-styrning g\u00f6r att vi kan rikta klienter baserat p\u00e5 historiska observationer av hastigheten p\u00e5 anslutningar fr\u00e5n klienter till molnet. <\/p>\n<p>\u00e5terigen, fr\u00e5gan \u00e4r \u2013 hur effektivt kommer detta tillv\u00e4gag\u00e5ngss\u00e4tt att fungera? F\u00f6r att svara p\u00e5 detta anv\u00e4nder vi \u00e5terigen v\u00e5rt system f\u00f6r probes. S\u00e5 vi st\u00e4ller in en konfiguration av recency, d\u00e4r en av m\u00e5len f\u00f6ljer DNS-styrning, den andra g\u00e5r direkt till molnet (nuvarande produktion).<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/ceb2ded9367ebd0aa0ede46191a89a88.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI slut\u00e4ndan j\u00e4mf\u00f6r vi resultaten och f\u00e5r en uppskattning av effektiviteten:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/ca0db88461d5f2cb0f3f7c07eae14f10.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom ett resultat l\u00e4rde vi oss flera viktiga saker:<\/p>\n<ol>\n<li>Vi utv\u00e4rderade den f\u00f6rv\u00e4ntade prestandan f\u00f6r beg\u00e4rningar fr\u00e5n klienter till molnet med hj\u00e4lp av DNS-styrning.<\/li>\n<li>Fick data fr\u00e5n riktiga kunder, fr\u00e5n alla typer av enheter.<\/li>\n<li>Vi bevisade effektiviteten av den f\u00f6reslagna id\u00e9n.<\/li>\n<li>Vi riskerade inte \u2014 vi \u00e4ndrade inte produktionskonfigurationen f\u00f6r kunderna.<\/li>\n<li>Vi brakade ingenting.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Nu till det sv\u00e5ra \u2013 vi k\u00f6r i produktion.<\/h2>\n<p>\nDet l\u00e4ttaste ligger nu bakom oss \u2014 vi har en fungerande prototyp. Den sv\u00e5ra delen \u00e4r att skala l\u00f6sningen f\u00f6r all Netflix-trafik, rulla ut den till 150 miljoner anv\u00e4ndare, tusentals enheter, hundratals mikrotj\u00e4nster och st\u00e4ndigt f\u00f6r\u00e4nderliga produkter och infrastruktur. Netflix-servrarna tar emot miljoner f\u00f6rfr\u00e5gningar per sekund, och det \u00e4r l\u00e4tt att bryta tj\u00e4nsten med en of\u00f6rsiktig handling. Samtidigt vill vi dynamiskt styra trafiken genom tusentals CDN-servrar p\u00e5 internet, d\u00e4r saker st\u00e4ndigt f\u00f6r\u00e4ndras och g\u00e5r s\u00f6nder, ofta vid de mest ol\u00e4mpliga tillf\u00e4llena. <\/p>\n<p>Och trots allt detta finns det tre ingenj\u00f6rer i teamet som ansvarar f\u00f6r utveckling, distribution och fullst\u00e4ndig support av systemet.<\/p>\n<p>S\u00e5 vi kommer att prata om lugn och h\u00e4lsosam s\u00f6mn h\u00e4rn\u00e4st.<\/p>\n<p>Hur forts\u00e4tter vi utvecklingen ist\u00e4llet f\u00f6r att spendera all tid p\u00e5 support? K\u00e4rnan i v\u00e5rt tillv\u00e4gag\u00e5ngss\u00e4tt bygger p\u00e5 tre principer:<\/p>\n<ol>\n<li>Vi minskar den potentiella skalan av fel (blast radius). <\/li>\n<li>Vi f\u00f6rbereder oss f\u00f6r \u00f6verraskningar \u2014 f\u00f6rv\u00e4ntar oss att saker g\u00e5r s\u00f6nder, oavsett testning och personlig erfarenhet.<\/li>\n<li>Gradvis nedgradering (graceful degradation) \u2014 om n\u00e5got inte fungerar som det ska, ska det automatiskt repareras, \u00e4ven om det inte \u00e4r det mest effektiva s\u00e4ttet.<\/li>\n<\/ol>\n<p>\nDet visade sig att i v\u00e5rt fall, med detta tillv\u00e4gag\u00e5ngss\u00e4tt f\u00f6r problem, kan vi hitta en enkel och effektiv l\u00f6sning och betydligt f\u00f6renkla systemsupporten. Vi ins\u00e5g att vi kunde l\u00e4gga till en liten m\u00e4ngd kod i klienten f\u00f6r att \u00f6vervaka fel med n\u00e4tverksf\u00f6rfr\u00e5gningar orsakade av anslutningsproblem. Vid n\u00e4tverksfel g\u00f6r vi en fallback direkt till molnet. Denna l\u00f6sning kr\u00e4ver inte stora anstr\u00e4ngningar fr\u00e5n klientteam, men minskar avsev\u00e4rt risken f\u00f6r ov\u00e4ntade fel och \u00f6verraskningar f\u00f6r oss.<\/p>\n<p>Naturligtvis, trots fallback, f\u00f6ljer vi fortfarande en strikt disciplin i utvecklingsprocessen:<\/p>\n<ol>\n<li>Test p\u00e5 prover.<\/li>\n<li>A\/B-testning eller Canaries.<\/li>\n<li>Gradvis lansering (progressive rollout).<\/li>\n<\/ol>\n<p>\nMed prover har tillv\u00e4gag\u00e5ngss\u00e4ttet beskrivits \u2014 f\u00f6r\u00e4ndringar testas f\u00f6rst med hj\u00e4lp av en konfigurerad recept.<\/p>\n<p>F\u00f6r canary-testning beh\u00f6ver vi f\u00e5 j\u00e4mf\u00f6rbara par av servrar, d\u00e4r vi kan j\u00e4mf\u00f6ra hur systemet fungerar f\u00f6re och efter f\u00f6r\u00e4ndringar. F\u00f6r detta v\u00e4ljer vi par av servrar fr\u00e5n v\u00e5ra m\u00e5nga CDN-webbplatser som f\u00e5r j\u00e4mf\u00f6rbar trafik:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/eef504f5c81aa985b78339fd5f913d14.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nD\u00e4refter placerar vi byggnaden med \u00e4ndringar p\u00e5 Canary-servrar. F\u00f6r att utv\u00e4rdera resultaten k\u00f6r vi ett system som j\u00e4mf\u00f6r cirka 100-150 metriker med en kontrollgrupp av servrar:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/898edb0a5bd493d6ef228cd116c1a939.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOm Canary-testningen lyckas g\u00f6r vi en gradvis release i v\u00e5gor. P\u00e5 varje webbplats uppdaterar vi inte servrarna samtidigt \u2014 f\u00f6rlusten av en hel webbplats vid problem har en st\u00f6rre p\u00e5verkan p\u00e5 anv\u00e4ndartj\u00e4nsten \u00e4n f\u00f6rlusten av samma antal servrar, men p\u00e5 olika platser.<\/p>\n<p>\u00d6verlag beror effektiviteten och s\u00e4kerheten i tillv\u00e4gag\u00e5ngss\u00e4ttet p\u00e5 m\u00e4ngden och kvaliteten av insamlade metriker. F\u00f6r v\u00e5rt system f\u00f6r att p\u00e5skynda f\u00f6rfr\u00e5gningar samlar vi in metriker fr\u00e5n alla m\u00f6jliga komponenter: <\/p>\n<ul>\n<li>fr\u00e5n kunder \u2014 antal sessioner och f\u00f6rfr\u00e5gningar, fallback rates; <\/li>\n<li>proxy \u2014 statistik om antal och tid f\u00f6r f\u00f6rfr\u00e5gningar;<\/li>\n<li>DNS \u2014 antal och resultat av f\u00f6rfr\u00e5gningar;<\/li>\n<li>cloud edge \u2014 antal och tid f\u00f6r behandling av f\u00f6rfr\u00e5gningar i molnet.<\/li>\n<\/ul>\n<p>\nAllt detta samlas i en enhetlig pipeline, och beroende p\u00e5 behov beslutar vi vilka metriker som ska skickas till realtidsanalys och vilka som ska g\u00e5 till Elasticsearch eller Big Data f\u00f6r mer detaljerad diagnostik.<\/p>\n<h2>\u00d6vervakar<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/ff8b00b1239a20f85e96ce23c2d7c2d0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI v\u00e5rt fall g\u00f6r vi \u00e4ndringar p\u00e5 den kritiska v\u00e4gen f\u00f6r f\u00f6rfr\u00e5gningar mellan klienten och servern. Under tiden \u00e4r antalet olika komponenter p\u00e5 klienten, servern och v\u00e4gen genom internet enorma. \u00c4ndringar p\u00e5 klienten och servern sker st\u00e4ndigt \u2014 genom arbetet av tiotals team och naturliga f\u00f6r\u00e4ndringar i ekosystemet. Vi \u00e4r i mitten \u2014 vid diagnostik av problem finns det stor risk att vi \u00e4r involverade. D\u00e4rf\u00f6r beh\u00f6ver vi tydligt f\u00f6rst\u00e5 hur vi ska definiera, samla in och analysera metriker f\u00f6r att snabbt lokalisera problem. <\/p>\n<p>Idealiskt sett \u2014 full tillg\u00e5ng till alla typer av metriker och filter i realtid. Men det finns v\u00e4ldigt m\u00e5nga metriker, s\u00e5 kostnadsfr\u00e5gan kommer upp. I v\u00e5rt fall separerar vi metriker och utvecklingsverktyg enligt f\u00f6ljande:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/0b4a15776f3b44331652adc14ea87390.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r att uppt\u00e4cka och triagera problem anv\u00e4nder vi v\u00e5rt eget realtids system med \u00f6ppen k\u00e4llkod <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Netflix\/atlas\">Atlas<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"https:\/\/netflixtechblog.com\/lumen-custom-self-service-dashboarding-for-netflix-8c56b541548c\">Lumen<\/a><\/noindex> \u2014 f\u00f6r visualisering. Det lagrar aggreggaterade metriker i minnet, \u00e4r p\u00e5litligt och integreras med alertsystemet. F\u00f6r lokalisering och diagnostik har vi tillg\u00e5ng till loggar fr\u00e5n Elasticsearch och Kibana. F\u00f6r statistisk analys och modellering \u2014 anv\u00e4nder vi big data och visualisering i Tableau.<\/p>\n<p>Det verkar som att det \u00e4r mycket sv\u00e5rt att arbeta med en s\u00e5dan metod. Men med en hierarkisk organisation av m\u00e4tningar och verktyg kan vi snabbt analysera problemet, identifiera typ av problem och sedan f\u00f6rdjupa oss i detaljerade m\u00e4tningar. F\u00f6r att lokalisera k\u00e4llan till ett fel tar vi i genomsnitt omkring 1-2 minuter. Efter det arbetar vi redan med det specifika teamet p\u00e5 diagnostik \u2014 fr\u00e5n tiotals minuter till flera timmar.<\/p>\n<p>\u00c4ven om diagnosen g\u00f6rs snabbt, vill vi inte att det ska h\u00e4nda ofta. I b\u00e4sta fall f\u00e5r vi ett kritiskt alert bara n\u00e4r det finns en betydande p\u00e5verkan p\u00e5 tj\u00e4nsten. F\u00f6r v\u00e5rt system f\u00f6r cachning av f\u00f6rfr\u00e5gningar har vi bara 2 alert som kommer att informera oss:<\/p>\n<ul>\n<li>andel av Client Fallback \u2014 bed\u00f6mning av kundbeteende;<\/li>\n<li>andel av Probe errors \u2014 data om stabiliteten hos n\u00e4tverkskomponenter.<\/li>\n<\/ul>\n<p>\nDessa kritiska alert \u00f6vervakar om systemet fungerar f\u00f6r de flesta anv\u00e4ndare. Vi tittar p\u00e5 hur m\u00e5nga kunder som utnyttjade fallback om de inte kunde f\u00e5 en snabbare f\u00f6rfr\u00e5gan. I genomsnitt har vi mindre \u00e4n 1 kritisk notis per vecka, \u00e4ven om det sker en stor m\u00e4ngd f\u00f6r\u00e4ndringar i systemet. Varf\u00f6r \u00e4r det tillr\u00e4ckligt f\u00f6r oss?<\/p>\n<ol>\n<li>Det finns en klientfallback om v\u00e5r proxy inte fungerar.<\/li>\n<li>Det finns ett automatiskt styrsystem som reagerar p\u00e5 problem.<\/li>\n<\/ol>\n<p>\nOm det senaste, v\u00e5r probesystem och systemet f\u00f6r automatisk v\u00e4gval f\u00f6r f\u00f6rfr\u00e5gningar fr\u00e5n klienten till molnet, g\u00f6r det m\u00f6jligt att automatiskt hantera vissa problem. <\/p>\n<p>L\u00e5t oss \u00e5terg\u00e5 till v\u00e5r konfiguration av proverna och 3 kategorier av v\u00e4gar. F\u00f6rutom laddningstid kan vi \u00e4ven titta p\u00e5 faktiskt leverans. Om det inte gick att ladda data, kan vi genom att titta p\u00e5 resultaten fr\u00e5n olika v\u00e4gar avg\u00f6ra var och vad som har g\u00e5tt fel, och om vi kan \u00e5terst\u00e4lla det automatiskt genom att \u00e4ndra beg\u00e4rans v\u00e4g.<\/p>\n<p>Exempel:<\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/7d935da82aaca53af87f05fbdf215c4c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/f74ef9d3de953099921a68fbc65cb187.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/3c77cbd47813d3320efbf339a0690c53.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDenna process kan automatiseras. Integrera den i styrsystemet. Och l\u00e4ra det att reagera p\u00e5 problem med prestanda och tillf\u00f6rlitlighet. Om n\u00e5got b\u00f6rjar g\u00e5 fel \u2014 reagera, om det finns en b\u00e4ttre alternativ. Samtidigt \u00e4r en omedelbar reaktion inte kritisk, tack vare fallback p\u00e5 klienterna.<\/p>\n<p>S\u00e5ledes kan principerna f\u00f6r systemunderh\u00e5ll formuleras s\u00e5 h\u00e4r:<\/p>\n<ul>\n<li>minska omfattningen av fel;<\/li>\n<li>samla m\u00e4tningar;<\/li>\n<li>automatiskt \u00e5tg\u00e4rda fel, om vi kan;<\/li>\n<li>om vi inte kan \u2014 meddela;<\/li>\n<li>Vi arbetar med dashboards och triage-verktyg f\u00f6r snabb respons.<\/li>\n<\/ul>\n<p><\/p>\n<h2>L\u00e4rdomar<\/h2>\n<p>\nDet tar inte mycket tid att skriva en prototyp. I v\u00e5rt fall var den klar redan efter 4 m\u00e5nader. Med den fick vi nya m\u00e4tv\u00e4rden, och efter 10 m\u00e5nader fr\u00e5n utvecklingens b\u00f6rjan fick vi v\u00e5r f\u00f6rsta produktions trafik. Sedan b\u00f6rjade det tr\u00e5kiga och mycket sv\u00e5ra arbetet: att gradvis produktifiera och skala systemet, migrera den huvudsakliga trafiken och l\u00e4ra av misstagen. Denna effektiva process kommer inte att vara linj\u00e4r \u2014 trots alla anstr\u00e4ngningar kan man inte f\u00f6ruts\u00e4ga allt. Mycket mer effektivt \u00e4r snabb iteration och respons p\u00e5 nya data. <\/p>\n<p><img decoding=\"async\" alt=\"Vi accelererar internetf\u00f6rfr\u00e5gningar och sover lugnt\" src=\"\/wp-content\/uploads\/2020\/06\/c9c182a1a4fa048b1f1b2a82a4db65e1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBaserat p\u00e5 v\u00e5r erfarenhet kan vi rekommendera f\u00f6ljande:<\/p>\n<ol>\n<li>Lita inte p\u00e5 din intuition.\n<p>V\u00e5r intuition har st\u00e4ndigt svikit oss, trots den enorma erfarenheten hos teammedlemmarna. Till exempel, vi felbed\u00f6mde den uppskattade f\u00f6rb\u00e4ttringen fr\u00e5n att anv\u00e4nda CDN-proxyer eller beteendet hos TCP Anycast.<\/li>\n<li>H\u00e4mta data fr\u00e5n produktion.\n<p>Det \u00e4r viktigt att s\u00e5 snabbt som m\u00f6jligt f\u00e5 tillg\u00e5ng till \u00e5tminstone en liten m\u00e4ngd produktionsdata. Antalet unika fall, konfigurationer och inst\u00e4llningar i labbmilj\u00f6er \u00e4r praktiskt taget om\u00f6jligt att f\u00e5. Snabb tillg\u00e5ng till resultaten g\u00f6r att vi snabbare kan uppt\u00e4cka potentiella problem och beakta dem i systemarkitekturen.<\/li>\n<li>F\u00f6lj inte andras r\u00e5d och resultat \u2014 samla dina egna data.\n<p>F\u00f6lj principerna f\u00f6r insamling och analys av data, men ta inte blint andras resultat och p\u00e5st\u00e5enden. Endast du kan veta exakt vad som fungerar f\u00f6r dina anv\u00e4ndare. Ditt system och dina kunder kan skilja sig avsev\u00e4rt fr\u00e5n andra f\u00f6retag. Lyckligtvis \u00e4r verktyg f\u00f6r analys nu tillg\u00e4ngliga och l\u00e4tta att anv\u00e4nda. De resultat du f\u00e5r kanske inte st\u00e4mmer \u00f6verens med vad Netflix, Facebook, Akamai och andra f\u00f6retag h\u00e4vdar. I v\u00e5rt fall skiljer sig prestandan f\u00f6r TLS, HTTP2 eller statistiken f\u00f6r DNS-f\u00f6rfr\u00e5gningar fr\u00e5n resultaten fr\u00e5n Facebook, Uber, Akamai \u2014 eftersom vi har andra enheter, kunder och datastreamar.<\/li>\n<li>Str\u00e4va inte efter trendiga fenomen utan behov och utv\u00e4rdering av effektivitet.\n<p>B\u00f6rja enkelt. Det \u00e4r b\u00e4ttre att skapa ett enkelt fungerande system p\u00e5 kort tid \u00e4n att l\u00e4gga ner enormt mycket tid p\u00e5 att utveckla komponenter som du inte beh\u00f6ver. L\u00f6s de problem och utmaningar som \u00e4r viktiga baserat p\u00e5 dina m\u00e4tningar och resultat. <\/li>\n<li>Var beredd p\u00e5 nya till\u00e4mpningar.\n<p>Precis som det \u00e4r sv\u00e5rt att f\u00f6ruts\u00e4ga alla problem \u00e4r det ocks\u00e5 sv\u00e5rt att p\u00e5 f\u00f6rhand f\u00f6ruts\u00e4ga f\u00f6rdelarna och till\u00e4mpningarna. L\u00e5t dig inspireras av startups \u2014 deras f\u00f6rm\u00e5ga att anpassa sig efter kundernas behov. I ditt fall kan du uppt\u00e4cka nya problem och l\u00f6sningar. I v\u00e5rt projekt hade vi som m\u00e5l att minska f\u00f6rdr\u00f6jningen av f\u00f6rfr\u00e5gningar. Men under analysen och diskussionerna ins\u00e5g vi att vi \u00e4ven kunde anv\u00e4nda proxyservrar:<\/p>\n<ul>\n<li>f\u00f6r att balansera trafik mellan AWS-regioner och minska kostnader;<\/li>\n<li>f\u00f6r att modellera stabilitet i CDN;<\/li>\n<li>f\u00f6r att konfigurera DNS;<\/li>\n<li>f\u00f6r att konfigurera TLS\/TCP.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Slutsats<\/h2>\n<p>\nI presentationen beskriver jag hur Netflix l\u00f6ser utmaningen att snabba upp internetf\u00f6rfr\u00e5gningar mellan kunder och molnet. Hur vi samlar in data genom att anv\u00e4nda m\u00e4tpunkter hos kunderna, och anv\u00e4nder den insamlade historiska datan f\u00f6r att styra produktionsf\u00f6rfr\u00e5gningar fr\u00e5n kunder genom den snabbaste v\u00e4gen p\u00e5 internet. Hur vi anv\u00e4nder principerna f\u00f6r n\u00e4tverksprotokoll, v\u00e5r CDN-infrastruktur, backbone-n\u00e4tverket och DNS-servrar f\u00f6r att uppn\u00e5 detta.<\/p>\n<p>Men v\u00e5r l\u00f6sning \u00e4r bara ett exempel p\u00e5 hur vi p\u00e5 Netflix har implementerat ett s\u00e5dant system. Vad som fungerade f\u00f6r oss. Den praktiska delen av min presentation f\u00f6r er handlar om de principer f\u00f6r utveckling och underh\u00e5ll som vi f\u00f6ljer f\u00f6r att uppn\u00e5 bra resultat.<\/p>\n<p>V\u00e5r l\u00f6sning p\u00e5 problemet kanske inte passar er. Men teorin och utvecklingsprinciperna kvarst\u00e5r, \u00e4ven om ni inte har en egen CDN-infrastruktur, eller om den skiljer sig avsev\u00e4rt fr\u00e5n v\u00e5r. <\/p>\n<p>Betydelsen av hastighet p\u00e5 f\u00f6rfr\u00e5gningar f\u00f6r verksamheten kvarst\u00e5r ocks\u00e5. Och \u00e4ven f\u00f6r en enkel tj\u00e4nst m\u00e5ste du g\u00f6ra val: mellan \"moln\"-leverant\u00f6rer, serverens placering, CDN och DNS-leverant\u00f6rer. Ditt val kommer att p\u00e5verka effektiviteten av internetf\u00f6rfr\u00e5gningar f\u00f6r dina kunder. Och f\u00f6r dig \u00e4r det viktigt att m\u00e4ta och f\u00f6rst\u00e5 denna p\u00e5verkan.<\/p>\n<p>B\u00f6rja med enkla l\u00f6sningar, och t\u00e4nk p\u00e5 hur du f\u00f6r\u00e4ndrar produkten. L\u00e4r dig under processen och f\u00f6rb\u00e4ttra systemet baserat p\u00e5 data fr\u00e5n dina kunder, din infrastruktur och ditt f\u00f6retag. T\u00e4nk p\u00e5 m\u00f6jligheten av ov\u00e4ntade fel under designfasen. D\u00e5 kan du snabba upp din utvecklingsprocess, f\u00f6rb\u00e4ttra l\u00f6sningens effektivitet, undvika \u00f6verbelastning p\u00e5 supporten och sova gott.<\/p>\n<blockquote><p>I \u00e5r <noindex><a rel=\"nofollow\" href=\"http:\/\/devoops-moscow.ru\/?utm_source=habr&amp;utm_medium=506106\">kommer konferensen att h\u00e5llas mellan 6 och 10 juli<\/a><\/noindex> i onlineformat. Du kommer att kunna st\u00e4lla fr\u00e5gor till en av DevOps-f\u00e4derna, John Willis sj\u00e4lv!<\/p><\/blockquote>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/jugru\/blog\/506106\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Netflix \u2014 \u043b\u0438\u0434\u0435\u0440 \u0440\u044b\u043d\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0435\u043b\u0435\u0432\u0438\u0434\u0435\u043d\u0438\u044f \u2014 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u0432\u0448\u0430\u044f \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u044d\u0442\u043e\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442. Netflix \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c \u043a\u0438\u043d\u043e \u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0441 \u043f\u043e\u0447\u0442\u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0433\u043e\u043b\u043a\u0430 \u043f\u043b\u0430\u043d\u0435\u0442\u044b \u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c, \u043d\u043e \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0439 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u043e\u0439. \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 Netflix \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043d\u0430 DevOops 2019 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":84877,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-84876","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"Netflix \u2014 \u043b\u0438\u0434\u0435\u0440 \u0440\u044b\u043d\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0435\u043b\u0435\u0432\u0438\u0434\u0435\u043d\u0438\u044f \u2014.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/uskoryaem-internet-zaprosy-i-spim-spokojno\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0423\u0441\u043a\u043e\u0440\u044f\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0441\u043f\u0438\u043c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Netflix \u2014 \u043b\u0438\u0434\u0435\u0440 \u0440\u044b\u043d\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0435\u043b\u0435\u0432\u0438\u0434\u0435\u043d\u0438\u044f \u2014.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/uskoryaem-internet-zaprosy-i-spim-spokojno\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-11T11:43:18+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-11T11:43:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Vi snabbar upp internetf\u00f6rfr\u00e5gningar och sover lugnt | ProHoster","description":"Netflix \u00e4r marknadsledare inom internet-tv.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/uskoryaem-internet-zaprosy-i-spim-spokojno","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0423\u0441\u043a\u043e\u0440\u044f\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0441\u043f\u0438\u043c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e | ProHoster","og:description":"Netflix \u2014 \u043b\u0438\u0434\u0435\u0440 \u0440\u044b\u043d\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0435\u043b\u0435\u0432\u0438\u0434\u0435\u043d\u0438\u044f \u2014.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/uskoryaem-internet-zaprosy-i-spim-spokojno","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-11T11:43:18+00:00","article:modified_time":"2020-06-11T11:43:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"84876","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 14:48:22","updated":"2022-09-27 23:34:06","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/84876","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=84876"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/84876\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/84877"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=84876"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=84876"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=84876"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}