https://blog.superhosting.bg/webloz11_part2.html

Натиснете ENTER, за да видите резултатите или ESC за изход.

WebLoz`11 част 2 – ефективно Интернет програмиране в 6 точки

2015-10-13
Новини и събития
webloz, сайт, проект, приложение, Интернет, основни грешки, програмиране, бази данни, сървърни ресурси, XDEBUG, Framework, тесни места,bottlenecks,

WebLoz`11Както ви обещахме в WebLoz’11 част 1– какво и как се случи?, в тази публикация сме се постарали да обобщим основни насоки и препоръки как да програмирате в Интернет без грешки. На презентацията си, управителя на хостинг компания СуперХостинг.БГ – Любомир Русанов, даде полезни съвети за оптимално използване на сървърните ресурси. Журито на състезанието също споделиха тези насоки, с цел подобряване качеството на проектите- от гледна точка на функционалност, ефективност и бързодействие.

В следващите редове ще разгледаме:

  1. Основни ресурси при споделен хостинг;
  2. Основни грешки;
  3. Oсновни моменти в проектирането на Интернет приложения;
  4. Диагностициране и анализ на проекта;
  5. Структуриране на базите данни;
  6. Използване на Framework;

1. В контекста на споделения хостинг, под сървърни ресурси могат да се разбират следните параметри:
  • Изразходвана памет;За работата на всеки скрипт или програма на сървъра се изразходва оперативна памет. С цел по-оптимално използване на ресурсите, е добре тази памет да е възможно най-малко, защото колкото по-голямо количество трябва да бъде обработена, толкова повече процесорен ресурс се използва. От друга страна, някои кеширащи алгоритми могат да изразходват повече памет, но реално да ускоряват работата на софтуера и от там на сайта. Важно е да се направи компромис между необходима функционалност, ресурси и скорост при създаване на всеки проект.
  • Процесорно натоварване;Друг основен ресурс, който използват сайтовете, е процесора. Всеки скрипт, в зависимост от това как е написан и какви алгоритми използва, отнема различно процесорно време, за да бъде обработен (изпълнен). Разбира се, колкото по-добре и оптимално е написан даден сайт, толкова по-малко процесорно натоварване ще бъде необходимо за визуализацията му и следователно ще се зарежда по-бързо.
  • Интернет трафик;Сайтовете работят в Интернет и като следващ основен ресурс, ще посочим трафика, който те генерират. По-конкретно, това е трафика, изразен в байтове, които преминават между сървъра и браузъра на клиента, а не трафик, в контекста на брой посетители. Разбира се, колкото по-малко трафик изразходва един сайт за зареждане на определена страница, толкова по-бързо ще бъде визуализиран и в клиентския браузър. Тук отново трябва да се направи компромис между необходима функционалност, дизайн и потребителско изживяване и скорост на зареждане на сайта.
  • Дискови операции;Дисковете и пространството, на което сайтовете съхраняват информацията, е друг основен ресурс. Освен обема на използваното пространство, не по-малко важна характеристика е скоростта на достъпа до информацията. Например, за базите данни в голяма част от случаите, скоростта, с която се чете или записва информацията, оказва по-голямо значение за нормалната им работа, отколкото самия обем на съхраняваните в тях данни.
  • Брой файлове;Някои, от масово използваните в момента файлови системи, имат проблем с бавен достъп и визуализация, когато много файлове са разположени в една директория. Добра практика е тяхното разпределяне в поддиректории. Това гарантира избягване на проблеми с достъпване, листване и триене на файлове.
  • База от данни;Те не са отделен ресурс, а софтуер, използващ всички останали ресурси. Важно е обаче, още в процеса на проектиране, да се съобрази достъпа и структурата им да са оптимални, тъй като с разрастване на проекта, базите непрекъснато се увеличават. Скоростта и коректната работа на сайта много зависят от базите данни, като за някои сайтове, те могат да се окажат най-тясното място (bottleneck).
  • Брой връзки към уеб сървъра;В съвременните технологии за използване на споделен хостинг, броят конкурентни връзки към уеб сървъра е от голямо значение за бързодействието и ефективността. При повече връзки към сървъра, сайта се зарежда по-бавно и съответно се ограничава броя на потребителите, които могат да го разглеждат едновременно.

2. Основни грешки:

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

