Превод Защо центровете за данни се нуждаят от операционни системи

центровете
Разработчиците днес създават нови класове приложения. Тези приложения вече не се разработват за отделен сървър, а работят от няколко сървъра в центъра за данни. Примерите включват аналитични рамки като Apache Hadoop и Apache Spark, брокери на съобщения като Apache Kafka, магазини за ключ-стойност като Apache Cassandra и приложения за крайни потребители като тези, използвани от Twitter и Netflix.

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

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

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

Какво се случва, когато машина в една от тези статични групи се повреди? Остава да се надяваме, че можем ефективно да го заменим с нов (а това е загуба на пари) или можем да разпределим някои от наличните машини за тези задачи(което е загуба на време и усилия). Но какво ще стане, ако през деня уеб трафикът падне до минимално ниво? Подготвяме статични групи за пикови натоварвания, което означава, че когато трафикът падне до минимално ниво, се губи допълнителен капацитет. Ето защо един стандартен център за данни обикновено е натоварен с 8-15% от капацитета си.

защо

И накрая, използвайки машините като абстракция, организациите са принудени да наемат огромен персонал от хора, които ръчно да настройват и коригират всяко отделно приложение на всяка отделна машина. Хората са „тясното място“ на такава система; не е възможно да се стартират нови приложения поради човешкия фактор, дори ако компанията вече е закупила достатъчно ресурси, които в момента не се използват.

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

Време е да изградим ОС за центрове за данни Как би изглеждала една ОС за управление на център за данни? От гледна точка на администратор, той ще работи с всички машини от центъра за данни (или облака) и ще ги обедини в един огромен пул от ресурси, в който могат да работят приложения. Вече няма да се налага да конфигурирате отделни машини за отделни приложения, всички приложения могат да работят на който и да е от наличните ресурси, на всяка машина, дори ако други приложения вече работят от нея.

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

Една операционна система за център за данни не би трябвало да замени Linux или друга операционна система, която използваме в центровете за данни днес. Операционната система за центъра за данни трябва да бъде набор от софтуер, инсталиран върху основната операционна система. Продължаването на използването на основната операционна система за предоставяне на стандартни операции би било от решаващо значение за поддържането на съществуващите приложения в работно състояние.

Операционната система на центъра за данни ще трябва да осигури функционалност, подобна на задачите на операционната система на една машина, а именно: управление на ресурсите и изолиране на процеси. Точно като традиционната операционна система, операционната система на центъра за данни ще трябва да осигури възможност за много потребители да изпълняват едновременно много приложения (поддържат многопоточност) при наличието на обща група ресурси и изрично изолиране на работещите приложения едно от друго.

API за център за данни Може би определящата характеристика на ОС за център за данни би била, че предоставя интерфейс за разработване на разпределени приложения. Подобно на системно повикване за традиционните операционни системи, API на операционната система за център за данни може да позволи на разпределени приложения да резервират и освобождават ресурси, да стартират, наблюдават и прекратяват процеси и много повече. API би осигурил реализации на примитиви, които имат общата функционалност, необходима на всички разпределени системи. И по този начин разработчиците няма да трябва самостоятелно да въвеждат отново основните примитиви на разпределените системи отново и отново (и неизбежно да страдат от същите грешки и проблеми с производителността).

защо

Централизирането на обща функционалност в примитивите на API би позволилоразработчиците да създават нови разпределени приложения по-лесно, по-безопасно и по-бързо. Това напомня на ситуацията, когато виртуалната памет беше добавена към стандартните операционни системи. Всъщност, един от пионерите в разработването на виртуална памет пише, че "На дизайнерите на операционни системи в началото на 60-те години на миналия век беше много ясно, че автоматичното разпределение на паметта може значително да опрости процеса на програмиране."

Примери за примитиви Две примитиви, специфични за операционните системи на центъра за данни, които биха могли незабавно да опростят създаването на разпределени приложения, са откриването и координацията на услугата. За разлика от операционна система на едно устройство, където много малко приложения, работещи на една и съща система, изискват откриване, откриването е естествено подходящо за разпределени приложения. Освен това наличността и устойчивостта на грешки на повечето разпределени приложения се постига чрез ефективно и адекватно осигуряване на координация и/или консенсус, което е изключително трудно за постигане.Благодарение на ОС на центъра за данни софтуерният интерфейс може да замести човек. Разработчиците днес са принудени да избират между съществуващи инструменти за откриване и координиране на услуги като Apache ZooKeeper и etcd за CoreOS. Това принуждава организациите да внедряват множество инструменти за различни приложения, което значително увеличава оперативната сложност и необходимостта от допълнителна поддръжка.

Ако примитивите за откриване и координиране се предоставят от ОС на центъра за данни, това не само ще опрости разработката, но и ще гарантира „преносимостта“ на приложенията. Организациите ще могат да променят основното внедряване в цялата система, без да се налага да правят промени в приложенията, подобно на това, че в момента избирате да внедрите файлова система на локална операционна система.

Новият начин за разгръщане на OS приложенията на центъра за данни ще позволи софтуерните интерфейси да заменят хората, с които разработчиците обикновено взаимодействат днес, когато се опитват да разположат своите приложения. Вместо да моли някой да разпредели машини и да се увери, че те са конфигурирани да изпълняват приложения, разработчикът ще може да стартира своите приложения с помощта на операционната система на центъра за данни (използвайки CLI или GUI) и приложението ще бъде изпълнено с помощта на API на операционната система на центъра за данни.Този подход осигурява ясно разделение на интересите между администратори и потребители: администраторите ще определят количеството ресурси, разпределени на потребител, а потребителите ще изпълняват всякакви приложения, които желаят, използвайки всички налични ресурси. Тъй като администраторът ще определи какъв тип ресурс (но не самият ресурс) е наличен и в какво количество, операционната система на центъра за данни и работещите разпределени приложения ще знаят повече за ресурсите, които могат да се използват, за да работят по-ефективно и да бъдат по-устойчиви на грешки. Тъй като повечето разпределени приложения имат повишени изисквания за планиране на процеси (като Apache Hadoop) и специфични нужди за възстановяване (като база данни), позволяването на софтуера да взема решения вместо хората ще бъде от решаващо значение за осигуряване на ефективност на центъра за данни.

Облакът не е операционна система Но защо се нуждаем от нова операционна система? Дали IaaS (Инфраструктура като услуга) и PaaS (Платформа като услуга) са решения за тези проблеми?

защо

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

PaaS, от друга страна, се абстрахира от машините, но е създаден предимно за човешко взаимодействие. Много PaaS решения включват различни услуги на трети страни (по отношение на непосредствените задачи на платформата) и механизми за интеграция, които опростяват създаването на разпределени приложения, но такива механизми не могат да се използват в рамките на няколко PaaS решения едновременно.

Разпределените изчисления се превърнаха в правило, а не в изключение и сега се нуждаем от операционни системи за центрове за данни, които осигуряват необходимото ниво на абстракция и преносими API за разпределени приложения. Липсата им пречи на развитието на нашата индустрия. Разработчиците трябва да могат да създават разпределени приложения, без да се налага многократно повторно внедряване на основната функционалност. Разпределените приложения, създадени в една организация, трябва да могат лесно да се изпълняват в други компании.