SlideShare una empresa de Scribd logo
1 de 16
TV i video w Internecie Jak zrobiliśmy CDNaby hostować pliki wideo i transmisje live. SimpleStorage to system dystrybucji treści (CDN) stworzony przez Divante i IMAGIN IT
Plan prezentacji Nasza motywacja Trochę o tym co chcieliśmy osiągnąć Jak to zrobiliśmy? projekt i założenia węzły edge i origin redirector modelowanie ruchu (mądrze brzmi  ) replikacja i zarządzanie plikami statystyki live-streaming Co już działa,  … a co jeszcze nie i jakie są plany
Nasza motywacja Zrobiliśmy wcześniej darmowy videosteam.pl i już wiedzieliśmy, że wideo w Internecie nie jest takie proste  Stanęliśmy przed szansą zrobienia dużego portalu wideo - TiVi.pl Chcieliśmy, po ludzku, zrobić coś ciekawego
Co chcieliśmy osiągnąć Sieć dystrybucji (edge) i storage (origin) w oparciu o zwykłe PCty – jeśli się da - zachowanie niskich cen dla klientów Skuteczne rozdzielanie ruchu, dopasowywanie trasy do sieci klienta – na ile się da + wykorzystanie wielu datacenter Replikację danych zamiast backupów +  automatyczne wyłączanie zepsutych serwerów i zastępowanie ich nowymi Obsługę nie tylko plików statycznych ale też transmisji na żywo Chcieliśmy, żeby usługa była zgodna ze standardami (np. HTTP, WebDAV, RTMP …) – dzięki czemu łatwiejsza w wykorzystaniu Dlaczego zwykłe PCty? http://www.manageability.org/blog/stuff/economics-google-hardware-infrastructure
Gdzie się tylko da zapewnić redundancję Użyć sprawdzonego oprogramowania i je ew. przerobić/dostosować Varnish, nginx, Apache, MogileFS Dopisać tylko brakujące komponenty  im więcej kodu, tym więcej błędów  redirector,  zarządzanie plikami (WebDAV), statystyki, bilingowanie Java, Python + WSGI - dopiero gdy będzie trzeba kluczowe elementy przepisać w C Założenia
Projekt
Węzły edge i origin Postanowiliśmy rozdzielić – może być mniej węzłów storage (origin) – ruch od/do klientów końcowych tu nie dociera, tylko do edge, które są prostsze i może ich być więcej Węzły edge działają jako proxy korzystając z przerobionego varnisha i nginxa pobierając dane z originów potrzebny był soft który przekieruje użytkownika na działający i nieprzeciążony węzeł Na originach stosujemy nginxa i MogileFS który replikuje dane automatycznie odnawia kopie – i robi dużo dobrej roboty,  potrzebny był soft do zarządzania plikami dla użytkownika Początkowo węzły edge i origin to mogą być te same maszyny
Redirector Przyjmuje wszystkie żądania odczytu (pliki i live) na tzw. „klatę” ;) przekierowania HTTP – szybsza aktualizacja niż DNS, prostsze niż BGP – przy live specjalna obsługa w playerze Ma wiedzę o stanie węzłów edge – stan, obciążenie, limit transferu, obciążenie łącza, load systemu i ich umiejscowieniu (datacenter/ASN/sieć) Ma wiedzę o sieciach klientów i ich „odległościach” (ping, hops, ilość ASNów) od DC – wie z której sieci przychodzi klient po adresie IP na tej podstawie może wybrać najkorzystniejszy względem klienta serwer i tam przekierować jego zapytania Działa na minimum 2 węzłach (+ sprzętowy loadbalancer dzielący ruch na redirectory), intensywnie korzysta z cache i jest napisany w  pythonie + wsgi – udało się nam osiągnąć ok. 2tys. req/s na serwer
Modelowanie ruchu Redirect HTTP 301 Główne zadanie redirectora Dla każdego żądania bierze adres klienta i sprawdza z której sieci jest klient sprawdza wagę/odległość tej sieci od poszczególnych DC i wybiera najkorzystniejsze – wagi są aktualizowane co 5 min. Przez osobne aplikacje uruchomione na węzłach, dodatkowe wagi do ręcznego modelowania ruchu wg. polityk sieciowych bierzemy pod uwagehopy, trasę / ilość ASNów  po drodze (bardziej istotne), początkowo liczyliśmy odległości od poszczególnych serwerów ale wystarczy od DC wybiera grupę serwerów obsługujących dane żądanie (livestreaming, pseudo-streaming, pliki statyczne/buforowane wideo) wybiera najmniej obciążony serwer z tej grupy (losowo z wagami) i podaje go klientowi + keszuje na kilkadziesiąt sekund GET /V/plik.flv Mój IP: 91.94.61.248 GET /V/plik.flv W=1.4 W=0.9 W=0.2 DC1 DC1 DC2
Replikacja i zarządzanie Replikację zapewnia MogileFS – każdy plik musi być w 2-3 replikach (różne klasy replikacji) – jeśli wypada węzeł, plik jest replikowany na inne serwery Zarządzanie plikami – napisaliśmy oprogramowanie w Pythonie dla zapewnienia interfejsu WebDAV tzw. Mostek. W przyszłości chcielibyśmy dodać wsparcie dla S3 API. Mostek mediuje między klientem a MogileFSTrackeremi interfejsem HTTP MogileFS (u nas nginx) Mostek zabezpiecza też pliki – udostępnia węzłom brzegowym informacje czy dane pliki są dostępne (tokeny, wygasanie kont klientów – w przyszłości prawa dostępu do plików) Mostek działa na dwóch serwerach (+ sprzętowy loadbalancer)  i bazy MySQL (master + kilka slave) Mostek oprócz redirectora jest kluczowym elementem, testujemy go automatycznie skryptami wykonującymi podstawowe operacje przez curla  zaraz po deployu (przez SVNa)
Replikacja i zarządzanie Baza danych  o plikach Master + Slave Klient wgrywa, listuje, usuwa pliki przez WebDAV Mostek węzły origin/storage obsługiwane przez MogileFS tackeryMogileFS dbają o replikację plików i udzielają informacji gdzie  są dane pliki węzły edge buforują pliki edge pyta z którego origina ma pobrać plik
Statystyki Logów jest bardzo dużo (na razie po ok. 50req/s na serwer – wszystko idzie do access logów) – prosty map/reduce Zbieramy statystyki z serwerów brzegowych i mostka – zużycie dla klienta (transfer, storage, hity), zużycie streamów (ilość emisji, ilość klientów) Musieliśmy napisać kilka programików: Statystyki są wstępnie przetwarzane przez logalyzer(przy rotowaniu logów)i w formacie CSV wgrywane na SimpleStorage logcollector ściąga paczki z logami i wrzuca hurtem do bazy, statscalc agreguje dane w podsumy, niezagregowane dane usuwamy po czasie, W efekcie - na stronie użytkownik widzi zmiany w statystykach z dokładnością do godziny
Livestreaming Działa już produkcyjnie Zgodny z RTMP/RTMPT/RTMPE– gotowy serwer w Javie ze zmianami (statystyki) zainstalowany na wszystkich węzłach  Rozdzielanie ruchu zrobiliśmy za pomocą proxy  na poziomie aplikacji wideo (kodzik w Javie rozsyła wideo z serwera do którego nadaje klient do serwerów docelowych – możemy dynamicznie wybierać do których dla którego klienta) Dodaliśmy autoryzację nadawców (tokeny – obsługiwane przez Mostek) … oraz oglądających (tokeny – mogą być obsługiwane indywidualnie przez webservice’y danych usług – np. VoD) Redirector obsługuje przekierowania do streamingu (wsparcie w playerze było konieczne) – RTMP nie obsługuje przekierowań Dobrze byłoby opakowywać też w HTTP – działa wtedy m.in. buforowanie, nie ma problemów z firewallami chcielibyśmy wkrótce dodać obsługę smooth-streamingu i streamingu na iphona (mpeg-ts) – możemy to zrobić przez transkodowanie w locie (prowadziliśmy próby) lub wydzielone serwery typu Wowza, IIS – minusami jest niejednorodne środowisko
Livestreaming klient z encoderem – np. FMLE  nadaje strumienie do primary i backup węzły odbierają sygnał od  nadawcy i publikują go do węzłów edge odbiorcy pobierają sygnał z węzłów edge
Plany rozwoju? uprawnienia do plików optymalizacja i usprawnienie algorytmu modelowania ruchu streaming przez HTTP i smooth-streaming streaming na iphone’a wstawienie kolejnych węzłów – m.in. do PL-IX rozbudowa i przyspieszenie statystyk …
Dziękuję za uwagę! Pytania? pkarwatka@divante.pl Wersja testowa SimpleStorage: http://simplestorage.pl