Ето и няколко най-често срещани грешки:

  • Динамично оразмеряване на картинки;Напоследък това е масова практика, създаваща доста проблеми на успешни проекти. Когато се използват картинки на вашия сайт, не е необходимо те да се качват директно в реалните си размери на сайта и при всяко зареждане да се преоразмеряват с помощта на php скрипт за постигане на правилния размер на изображението. Добра практика е картинката да се преоразмерява в нужните размери още при качването в сайта. Също така, може да се използва cron job на определено време, който да проверява за нови картинки и ако има такива, да ги разполага на точното място в точните размери. По този начин картинките ще се обслужват от уеб сървъра като статични файлове, което е много по-бързо и оптимално;
  • Много и излишни елементи на страницата;Разполагането на голям брой елементи в страниците (java скриптове, css, картинки и др.), от които повечето не се използват, забавя много бързодействието на сайта. Препоръчва се тяхното ограничаване или обединяване.
  • Ненужни статистически модули;Използването на модули, които показват в реално време точния брой посетители в сайта ви, например, може да забави работата на приложението многократно. В общия случай, Google Analytics и Awstats на Cpanel, могат да ви предоставят нужните данни, като спестяват събирането на информация, запълването на базите данни и непрекъснатото изпращането на излишни заявки към сървъра.
  • Неоптимални алгоритми;Това се отнася за начина, по който ще реализирате алгоритмите, които използвате. Коректното им функциониране трябва да е съобразено с голямо натоварване и много посещения, конкурентна работа и по-големи обеми от данни.
  • Проблемни бази данни и заявки;Проектирането на правилната схема (модел) на базата данни е изключително важен процес, който може да спести много проблеми при развитието на сайта. Базите трябва да се нормализирани, да използват правилните типове от данни и индекси. Неправилно проектираната схема, неминуемо ще доведе до бавни и неоптимални заявки и съответно до забавяне на целия сайт;
  • Лош разчет на посещенията;Важно е правилно да се уточни, колко потребители се очакват да посещават вашия сайт. Има огромна разлика в алгоритмите и оптимизацията на сайтове, които са с 2-3 посещения на ден и такива с 10000 или дори 100 000. Като цяло, сайтовете стават достъпни в световната мрежа, за да бъдат посещавани и е важно целия проект да продължи с коректната си работа при всякакви пикови натоварвания.
  • Непрекъснато презареждащи се страници;Практиката показва, че често на сайтовете се разполагат live чатове, като информацията в тях се опреснява на всяка секунда. Това е излишно натоварване на сървъра. Напълно достатъчно и много по-оптимално е информацията да се опреснява, само когато потребителя действително използва чата.

3. Важно е да се обърне внимание на следните основни моменти в проектирането на Интернет приложенията:
  • Концентрирайте се върху най-често извиквания код;Във всеки софтуер, част от кода се извиква най-често и той би трябвало да е първата стъпка в оптимизацията. В повечето случаи, 80% от зарежданията на страниците се обработват от не повече от 20% от кода на сайта. Намерете кои са тези 20% и започнете с техния анализ- именно в този код, ще намерите т.н. “тесни места” (bottlenecks). След тяхното коригиране, можете да продължите със следващите стъпки на оптимизацията.
  • Използвайте кеширане;Кеширането е много добър начин за оптимизация и бързодействие– намалява значително броя на заявките към базите данни и извикванията към файлова система при генерирането на страниците. Необходимо е обаче правилно използване, защото в някои случаи, може дори да забави работата на сайта ви. Кеширайте най-често зарежданите страници или такива, които рядко се променят. По този начин, уеб сървъра ще сервира кеширани статични страници.
  • Не извиквайте външни ресурси в реално време;Отново често срещана и некоректна практика е извикването на многобройни външни ресурси в сайта (rss, новини, валутни курсове, прогнози за времето или др.). В случай, че отсрещният сървър, от който се изтегля информацията, в момента има технически проблем и/или не функционира коректно, във вашия сайт се изчаква изтеглянето на информацията, поради което се получава и забавяне. Начин за избягване на това е извикването на cron job на определен интервал от време, който да проверява и запазва информацията в базата данни. След това, показването на актуалната информация на вашия сайт, няма да предизвиква забавяне, с което ще е истински полезна и ползваема за вашите потребители.
  • Използвайте оптимални SQL заявки;Това са заявки, които дават нужната информация, извлечена от точните таблици, без да се включват излишни данни, които да ги забавят допълнително. Добра препоръка е да се използват само вътрешни свързвания (inner join) между таблиците при извличане на информацията от тях.
  • Тествайте с големи обеми данни още при разработка;При разработката на всяко софтуерно приложение се използват най-разнообразни алгоритми. Много често срещана грешка е в процеса на разработката, тези алгоритми, както и самият сайт, да не бъдат тествани в ситуации близки до реалните. Например, тестовете се извършват с малък обем данни (10-100 реда в таблиците на базите от данни) и малък брой конкурентни потребители (двама, трима колеги от офиса). В реална ситуация обаче, един средно посещаван сайт може да работи с десетки или дори стотици хиляди редове в базата от данни и стотици конкурентни посетители. Поради това е задължително, още в ранните етапи на разработка, да проверявате как се представят алгоритмите, които използвате, с реални обеми от данни. Ако тествате с големи обеми данни, можете да засечете и неоптимални SQL заявки към базата и др.

