Naucz się na moich błędach! Czego nauczyłem się budując aplikacje oparte o usługi PaaS w Azure. Vol. 5 – Azure Media Services

Ten wpis miał być jednym z pierwszych na blogu. O swoich przygodach z Azure Media Services po raz pierwszy opowiadałem na meetupie MAUG w wrześniu 2016. Nawet zachowały się slajdy z tego wydarzenia. Ale zacznijmy od początku…

Czym jest Azure Media Services?

Media Services to usługa o potężnych możliwościach w zakresie strumieniowania mediów trybie VoD oraz Live. Jeśli potrzebujesz na swojej stronie pokazywać filmy szkoleniowe albo reklamowe i chcesz w pełni zarządzać tym, gdzie i jak Twój film zostanie pokazany i w jakiej jakości, to znalazłeś usługę dla siebie. Przy okazji dostaniesz statystki takich zachowań jak wyłączenie dźwięku, zatrzymanie video czy przesuwanie strumienia do przodu czy w tył. Usługa ma też inne mega funkcje jak indeksowanie treści czy generowanie podpisów do filmów ale o tym, przy innej okazji.

Dotychczas udało mi się tę usługę wykorzystać w 3 różnych komercyjnych projektach, zawsze jako Video on Demand, nigdy Live. To przed mną. Jeśli jednak oglądałeś transmisję Olimpiady z Sochi czy z Vancouver to już wiesz, co można z taką usługą zrobić. Najlepsze demo usługi znajdziesz na stronie z oficjalnym odtwarzaczem filmów.

Jest jednak kilka nie oczywistości :>, które mogą Wam wybuchnąć w twarz i o tym jak zawsze u mnie. A więc będzie o wydajności kodowania, kasie, maksymalnym limicie jednostek i o dostarczeniu gotowej usługi dla biznesu. 

Zaczynamy!

1) Jednostki do kodowania materiału

Media Reserved Units czyli jednostki do konwersji materiału video są w 3 odmianach S1, S2 oraz S3. Pomogą Ci one jeśli chcesz dostosować swój materiał do tzw. Adaptive Streaming. Kiedy przeczytasz ten artykuł, dowiesz się, że różnią się wydajnością ale również tym, jaki materiał wideo mogą dla Ciebie przekodować. Oczywiście różny jest też koszt. S3 kosztuje 4 razy więcej niż S1 i 2 razy więcej niż S2. Szczegóły znajdziesz tu. Teoretycznie S3 jest też 4 razy bardziej wydajna ale… Jeśli twój materiał nie przekracza 1280×720 to niezależnie którą jednostkę wybierzesz, czas przetwarzania będzie podobny. Co więcej, taniej i szybciej wyjdzie jeśli weźmiesz więcej jednostek S1 niż rzucisz się na drogie jednostki s3. Szczególnie jeśli masz wiele pojedynczych filmów, które wymagają obróbki. 

2) Zmiana w cenniku

Od 1 stycznia 2017 zmieniono sposób pobierania opłat za jednostkę kodującą. I to jest BARDZO DOBRA WIADOMOŚĆ. Azure podaje cenę za godzinę działania jednostki ale obciąża Cię za każdą działającą minutę. Kiedyś opłata była pobierana z góry za cały dzień i co ciekawe, kiedy tego samego dnia używałeś najpierw jednostek S1 a potem S2 i tak zapłaciłeś za wszystkie. Tak było. Nie wracajmy do tej smutnej historii. Nowy model jest bardziej przejrzysty i bardziej chmurowy. Dlatego też, polecam Ci powołać wiele jednostek do „encodowania” jeśli rzeczywiście ich potrzebujesz a na koniec zadania ustawić 0. Może to zrobić z kodu (jest SDK dla .Net) lub REST API.

3) Skalowanie usługi

Maksymalna ilość jednostek dekodujących nie jest nieskończona. W jednym projekcie czekało mnie przekodowania 35000 filmów w dwa dni. Jakie było moje zdziwienie, kiedy okazało się, że dla S1 i S2 domyślny limit to 20, dla S3 to 10. Zarówno w portalu jak i przez wywołanie REST API. Żeby to zwiększyć, wystarczy napisać do supportu i zrobią to dla nas. Ja od razu ustawiłem 100 ale trwało to prawie dzień. Jeśli planujesz dużą akcję  polecam Ci napisać do supportu wcześniej i powiedzieć w jakim DC i jaką ilość jednostek potrzebujesz. Support tylko zwiększa limit, więc nie musisz od razu i na zawsze z nich wszystkich korzystać i za nie płacić. Pamiętaj: jedna jednostka może dla Ciebie realizować tylko jedno zadania w danym czasie. 

4) Własna domena

Jeszcze 9 miesięcy temu mogłeś mieć link do strumieniowania z własną domenę ale po HTTP. Teraz zarówno własna domena jak i załadowanie certyfikatu SSL jest możliwe… ale… Dodawania własnej domeny jest możliwe ale wcale nie jest procesem „automagicznym” i „samodziałającym”. Żeby to zrealizować potrzebujesz CDN (co akurat polecam zawsze) i musisz mieć dostęp do osoby, która w WHOIS jest wpisany jako rejestrujący. Więcej znajdziesz w opisie poniżej i w linku o endpoint’ach. Taki klimat. Będzie prościej 🙂

5) Model kosztowy

Model kosztowy usługi nie jest najprostszy na świecie, szczególnie wtedy, kiedy dopiero zaczynasz z mediami. Microsoft idzie w dobrą stronę bo model jest coraz prostszy. Koszt zależy od kilku czynników. Po pierwsze Live Streaming to oddzielna kategoria problemu:) Jeśli jednak jest to VoD wtedy koszt zależy od jakości filmu, tego ile osób go będzie oglądać, a jeśli dodatkowo masz włączony adaptive streaming, to od jakości łącz, które mają twoi klienci. Lepiej zapytać kogoś, kto to potrafi ocenić. Przy strumieniowanie mediów, o ile nie masz specyficznych wymagań, dodanie CDN jest zawsze dobrym pomysłem, tym bardziej, że jest on tani i rozliczany tylko za użycie GB.

Ponieważ na sieci znajdziesz kilka nieoficjalny i nieaktualnych już kalkulatorów, napisz do mnie jakie masz wymagania, pomogę Ci to policzyć.

A…jeśli ktoś Ci mówi, ze Media Services jako usługa jest droga, to zapytaj go, czy jego dostawca na pewno oferuje mu licencje na szereg kodeków, które są przez niego używane. W ramach Azure Media Services te licencje masz wliczone w cenę usługi.

5 krótkich porad już za nami. Będzie drugi wpis o Media Services z tej serii, gdzie opowiem, jak dostarczyć „prawie gotową” usługę dla biznesu.

Ten wpis został opublikowany w kategorii LessonsLearned i oznaczony tagami , , , , , . Dodaj zakładkę do bezpośredniego odnośnika.