Más contenido relacionado

La actualidad más candente

Jak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITJak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITGOG.com dev team
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danychProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danychAntoni Orfin
 
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PROIDEA
 
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...PROIDEA
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Divante
 
PLNOG 18 - Marcin Motylski - Budowa wirtualnego Data Center
PLNOG 18 - Marcin Motylski - Budowa wirtualnego Data CenterPLNOG 18 - Marcin Motylski - Budowa wirtualnego Data Center
PLNOG 18 - Marcin Motylski - Budowa wirtualnego Data CenterPROIDEA
 
PLNOG16: Microsoft Azure dla Inżynierów Sieciowych, Mirosław Burnejko
PLNOG16: Microsoft Azure dla Inżynierów Sieciowych, Mirosław BurnejkoPLNOG16: Microsoft Azure dla Inżynierów Sieciowych, Mirosław Burnejko
PLNOG16: Microsoft Azure dla Inżynierów Sieciowych, Mirosław BurnejkoPROIDEA
 
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...PROIDEA
 
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GOG.com dev team
 

La actualidad más candente (9)

Jak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITJak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com IT
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danychProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych
 
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
 
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13
 
PLNOG 18 - Marcin Motylski - Budowa wirtualnego Data Center
PLNOG 18 - Marcin Motylski - Budowa wirtualnego Data CenterPLNOG 18 - Marcin Motylski - Budowa wirtualnego Data Center
PLNOG 18 - Marcin Motylski - Budowa wirtualnego Data Center
 
