Индустрия (Netflix) Случай на използване на JavaScript

Въведение :

Какво е JavaScript?

JavaScript е език за програмиране, който можем да използваме за уеб страници, за да ги направим интерактивни. Това прави уеб страниците динамични и с помощта на HTML и CSS можем да го направим по-интерактивен, цветен и удобен за потребителя интерфейс. Можем да извършваме необходимите действия на сървъра в зависимост от събитията, клиентите го правят на уеб страница в браузъра и отговорът от сървъра може да се зарежда динамично, без да се презарежда уеб страницата.

Нетфликс :

Netflix е услуга за стрийминг, която предоставя много забавления, като предоставя печелили награди предавания, филми и т.н. Каквато и да е услугата, предоставяна от всяко приложение, техническата част, свързана с ИТ, винаги играе роля и има огромна роля за успеха на всяко приложение.

Преди няколко години Netflix реши да преработи основното си клиентско приложение към JavaScript от C++. Този подход обещава по-последователен потребителски интерфейс (UI) и позволява на Netflix да обновява нови услуги по-бързо. Но първоначалният подход доведе до голямо крехко JavaScript приложение, което беше трудно за тестване и актуализиране.

През последната година Netflix изпълни план за модулиране на кода на JavaScript, който помогна за справяне с много от тези ограничения, каза Семи Пюрвал, старши софтуерен инженер за Netflix на Fluent Conference. Това позволи тестване на отделни модули, по-добро споделяне на код между екипи и позволи на Netflix да изпраща актуализации ежедневно, а не на всеки шест седмици.

Архитектурата на клиента на Netflix е проектирана да имитира гъвкавостта на уеб браузърите, позволяващи актуализации на различни устройства. Компанията стартира със специален браузър, който обгръща WebKit около основния код, поддържащ потребителския интерфейс. Това улесни инженерите на Netflix да актуализират потребителския интерфейс като всяко приложение в мрежата.

Този подход помогна на Netflix да създаде потребителски интерфейс, но не работи добре на по-стари устройства. Създаването на приложения, които са последователни на всички устройства, беше трудно, защото операции като манипулиране на DOM трябваше да преминат през огромно дърво, за да вмъкнат елементи на потребителския интерфейс. Така че Netflix трябваше да реши дали имат нужда от целия DOM и целия багаж, който идваше с него, каза Purewal.

Начинът, по който те работиха около това, беше да създадат персонализиран двигател за изобразяване. Тази архитектура работи нещо като Node.js, но на клиента, а не на сървъра, каза Purewal. Този подход позволява на основното приложение за изобразяване да има достъп до системните ресурси за платформата Netflix на различни устройства от високопроизводителни платформи за игри до основни телевизори.

Трябваше да се справи със свързани със системата функции като декодиране и възпроизвеждане на видео, работа в мрежа, регистриране, сигурност, контрол на съдържанието и кеширане. Този подход позволява на Netflix да прави иновации във всички останали функции и услуги, предоставяни в тази обща платформа. Например, те са изпробвали нови начини за по-бързо стартиране на филми, защита на информацията, адаптивно поточно предаване и регистриране.

Проблемът беше, че голяма част от тези функции съществуваха в C++ и след като този код достигна до устройствата, не винаги се актуализираше на място. Целта беше да се преместят повече от критичните за непроизводителността неща в JavaScript, за да се даде възможност за повече иновации. Те внедриха слоя за сигурност на съобщенията на Netflix, MSL JS като разширяем и гъвкав защитен протокол за съобщения за предаване на данни.

Това доведе до някои интересни разлики в обхвата между променливите в JavaScript и C++. Проблемите възникнаха, когато две уж независими променливи също засегнаха трета променлива, която можеше да бъде достъпна и от двете. Тези уж независими променливи в крайна сметка си влияят една на друга, въпреки че не е предназначено да бъдат свързани. В резултат на това кодът пострада много, каза Purewal.

Прехвърляйки своите потребителски интерфейси към Node.js, Netflix успя да рационализира разработката, да намали времето за изграждане и да повиши нивото на персонализиране на своите потребителски интерфейси за всеки потребител.

Node беше „наистина привлекателна опция за нас, защото се съчетаваше добре с уменията на инженерите на потребителския интерфейс“, каза Ким Трот, директор инженеринг на потребителския интерфейс в Netflix. Трот ще говори за използването на Node от Netflix на NodeSummit Interactive следващата седмица в Портланд, Орегон.

Традиционно Netflix е корпоративен магазин за Java, но „когато мигрирахме от центъра за данни към облака, се преместихме към архитектура, базирана на услуги“, каза Трот. Компанията е в процес на разделяне на това, което преди беше монолитно Java приложение, на набор от по-малки услуги. Java все още захранва бекенда на Netflix, но всички неща, които потребителят вижда, идват от Node.

Node е среда за изпълнение на JavaScript от страна на сървъра, която позволява на разработчиците да пишат един и същ код както за предния, така и за задния край на уеб приложение. Тъй като Node е изграден върху архитектура, управлявана от събития, това е рамка, която е особено подходяща за работа с микроуслуги в мащаб.

Работата с UI е взискателна в Netflix. Услугите на компанията се разпространяват към голям брой устройства, от уеб до мобилни приложения до специални конзоли. Инженерите от предния край „трябваше да напишат много Java код, за да създадат уебсайта, но също така трябваше да напишат много JavaScript от страна на клиента“, каза Трот. С Node те могат да вършат цялата си работа в JavaScript. Екипът на потребителския интерфейс управлява платформата Node за видео услугата.

Node също подобрява значително времето за изграждане. Стартирането на Java приложението може да отнеме до 40 минути, което не се поддава точно на бърз процес на DevOps. „Екипът не успя да се движи толкова бързо, колкото искаше“, каза тя.

В бъдеще Netflix също ще мигрира към Node за своя слой за достъп до данни, в допълнение към потребителските интерфейси. Netflix наслоява своя клиент да пише скриптове срещу един API, вместо да пише към стотици услуги. Когато внедряват скриптове в слоя на услугата API, клиентите черпят от съвкупност от слоеве данни, като например информация за абонати, метаданни за филми, информация за субтитри и др. Понастоящем API скриптовете се внедряват директно върху една единствена API услуга, което ограничава възможността за мащабиране или изолиране на проблеми, които възникват.

По този начин Netflix в момента разработва начин за писане на скриптове като отделни приложения на Node. Ако даден скрипт работи зле, той само ще затрудни или убие собствената си услуга, а не цялата система. Тези приложения на Node ще работят на Docker контейнери заедно с Elastic Container Service (ECS) на Amazon Web Service, избраният доставчик на инфраструктура на Netflix. Това позволява на контейнерите да се изпълняват локално и да се отстраняват грешки локално, вместо да се отстраняват грешки на техния монолитен API сървър локално.

Node се оказа толкова удобен, че компанията разширява използването му към други слоеве на стека, каза Трот.

Netflix прави използването на Node крачка напред с Codex, който е набор от възможности за предоставяне на специфични функции на конкретни клиенти, в зависимост от настройките на клиента какви устройства се използват.

Например, ако клиент на Netflix притежава XBox, в рамките на Codex, разработчиците могат да персонализират JavaScript пакет, който да е насочен към този абонат на Netflix и неговата специфична настройка за забавление. Codex ще бъде от особен интерес за тези компании, работещи с уеб услуги, работещи на множество платформи. Може също да помогне при A/B тестване на функции.

Netflix планира да пусне Codex следващата година като проект с отворен код, каза Трот.

Благодаря ви...

Продължавайте да учите...

Продължете да споделяте...