Kodėl Apple renginio transliacija striginėjo
Dažnas, stebėjęs Apple iPhone 6 ir Apple Watch renginio transliaciją internetu visaip maigė savo įrenginius stengdamasis suprasti kodėl rugsėjo 9 vykusio Apple renginio transliacija striginėja, nutrūksta rodydama klaidos pranešimą, o kai pagaliau vaizdas pasirodo – kokybė šokinėja.
Tiesioginė, rugsėjo 9 dieną vykusio Apple renginio transliacija buvo katastrofiška nuo pačios jos pradžios. Daugelis iš pat pradžių negalėdamas patikėti, kad šitaip gali nutikti Apple bandė kaltinti savo internetą, įrenginius ir „šokinėjo“ nuo Apple TV, prie iPhone ar iPad ir Mac’o visais būdais stengdamasis išgirsti visus renginio metu pasakytus žodžius. Bet veltui - visuose įrenginiuose ir visiems pasaulio vartotojams renginio transliacija buvo nekokybiška.
Antroji į galvą šaunanti mintis buvo, kad trukdžiai gali vykti dėl nepakankamo tinklų pralaidumo ir vertė kurti piktus epitetus Akamai adresu.
Pradėjus gilintis į problemą ir pasidairius po Apple renginio transliacijai skirtos svetainės kodą pasirodė, kad problema greičiausiai yra tame, kad Apple neteisingai sukonfigūravo Amazon S3 paslaugos pajėgumus.
Priešingai, nei ankstesnių savo renginių tiesioginių transliacijų internetu atvejais, šį kartą Apple nusprendė savo, transliacijai skirtame apple.com svetainės puslapyje, patalpinti JSON (JavaScript Object Notation) kodą, kurio pagalba puslapiui buvo suteikta daugiau interaktyvumo - žemiau video tranalsiacijos buvo rodomos Twitter žinutės susijusios su renginiu. Šito pasekoje puslapis buvo verčiamas persikrauti kas kelias milisekundes ir tai sukūrė problemą, dėl kurios apple.com svetainė tapdavo neprieinama.
Apple sprendimas panaudoti JSON kodą puslapio informaciją padarė netinkamą kešuoti. Anksčiau Apple visada naudojo Akamai kešavimo paslaugas, tačiau šį kartą, galimybės kešuoti informaciją Akamai neturėjo. Kadangi Apple renginio video įdiegė tiesiogiai į internetinį puslapį, bet kokios problemos darančios įtaką puslapio rodymo našumui, tiesiogiai veikė ir to puslapio pagalba transliuojamą video medžiagą.
Dėl nepaprastai dažnų, JSON kodo inicijuotų puslapio informacijos atnaujinimo užklausų video medžiagos kokybė automatiškai prastėjo (kokybė automatiškai parenkama pagal prisijungimo prie transliacijos greitį). Kalbant apie vertimą, kuris buvo girdimas pirmas 27 transliacijos minutes tai čia visiškai Apple kaltė. Aiškiai kažkas iš Apple, neteisingai sureguliavo pirminio ir atsarginio transliacijos srauto enkoderį, nes buvo girdimas ne tik papildomas vertimas, bet ir garsas nebuvo susinchronizuotas su vaizdu. Problemos šalinimu buvo užsiimta jau prasidėjus transliacijai ir, matyt, enkoderiai buvo ne kartą perkraunami, nes tuo metu ekrane pasirodydavo „could not load movie“ ir „you don’t have permission to access“ klaidos.
Pasižvalgę po renginio transliacijai skirto svetainės puslapio meta-duomenis pamatytumėte, kad Apple interaktyvių transliacijos elementų tiekimui naudojo Amazon S3 debesų paslaugą ir greičiausiai kešavimas buvo nepaprastai trumas arba jo nebuvo visai. Kas link Akamai, tai panašu, kad tai buvo vienintelis Apple naudotas CDN, nes traceroute iš skirtingų pasaulio šalių rodė, kad Apple patikėjo visą transliacijos srautą vienintelei Akamai, o kadangi pastaroji negalėjo Apple informacijos kešuoti - Apple svetainė gavo nepaprastai didelį krūvį. Visos CDN architektūros yra pagrįstos informacijos kešavimu, kurio šiuo atveju, Akamai negalėjo atlikti.
Žemiau pateiktas Cedexis grafike atvaizduotas Akamai paslaugų prieinamumas Rytų Europoje Apple renginio metu. Nieko stebėtino, kad paslaugos prieinamumas buvo sumažėjęs ir 98,5% paslaugos srauto buvo užimta, nes nebuvo naudojamas kešavimas.