PLNOG16: Microsoft Azure dla Inżynierów Sieciowych, Mirosław Burnejko
PLNOG16: Microsoft Azure dla Inżynierów Sieciowych, Mirosław BurnejkoPLNOG16: Microsoft Azure dla Inżynierów Sieciowych, Mirosław Burnejko
PLNOG16: Microsoft Azure dla Inżynierów Sieciowych, Mirosław Burnejko
 
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...
 
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
 

Similar a TV i video w Internecie

PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimyPLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimyPROIDEA
 
Projekcik Routery2
Projekcik Routery2Projekcik Routery2
Projekcik Routery2arkulik
 
The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )GOG.com dev team
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )GOG.com dev team
 
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Redge Technologies
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
Przemysław Frasunek - Oprogramowanie do budowy rozproszonych systemów dystryb...
Przemysław Frasunek - Oprogramowanie do budowy rozproszonych systemów dystryb...Przemysław Frasunek - Oprogramowanie do budowy rozproszonych systemów dystryb...
Przemysław Frasunek - Oprogramowanie do budowy rozproszonych systemów dystryb...PROIDEA
 
Marcin Motylski - Globalna Chmura Obliczeniowa
Marcin Motylski - Globalna Chmura ObliczeniowaMarcin Motylski - Globalna Chmura Obliczeniowa
Marcin Motylski - Globalna Chmura ObliczeniowaPROIDEA
 
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPROIDEA
 
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITaWersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITamarekmisztal
 
PLNOG 21: Łukasz Trąbiński, Konrad Pilch - Jak_sterować_ogólnopolską_siecią_C...
PLNOG 21: Łukasz Trąbiński, Konrad Pilch - Jak_sterować_ogólnopolską_siecią_C...PLNOG 21: Łukasz Trąbiński, Konrad Pilch - Jak_sterować_ogólnopolską_siecią_C...
PLNOG 21: Łukasz Trąbiński, Konrad Pilch - Jak_sterować_ogólnopolską_siecią_C...PROIDEA
 
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...Laravel Poland MeetUp
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwLuke Adamczewski
 
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Polcode
 
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...PROIDEA
 
Jak wyglada monitoring w PLIX
Jak wyglada monitoring w PLIXJak wyglada monitoring w PLIX
Jak wyglada monitoring w PLIXKamil Grabowski
 
Noc informatyka
Noc informatykaNoc informatyka
Noc informatykaOnetIT
 
