вертикално и хоризонтално скалиране

Почти всеки бизнес, който оперира онлайн, се опитва да планира трафика, който се очаква да посрещне, и да скалира инфраструктурата си в съответствие с плановете за развитие. Основно съществуват два модела при скалиране на инфраструктура, за които ще говорим по-късно в статията. Сега, нека да отговорим на един основен въпрос.

 

Какво е скалиране и защо моят бизнес се нуждае от това?

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

 

Видовете скалиране са два - вертикално и хоризонтално скалиране. И двата метода добавят ресурс към цялата система, но подходът им е различен.

 

Какво е хоризонтално скалиране?

Когато скалирате хоризонтално (на английски език - horizontal scaling, scale-out), добавяте повече сървъри в системата. Това означава, че вашето приложение ще съществува на няколко сървъра и те заедно ще обработват заявките. Основната идея зад този подход е че натоварването се разпределя между няколко сървъра. По този начин се създава нещо, познато като “частен облак” - създавате и премахвате машини и по този начин скалирате инфраструктурата си.

 

хоризонтално скалиране на инфраструктура

 

Предимства на хоризонталното скалиране:

  • Лесно е. Имате нужда от повече ресурси? Просто създайте още сървъри. С инструменти за автоматизация, процесът може да е много лесен.

  • По-надеждно е. Тъй като приложението се “хоства” на няколко сървъра, ако един от сървърите излезе извън строя, вашето приложение ще продължи да работи. 

  • Натоварването е разпределено. Нека да приемем, че имате 100 уеб заявки за обработка. Ако имате един сървър, това означава, че всички 100 заявки ще бъдат обработени от един сървър, ще използват една мрежа. Винаги е по-добре да разпределяте натоварването, тъй като това ви дава повече контрол, сигурност и гъвкавост.

  • Неограничено скалиране. Можете да добавяте неограничен брой сървъри.

  • Целият процес може да бъде напълно автоматизиран. Можете да използвате инструменти като Terraform, Kubernetes, Docker, Podman и други, за да автоматизирате напълно процеса по скалиране.

 

Няколко недостатъка на хоризонталното скалиране:

  • Дизайнът на вашата инфраструктура ще бъде по-труден. Хоризонталното скалиране изисква по-сложен дизайн - ще започнете да управлявате повече сървъри, необходимо е да ги държите идентични. Бъдете готови да инвестирате време и средства, когато полагате основите на подобна инфраструктура.

  • В началото този модел ще бъде по-скъп. Особено ако използвате платен софтуер, който таксува на брой сървъри. Нека да приемем, че вашето приложение изисква Windows Server. За всеки нов сървър ще трябва да заплащате за лиценз.

  • Подгответе добре вашата мрежа. Когато използвате хоризонтално скалиране, хубаво е да подсигурите добра мрежова свързаност между сървърите.

 

Какво е вертикално скалиране?

Този метод на скалиране представлява просто ъпгрейд на системните ресурси на наетия сървър (CPU, RAM, дисково пространство и други). При този модел не се добавят още сървъри или нещо по-сложно от това, просто да се ъпгрейдне абонаментния план на VPS/VDS или да се нанесе хардуерната промяна.

 

вертикално скалиране на инфраструктура

 

Разбира се, заради простотата на този метод, моделът идва със своите предимства, като част от тях са:

  • Без сложно синхронизиране. Информацията се съхранява на едно място, на един сървър.

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

  • В началото този модел ще бъде по-евтин. Ако тепърва ви се налага да скалирате инфраструктурата си, то този вариант ще бъде по-евтин до определено време. Ако използвате платен софтуер, то този модел пести средства, тъй като оперирате само с един сървър.

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

 

Този тип скалиране ви лимитира в няколко отношения:

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

  • Висок риск от downtime. Тъй като практически приложението ви се хоства на един сървър, при евентуален проблем със сървъра, вашият бизнес е офлайн. 

  • Ъпгрейд на ресурсите = (почти винаги) downtime. Ако използвате хардуерна машина, то за да я ъпгрейднете, ще се наложи да я изключите, за да приложите ъпгрейда. Това твърдение не е валидно, ако използвате виртуален сървър или VDS. Ъпгрейда при някои виртуализации дори не се налага рестарт, за да се извърши ъпгрейд на сървъра.
    Знаехте ли че при OpenVZ базиран VPS не се налага рестарт за ъпгрейд?

  • По-заета мрежа и услуги. На този сървър ще имате една услуга, която да обработва заявките (например - уеб сървър), една мрежа и цялото натоварване ще бъде поето от един сървър.

 

Какво да избера за моето приложение?

Трудно е да се каже кой метод ще работи най-добре за вашето приложение, тъй като това зависи от много фактори, които трябва да имате предвид:

  • Стабилност. Ако това е важно за вашето приложение, то може би трябва да използвате хоризонтално скалиране.

  • Цена. Разбира се, това е важно, но в началото може би вертикалното скалиране ще бъде една идея по-евтино.

  • Географско разпределение. Ако имате намерение да разпространите бизнеса си в целия свят, то трябва да изберете хоризонтално скалиране.

  • Приложението ви позволява ли хоризонтално скалиране? Вашето приложение може да е изградено и да позволява само вертикално скалиране.

 

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

 

Кога да започнете да мислите за скалиране?

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

 

Ако вече имате работещо приложение, редно е да започнете да наблюдавате използваните ресурси от сървъра си (CPU, RAM, диск и други). Когато забележите, че ресурсите ви започват да достигат своя лимит и тази употреба е легитимна, можете да започнете да мислите за скалиране и неговото прилагане. Разбира се, колкото по-рано, толкова по-добре. 

 

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

Избери услуга и активирай за минути.

Стартирай без риск - предоставяме 30 днeвна гаранция за възстановяване на платената сума.

Започнете още днес