Винаги при избор на хостинг, VPS или дори при специална машина за даден уеб сайт трябва да се съобразяваме с нуждите на конкретния проект. Това е сериозен проблем, който е и със сложен отговор. Ще опитам да изведа възможно най-много инфорация по темата.
На първо място няколко ключови въпроса:
– За колко потребителя е предвиден сайта?
– Какъв е средния трафик, който развива един потребител?
– Какви процеси се извършват при посещението на един потребител, до колко те са сложни или прости, колко времеотнемащи са?
Отговаряйки на тези въпроси ще можете да разберете какъв ще е необходимия капацитет от хардуер за хостването на вашия проект. Ще опитам да разбия въпросите и да дам по-конкретна информация.
Какви процеси се извършват при посещението на един потребител и какви ресурси изискват?
Важно е да сте наясно какво прави софтуера, така ще можете да прецените какво процесорно време ще му е неободимо и дали ще ви трябва евтин или скъп хостинг или ще се наложи да използвате VPS или дори собствена машина. В света на софтуера всеки има избор да пише така, както знае и до колкото знанията му позволяват, но това е и за добро и за лошо. Разбира се свободата винаги е хубаво нещо, но лошото е че един код може да бъде написан, така че да работи стотици, а понякога хиляди пъти по-лошо от друг, който е написан съвсем кратко и просто.
Важно е да уточня какво имам предвид под лош код. Така наричам неоптимизирания сорс, който работи бавно и отнема много повече ресурси. Някой би казал, че няма такова нещо – има работещ и не работещ код, но това е друда тема.
Защо е важно да бъде ясно какви ресурси използва само един потребител? Така ще можете да калкулирате евентуалните нужди. Например ако един посетител използва X ресурси, то 100 посетителя използват X по 100. Има различни инструменти за тестване. Някой от тях са за време, други за натоварване. Добър инструмент, с който можете да тествате своето приложение е ab (apache benchmark). Ще отделя специален пост за него.
PHP е език богат на функции! Като млад програмист имах случаи с часове да пиша функция, която по-късно откривам, че вече е налична в PHP. Често едно просто търсене в Google може да ви спести преоткриването на топлата вода.
Какъв е средния трафик, който развива един потребител?
В зависимост от сайта трафика може много да варира. Като пример мога да дам youtube, при който един потребител развива толкова трафик за един ден, че ако използва същия трафик само за да си проверява пощата и да пише/чете писма, то ще може да го прави в продължение на няколко години.
Има различни начини за оптимизиране/намаляване на трафика, който както знаем струва пари! YouTube и другите подобни сайтове хостват клипове с ниско качество, но за сметка на това с по-малък размер. Това им спестява много място и в същото време намалява използваният интернет трафик.
Ако хоствате много картинки е добре да ги компресите и да изберете оптимално ново на компресия, без да губите от качеството на изображенията. Имайте предвид, че ако едно изображение минава многократно през процес на компресиране, то всеки път все повече и повече се отдалечава от оригиналния вид.
Не е много разпространено, но вярвам, че ще стане много масово е компресирането на HTML-а посредством gzip компресия. Това е процес, при който уеб сървъра компресира HTML документа и го праща във формат десетки пъти по-малък от оригиналния към браузера. Той от своя страна го декомпресира и го възпроизвежда/рендва. В днешно време всички браузери поддържат gzip компресия, така че не правете компромис, а я използвайте.
За колко потребителя е предвиден сайта?
“В началото за 10, после за 100, а по-нататък дай боже за 100000!” – този е най-честия отговор. В реалност най-добре е да подсигурите необходимите ресурси за 100 човека и при нужда да увеличавате ресурсите. Оптимален вариант е винаги да сте запасени с ресурси. Така никога няма да попаднете в ситуация, при която посетителите ви няма да могат да достъпят до сайта ви защото сте минали лимита от трафик или защото не ви достига процесорно време. Процента на презапасяване е различен и е свързан с темповете на растеж на сайта ви. Обикновено 30% е минимум и колкото повече, толкова по-добре! Разбира се повече винаги означава по-високи разходи.
След като сте наясно с броя на евентуалните посетители и натовареността на софтуера, както и нуждите от трафик, то лесно можете да сметнете необходимите ресурси. За пример: при средно трафик от 300кб за една импресия на сайта и 1000 импресии дневно, то за един ден ще се реализират 300х1000=300МБ трафик.
Конкретен пример мога да дам с notrial.info, при който началната страница е 283кб и на всеки 100 импресии се реализират приблизително 28мб трафик. Разбира се голяма част от тези 283кб са картинки, които браузера кешира и това намалява трафика от уеб сървъра към посетителя.
Посещението на посетителя включва изтеглянето на файлове в следната разбивка:
HTML – 40 KB
Images – 135 KB
Scripts – 92 KB
CSS – 16KB (външни файлове)
Общо 283КБ, които ще бъдат свалени само първия път. При повторното посещение на страницата посетителя ще свали само HTML файла, тъй като браузера му е кеширал останалите за определен период от време.