Sciagamy z netu 2
Sciagamy z netu 2Sciagamy z netu 2
Sciagamy z netu 2Gregolek
 
PLNOG15: Security and applications control in Next-Gen Data Center - Seweryn ...
PLNOG15: Security and applications control in Next-Gen Data Center - Seweryn ...PLNOG15: Security and applications control in Next-Gen Data Center - Seweryn ...
PLNOG15: Security and applications control in Next-Gen Data Center - Seweryn ...PROIDEA
 

Similar a TV i video w Internecie (20)

PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimyPLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
 
Projekcik Routery2
Projekcik Routery2Projekcik Routery2
Projekcik Routery2
 
The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )
 
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Przemysław Frasunek - Oprogramowanie do budowy rozproszonych systemów dystryb...
Przemysław Frasunek - Oprogramowanie do budowy rozproszonych systemów dystryb...Przemysław Frasunek - Oprogramowanie do budowy rozproszonych systemów dystryb...
Przemysław Frasunek - Oprogramowanie do budowy rozproszonych systemów dystryb...
 
Usługi sieci internet cz iiii 2012
Usługi sieci internet cz iiii   2012Usługi sieci internet cz iiii   2012
Usługi sieci internet cz iiii 2012
 
Marcin Motylski - Globalna Chmura Obliczeniowa
Marcin Motylski - Globalna Chmura ObliczeniowaMarcin Motylski - Globalna Chmura Obliczeniowa
Marcin Motylski - Globalna Chmura Obliczeniowa
 
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
 
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITaWersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
 
PLNOG 21: Łukasz Trąbiński, Konrad Pilch - Jak_sterować_ogólnopolską_siecią_C...
PLNOG 21: Łukasz Trąbiński, Konrad Pilch - Jak_sterować_ogólnopolską_siecią_C...PLNOG 21: Łukasz Trąbiński, Konrad Pilch - Jak_sterować_ogólnopolską_siecią_C...
PLNOG 21: Łukasz Trąbiński, Konrad Pilch - Jak_sterować_ogólnopolską_siecią_C...
 
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
 
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
 
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
 
Jak wyglada monitoring w PLIX
Jak wyglada monitoring w PLIXJak wyglada monitoring w PLIX
Jak wyglada monitoring w PLIX
 
Noc informatyka
Noc informatykaNoc informatyka
Noc informatyka
 
Sciagamy z netu 2
Sciagamy z netu 2Sciagamy z netu 2
Sciagamy z netu 2
 
PLNOG15: Security and applications control in Next-Gen Data Center - Seweryn ...
PLNOG15: Security and applications control in Next-Gen Data Center - Seweryn ...PLNOG15: Security and applications control in Next-Gen Data Center - Seweryn ...
PLNOG15: Security and applications control in Next-Gen Data Center - Seweryn ...
 

Más de Divante

How to spin off the product from the agency
How to spin off the product from the agencyHow to spin off the product from the agency
How to spin off the product from the agencyDivante
 
I love-marketing - Technologie w ktore warto inwestowac w eCommerce
I love-marketing - Technologie w ktore warto inwestowac w eCommerceI love-marketing - Technologie w ktore warto inwestowac w eCommerce
I love-marketing - Technologie w ktore warto inwestowac w eCommerceDivante
 
Zaskakujące czynniki porażek we wdrażaniu Omnichanel i eCommerce
Zaskakujące czynniki porażek we wdrażaniu Omnichanel i eCommerce Zaskakujące czynniki porażek we wdrażaniu Omnichanel i eCommerce
Zaskakujące czynniki porażek we wdrażaniu Omnichanel i eCommerce Divante
 
Sprzedaż rozwiązuje wszystkie problemy
Sprzedaż rozwiązuje wszystkie problemySprzedaż rozwiązuje wszystkie problemy
Sprzedaż rozwiązuje wszystkie problemyDivante
 
Wejście do Omnichannel - 5 czynników sukcesu
Wejście do Omnichannel - 5 czynników sukcesuWejście do Omnichannel - 5 czynników sukcesu
Wejście do Omnichannel - 5 czynników sukcesuDivante
 
Wysoka skalowalność systemu e-commerce na przykładzie magento
Wysoka skalowalność systemu e-commerce na przykładzie magentoWysoka skalowalność systemu e-commerce na przykładzie magento
Wysoka skalowalność systemu e-commerce na przykładzie magentoDivante
 