4. Диагностициране и анализ на проекта:

Добро средство за диагностициране на проблеми в сайта, още в процеса на разработка, е XDEBUG. Поддържа се от всички съвременни среди за php разработка: NetBeans, Eclipse и др. С него могат да се дебъгват, тестват и профилират различни php приложения. Профайлера е подходящ за тестване на приложения, работещи неоптимално, както и за откриване на “тесни места” (bottlenecks) в сайта. Също така, получената информацията може да бъде анализира с различни софтуерни продукти.

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

Също така, анализирането на profiling данните дава пълна информация колко време отнема извикването на дадена функция, коя функция след коя следва и как работи проекта върху реалната база данни. Цялата profiling информация се записва в лог файл. За Linux хостинг платформа подходящ софтуер за анализ на записаните данни, който можете да използвате е kCacheGrind . За Windows хостинг е наличен аналог – winCacheGrind.

И двата софтуерни продукта дават информация за:

  • Времето за изпълнение на всички извиквания към php функции (библиотечни или не); времето за изпълнение на самата функция (stand alone); общото акумулирано време, ако тази функция е викана, например в цикъл;
  • Дърво на извикванията;
  • Пълен списък на графовете (Извикан -> Извикващ);
  • Stack-trace-ове;

5. Структуриране на базите данни:

Друг много важен момент в проектирането на уеб приложение е как ще бъде реализирана структурата на базите данни и връзките между тях. Добра практика, която гарантира коректното визуализиране в сайта ви на всички езици в бъдеще е: връзката на приложението с базата данни, попълнената информация в базата данни, както и колацията на самата база, таблиците и полетата в нея, да използват енкодинг UTF-8.

Други насоки за правилно структуриране на базите данни:

  • Използвайте правилните типове данни;Относно бързодействие и ефективност, е важно данните в полетата на базата да са записани в правилните типове (пример: дати – в тип date, не в string). Ако добавяте primary keys – те да са върху полета с числови данни – int, byte;
  • Нормализирайте данните – създавайте правилни схеми;Нормализацията, като основно правило, осигурява да няма повторение и взаимовръзката между релациите в базата данни да е еднозначна.
  • Създавайте индекси – само когато са необходими;Индекса е лесен начин за търсене на информация, чрез създаване на database обект.
  • Пишете заявките така, че да могат да използват индекси;
  • Използвайте само тези колони, които ви трябват;
  • Използвайте inner join винаги, когато е възможно;

6. Използване на Framework:

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

Като цяло, финалистите на WebLoz`11 впечатлиха с интересни идеи и добре изградена практика на работа. Разбира се, освен похвали, беше много важно да се споменат и основни насоки и съвети към представените проекти, с цел подобряване на качеството и изграждането на младите специалисти като добри професионалисти.

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

СуперХостинг.БГ

СуперХостинг.БГ е СуперЕкипът! Ежедневно всеки дава най-доброто от себе си, за да можете вие, клиентите на СуперХостинг.БГ, да сте номер едно. СуперСилата на СуперЕкипа е, че винаги е готов да ви даде точната информация, тази от която се нуждаете и за която питате.

500px270px
SuperHosting.BG

Препоръчани статии

Оставете коментар

Все още няма коментари

Уведоми ме при
avatar
wpDiscuz