Новини от индустрията

Как Netflix използва код

2020-03-03 Source:https://www.infoq.com/news/2013/06/netflix/
От Zef Hemelon 13 юни 2013 г.

Netflix, популярният сайт за стрийминг на филми, използва сто пъти на ден, без използването на Chef или Puppet, без отдел за осигуряване на качество и без инженери за освобождаване. За да направи това, Netflix изгради усъвършенстван вътрешен PaaS (платформа като услуга), която позволява на всеки екип да разгърне собствената си част от инфраструктурата, когато пожелае, колкото и пъти да изисква. По време на QCon New York 2013, Джереми Едбърг говори с инфраструктурата, създадена от Netflix, за да поддържа този бърз темп на итерация на върха на AWS на Amazon.



Netflix използва архитектура, ориентирана към услугите, за да приложи своя API, който обработва повечето от заявките на сайта (2 милиарда заявки на ден). Зад кулисите API е разделен на много услуги, където всяка услуга се управлява от екип, което позволява на екипите да работят сравнително самостоятелно и сами да решават кога и колко често искат да внедрят нов софтуер.



Netflix е много инвестиран в DevOps. Разработчиците изграждат, внедряват и експлоатират свои собствени сървърни клъстери и са отговорни, когато нещата се объркат. В случай на неуспех се организира сесия, в която се изследва основната причина за проблема и се обсъждат начини за предотвратяване на подобни проблеми в бъдеще - подобно на петте уау.



Внедряването в Netflix е напълно автоматизирано. Когато дадена услуга трябва да бъде разгърната, разработчикът първо прехвърля кода в хранилище на изходния код. Кодовото натискане е взето от Дженкинс, който впоследствие изпълнява изграждане, създавайки пакет от приложения. След това се създава свежо VM изображение (AMI) на базата на базово изображение (съдържащо Linux дистрибуция) и софтуер, който работят всички сървъри на Netflix, включително JVM и Tomcat, възможно допълнително персонализирани от екипа. Върху тази базова инсталация се инсталира пакетът с приложения. От това се произвежда и регистрира AMI в системата.



За да разгърне VM изображенията към своята инфраструктура, Netflix изгради Asgard. Чрез уеб интерфейса на Asgard, VM изображенията могат да бъдат създадени за създаване на нови EC2 клъстери. Всеки клъстер се състои от най-малко 3 EC2 случая за съкращаване, разпределени в множество зони за наличност. Когато разполагате с нова версия, клъстерът, който работи с предишната версия, се поддържа, докато новата версия е инстанцирана. Когато новата версия се зарежда и се е регистрирала в регистъра на услугите на Netflix, наречен Eureka, балансьорът на натоварването завърта превключвател, насочващ целия трафик към новия клъстер. Новият клъстер се следи внимателно и се поддържа през нощта. Ако всичко работи наред, старият клъстер се унищожава. Ако нещо се обърка, балансьорът на натоварването се превключва обратно към стария клъстер.



Провалът се случва непрекъснато в инфраструктурата на Netflix. Софтуерът трябва да бъде в състояние да се справи с повредения хардуер, с недостатъчна мрежова свързаност и много други видове отказ. Дори ако провалът не се случи естествено, той се предизвиква насила с помощта на армията на Симиан. Симийската армия се състои от редица (софтуерни) „маймуни“, които въвеждат произволно провал. Например, Chaos Monkey на случаен принцип сваля сървърите, а Latency Monkey произволно въвежда закъснения в мрежата. Гарантирането, че неуспехът се случва постоянно, прави невъзможно екипът да игнорира проблема и създава култура, която има устойчивост на отказ като основен приоритет.



Много части от инфраструктурата на Netflix вече са с отворен код и са налични в Github. Целта на Netflix е в крайна сметка да освободи цялата си инфраструктура, за да могат да се възползват други компании.

От: HTTPS: //www.infoq.com/news/2013/06/netflix/