Wzorce projektowe w Magento
Wzorce projektowe w MagentoWzorce projektowe w Magento
Wzorce projektowe w MagentoDivante
 
Agregacja i analiza logów
Agregacja i analiza logówAgregacja i analiza logów
Agregacja i analiza logówDivante
 
Code review
Code reviewCode review
Code reviewDivante
 
CDP.pl - tech case study by Divante
CDP.pl - tech case study by DivanteCDP.pl - tech case study by Divante
CDP.pl - tech case study by DivanteDivante
 
Kongres eHandlu - Przyszłość e-Commerce
Kongres eHandlu - Przyszłość e-CommerceKongres eHandlu - Przyszłość e-Commerce
Kongres eHandlu - Przyszłość e-CommerceDivante
 
Jak mierzyć e-Commerce - Big Data w e-Commerce
Jak mierzyć e-Commerce - Big Data w e-CommerceJak mierzyć e-Commerce - Big Data w e-Commerce
Jak mierzyć e-Commerce - Big Data w e-CommerceDivante
 
Sprzeda zagraniczna case study funmedia-bart-omiej postek
Sprzeda  zagraniczna case study funmedia-bart-omiej postekSprzeda  zagraniczna case study funmedia-bart-omiej postek
Sprzeda zagraniczna case study funmedia-bart-omiej postekDivante
 
Sprzeda zagraniczna case study divante-tomasz karwatka
Sprzeda  zagraniczna case study divante-tomasz karwatkaSprzeda  zagraniczna case study divante-tomasz karwatka
Sprzeda zagraniczna case study divante-tomasz karwatkaDivante
 
Sprzeda saa s via facebook-catvertiser_mi-osz belter
Sprzeda  saa s via facebook-catvertiser_mi-osz belterSprzeda  saa s via facebook-catvertiser_mi-osz belter
Sprzeda saa s via facebook-catvertiser_mi-osz belterDivante
 
Saa s sales funnel brand24_mick griffin
Saa s sales funnel brand24_mick griffinSaa s sales funnel brand24_mick griffin
Saa s sales funnel brand24_mick griffinDivante
 
Predictable revenue w praktyce usability tools_jakub królikowski
Predictable revenue w praktyce usability tools_jakub królikowskiPredictable revenue w praktyce usability tools_jakub królikowski
Predictable revenue w praktyce usability tools_jakub królikowskiDivante
 
Jak eskportuj polskie spó-ki technol right-hello_bartosz majewski
Jak eskportuj  polskie spó-ki technol right-hello_bartosz majewskiJak eskportuj  polskie spó-ki technol right-hello_bartosz majewski
Jak eskportuj polskie spó-ki technol right-hello_bartosz majewskiDivante
 
10 b -dów przy wprowadzaniu e commerce na rynki zagr-goralewicz.co_bartosz gó...
10 b -dów przy wprowadzaniu e commerce na rynki zagr-goralewicz.co_bartosz gó...10 b -dów przy wprowadzaniu e commerce na rynki zagr-goralewicz.co_bartosz gó...
10 b -dów przy wprowadzaniu e commerce na rynki zagr-goralewicz.co_bartosz gó...Divante
 
Quick Wins w e-Commerce
Quick Wins w e-CommerceQuick Wins w e-Commerce
Quick Wins w e-CommerceDivante
 

Más de Divante (20)

How to spin off the product from the agency
How to spin off the product from the agencyHow to spin off the product from the agency
How to spin off the product from the agency
 
I love-marketing - Technologie w ktore warto inwestowac w eCommerce
I love-marketing - Technologie w ktore warto inwestowac w eCommerceI love-marketing - Technologie w ktore warto inwestowac w eCommerce
I love-marketing - Technologie w ktore warto inwestowac w eCommerce
 
Zaskakujące czynniki porażek we wdrażaniu Omnichanel i eCommerce
Zaskakujące czynniki porażek we wdrażaniu Omnichanel i eCommerce Zaskakujące czynniki porażek we wdrażaniu Omnichanel i eCommerce
Zaskakujące czynniki porażek we wdrażaniu Omnichanel i eCommerce
 
Sprzedaż rozwiązuje wszystkie problemy
Sprzedaż rozwiązuje wszystkie problemySprzedaż rozwiązuje wszystkie problemy
Sprzedaż rozwiązuje wszystkie problemy
 
Wejście do Omnichannel - 5 czynników sukcesu
Wejście do Omnichannel - 5 czynników sukcesuWejście do Omnichannel - 5 czynników sukcesu
Wejście do Omnichannel - 5 czynników sukcesu
 
Wysoka skalowalność systemu e-commerce na przykładzie magento
Wysoka skalowalność systemu e-commerce na przykładzie magentoWysoka skalowalność systemu e-commerce na przykładzie magento
Wysoka skalowalność systemu e-commerce na przykładzie magento
 
Wzorce projektowe w Magento
Wzorce projektowe w MagentoWzorce projektowe w Magento
Wzorce projektowe w Magento
 
Agregacja i analiza logów
Agregacja i analiza logówAgregacja i analiza logów
Agregacja i analiza logów
 
Code review
Code reviewCode review
Code review
 
CDP.pl - tech case study by Divante
CDP.pl - tech case study by DivanteCDP.pl - tech case study by Divante
CDP.pl - tech case study by Divante
 
Kongres eHandlu - Przyszłość e-Commerce
Kongres eHandlu - Przyszłość e-CommerceKongres eHandlu - Przyszłość e-Commerce
Kongres eHandlu - Przyszłość e-Commerce
 
Jak mierzyć e-Commerce - Big Data w e-Commerce
Jak mierzyć e-Commerce - Big Data w e-CommerceJak mierzyć e-Commerce - Big Data w e-Commerce
Jak mierzyć e-Commerce - Big Data w e-Commerce
 
Sprzeda zagraniczna case study funmedia-bart-omiej postek
Sprzeda  zagraniczna case study funmedia-bart-omiej postekSprzeda  zagraniczna case study funmedia-bart-omiej postek
Sprzeda zagraniczna case study funmedia-bart-omiej postek
 
Sprzeda zagraniczna case study divante-tomasz karwatka
Sprzeda  zagraniczna case study divante-tomasz karwatkaSprzeda  zagraniczna case study divante-tomasz karwatka
Sprzeda zagraniczna case study divante-tomasz karwatka
 
Sprzeda saa s via facebook-catvertiser_mi-osz belter
Sprzeda  saa s via facebook-catvertiser_mi-osz belterSprzeda  saa s via facebook-catvertiser_mi-osz belter
Sprzeda saa s via facebook-catvertiser_mi-osz belter
 
Saa s sales funnel brand24_mick griffin
Saa s sales funnel brand24_mick griffinSaa s sales funnel brand24_mick griffin
Saa s sales funnel brand24_mick griffin
 
Predictable revenue w praktyce usability tools_jakub królikowski
Predictable revenue w praktyce usability tools_jakub królikowskiPredictable revenue w praktyce usability tools_jakub królikowski
Predictable revenue w praktyce usability tools_jakub królikowski
 
Jak eskportuj polskie spó-ki technol right-hello_bartosz majewski
Jak eskportuj  polskie spó-ki technol right-hello_bartosz majewskiJak eskportuj  polskie spó-ki technol right-hello_bartosz majewski
Jak eskportuj polskie spó-ki technol right-hello_bartosz majewski
 
10 b -dów przy wprowadzaniu e commerce na rynki zagr-goralewicz.co_bartosz gó...
10 b -dów przy wprowadzaniu e commerce na rynki zagr-goralewicz.co_bartosz gó...10 b -dów przy wprowadzaniu e commerce na rynki zagr-goralewicz.co_bartosz gó...
10 b -dów przy wprowadzaniu e commerce na rynki zagr-goralewicz.co_bartosz gó...
 
Quick Wins w e-Commerce
Quick Wins w e-CommerceQuick Wins w e-Commerce
Quick Wins w e-Commerce
 

TV i video w Internecie

  • 1. TV i video w Internecie Jak zrobiliśmy CDNaby hostować pliki wideo i transmisje live. SimpleStorage to system dystrybucji treści (CDN) stworzony przez Divante i IMAGIN IT
  • 2. Plan prezentacji Nasza motywacja Trochę o tym co chcieliśmy osiągnąć Jak to zrobiliśmy? projekt i założenia węzły edge i origin redirector modelowanie ruchu (mądrze brzmi  ) replikacja i zarządzanie plikami statystyki live-streaming Co już działa, … a co jeszcze nie i jakie są plany
  • 3. Nasza motywacja Zrobiliśmy wcześniej darmowy videosteam.pl i już wiedzieliśmy, że wideo w Internecie nie jest takie proste  Stanęliśmy przed szansą zrobienia dużego portalu wideo - TiVi.pl Chcieliśmy, po ludzku, zrobić coś ciekawego
  • 4. Co chcieliśmy osiągnąć Sieć dystrybucji (edge) i storage (origin) w oparciu o zwykłe PCty – jeśli się da - zachowanie niskich cen dla klientów Skuteczne rozdzielanie ruchu, dopasowywanie trasy do sieci klienta – na ile się da + wykorzystanie wielu datacenter Replikację danych zamiast backupów + automatyczne wyłączanie zepsutych serwerów i zastępowanie ich nowymi Obsługę nie tylko plików statycznych ale też transmisji na żywo Chcieliśmy, żeby usługa była zgodna ze standardami (np. HTTP, WebDAV, RTMP …) – dzięki czemu łatwiejsza w wykorzystaniu Dlaczego zwykłe PCty? http://www.manageability.org/blog/stuff/economics-google-hardware-infrastructure
  • 5. Gdzie się tylko da zapewnić redundancję Użyć sprawdzonego oprogramowania i je ew. przerobić/dostosować Varnish, nginx, Apache, MogileFS Dopisać tylko brakujące komponenty im więcej kodu, tym więcej błędów  redirector, zarządzanie plikami (WebDAV), statystyki, bilingowanie Java, Python + WSGI - dopiero gdy będzie trzeba kluczowe elementy przepisać w C Założenia
  • 7. Węzły edge i origin Postanowiliśmy rozdzielić – może być mniej węzłów storage (origin) – ruch od/do klientów końcowych tu nie dociera, tylko do edge, które są prostsze i może ich być więcej Węzły edge działają jako proxy korzystając z przerobionego varnisha i nginxa pobierając dane z originów potrzebny był soft który przekieruje użytkownika na działający i nieprzeciążony węzeł Na originach stosujemy nginxa i MogileFS który replikuje dane automatycznie odnawia kopie – i robi dużo dobrej roboty, potrzebny był soft do zarządzania plikami dla użytkownika Początkowo węzły edge i origin to mogą być te same maszyny
  • 8. Redirector Przyjmuje wszystkie żądania odczytu (pliki i live) na tzw. „klatę” ;) przekierowania HTTP – szybsza aktualizacja niż DNS, prostsze niż BGP – przy live specjalna obsługa w playerze Ma wiedzę o stanie węzłów edge – stan, obciążenie, limit transferu, obciążenie łącza, load systemu i ich umiejscowieniu (datacenter/ASN/sieć) Ma wiedzę o sieciach klientów i ich „odległościach” (ping, hops, ilość ASNów) od DC – wie z której sieci przychodzi klient po adresie IP na tej podstawie może wybrać najkorzystniejszy względem klienta serwer i tam przekierować jego zapytania Działa na minimum 2 węzłach (+ sprzętowy loadbalancer dzielący ruch na redirectory), intensywnie korzysta z cache i jest napisany w pythonie + wsgi – udało się nam osiągnąć ok. 2tys. req/s na serwer
  • 9. Modelowanie ruchu Redirect HTTP 301 Główne zadanie redirectora Dla każdego żądania bierze adres klienta i sprawdza z której sieci jest klient sprawdza wagę/odległość tej sieci od poszczególnych DC i wybiera najkorzystniejsze – wagi są aktualizowane co 5 min. Przez osobne aplikacje uruchomione na węzłach, dodatkowe wagi do ręcznego modelowania ruchu wg. polityk sieciowych bierzemy pod uwagehopy, trasę / ilość ASNów po drodze (bardziej istotne), początkowo liczyliśmy odległości od poszczególnych serwerów ale wystarczy od DC wybiera grupę serwerów obsługujących dane żądanie (livestreaming, pseudo-streaming, pliki statyczne/buforowane wideo) wybiera najmniej obciążony serwer z tej grupy (losowo z wagami) i podaje go klientowi + keszuje na kilkadziesiąt sekund GET /V/plik.flv Mój IP: 91.94.61.248 GET /V/plik.flv W=1.4 W=0.9 W=0.2 DC1 DC1 DC2
  • 10. Replikacja i zarządzanie Replikację zapewnia MogileFS – każdy plik musi być w 2-3 replikach (różne klasy replikacji) – jeśli wypada węzeł, plik jest replikowany na inne serwery Zarządzanie plikami – napisaliśmy oprogramowanie w Pythonie dla zapewnienia interfejsu WebDAV tzw. Mostek. W przyszłości chcielibyśmy dodać wsparcie dla S3 API. Mostek mediuje między klientem a MogileFSTrackeremi interfejsem HTTP MogileFS (u nas nginx) Mostek zabezpiecza też pliki – udostępnia węzłom brzegowym informacje czy dane pliki są dostępne (tokeny, wygasanie kont klientów – w przyszłości prawa dostępu do plików) Mostek działa na dwóch serwerach (+ sprzętowy loadbalancer) i bazy MySQL (master + kilka slave) Mostek oprócz redirectora jest kluczowym elementem, testujemy go automatycznie skryptami wykonującymi podstawowe operacje przez curla zaraz po deployu (przez SVNa)
  • 11. Replikacja i zarządzanie Baza danych o plikach Master + Slave Klient wgrywa, listuje, usuwa pliki przez WebDAV Mostek węzły origin/storage obsługiwane przez MogileFS tackeryMogileFS dbają o replikację plików i udzielają informacji gdzie są dane pliki węzły edge buforują pliki edge pyta z którego origina ma pobrać plik
  • 12. Statystyki Logów jest bardzo dużo (na razie po ok. 50req/s na serwer – wszystko idzie do access logów) – prosty map/reduce Zbieramy statystyki z serwerów brzegowych i mostka – zużycie dla klienta (transfer, storage, hity), zużycie streamów (ilość emisji, ilość klientów) Musieliśmy napisać kilka programików: Statystyki są wstępnie przetwarzane przez logalyzer(przy rotowaniu logów)i w formacie CSV wgrywane na SimpleStorage logcollector ściąga paczki z logami i wrzuca hurtem do bazy, statscalc agreguje dane w podsumy, niezagregowane dane usuwamy po czasie, W efekcie - na stronie użytkownik widzi zmiany w statystykach z dokładnością do godziny
  • 13. Livestreaming Działa już produkcyjnie Zgodny z RTMP/RTMPT/RTMPE– gotowy serwer w Javie ze zmianami (statystyki) zainstalowany na wszystkich węzłach Rozdzielanie ruchu zrobiliśmy za pomocą proxy na poziomie aplikacji wideo (kodzik w Javie rozsyła wideo z serwera do którego nadaje klient do serwerów docelowych – możemy dynamicznie wybierać do których dla którego klienta) Dodaliśmy autoryzację nadawców (tokeny – obsługiwane przez Mostek) … oraz oglądających (tokeny – mogą być obsługiwane indywidualnie przez webservice’y danych usług – np. VoD) Redirector obsługuje przekierowania do streamingu (wsparcie w playerze było konieczne) – RTMP nie obsługuje przekierowań Dobrze byłoby opakowywać też w HTTP – działa wtedy m.in. buforowanie, nie ma problemów z firewallami chcielibyśmy wkrótce dodać obsługę smooth-streamingu i streamingu na iphona (mpeg-ts) – możemy to zrobić przez transkodowanie w locie (prowadziliśmy próby) lub wydzielone serwery typu Wowza, IIS – minusami jest niejednorodne środowisko
  • 14. Livestreaming klient z encoderem – np. FMLE nadaje strumienie do primary i backup węzły odbierają sygnał od nadawcy i publikują go do węzłów edge odbiorcy pobierają sygnał z węzłów edge
  • 15. Plany rozwoju? uprawnienia do plików optymalizacja i usprawnienie algorytmu modelowania ruchu streaming przez HTTP i smooth-streaming streaming na iphone’a wstawienie kolejnych węzłów – m.in. do PL-IX rozbudowa i przyspieszenie statystyk …
  • 16. Dziękuję za uwagę! Pytania? pkarwatka@divante.pl Wersja testowa SimpleStorage: http://simplestorage.pl