персональний блог luckyjazzbo

it's all about money, sex (love?) and somewhat mental

Archive for Жовтень 2011

Django vs PHP

з коментарем

Предісторія

Я працюю програмістом. Вже багато років програмував на php і був довольним життям. Ну як довольним, звісно пхп дратував час від часу. В основному тим що, я для себе не відкрив, дефакто існуючого нормально двіжка, тому зробив щось своє, яке більш-менш влаштовувало, але приходилось постійно повторяти одні і ті ж дії коли робив очередний сайт (маю на увазі роботу з формами, заповнення таблиць, простенька адмінка).

  • CodeIgniter – впринципі нічого. Були трабли коли діло доходило до специфічних урлів на сайті. Дратувало те як реалізована робота з базою, фактично, це невеличка обгортка для того щоб щоразу не писати вибірку в циклі і все. Набір утиліт для роботи з поштою, шаблонами і всім іншим якийсь скудний.
  • CakePHP – ну теж наче нічого, але знову ж таки робота з базою це суцільний сум, те що він генерує автоматом не лізе ні в які ворота.
  • PEAR – страшно важка штука, сайт з ним, на якому є хоч якийсь траф, приречений тормозити… Та й заставити його працювати у випадках відмінних від стандартних майже нереально. Не раз приходилось в їх код лізти і там щось намагатися правити, а я страшно не люблю (навіть вважаю це гріхом, порівняльним з вбивством :) ) правити код фреймворка, це одразу означає забути про абдейти і не мати єдиного підходу в інших проектах.

Інші фрейворки якось не довелось використовувати, та й якось я зневірився що може існувати нормальний фрейворк на пхп. Ось так я і прийшов до Python + Django.

Недавно закінчив розробку другої версії сайту на Django. І тепер хочу поділитися досвідом, як я бачу розробку на php (фреймворк самописний) i на python+django

PHP

  • Розробка не об’єктна
  • Запити до бази треба писати руками, навіть самі прості
  • З формами, я придумав свою підпорку, але всерівно приходилось писати окремо додавання, зміну і усі перевірки, в цілому робота кожного разу по новому
  • Зробити простеньку адмінку – це ціла епопея, приходиться з нею нормально так повозитися
  • Зате все просто літає, проблем з швидкодією на пхп не було ніколи, вузьке місце – запити до бази данних

Django

  • Об’єктивність і ще раз об’єктивність
  • Запити потрібно писати в крайніх випадках, при цьому автоматично генеровані запити майже завжди близькі до ідеальних
  • З формами робота просто пісня, код пишеться тільки один раз (один для збереження і апдейту), а більшість перевірок вже є готові виходячи з об’яв потів класу
  • Адмінка є по дефелту, майже нічого для її істування робити не треба
  • Але готовий продукт ТОРМОЗИТЬ. Що я маю на увазі. Я маю на увазі, те що усі запити до бази разом узяті виконуються близько 20 мілісекунд, а сторінка генерується близько 600!!!. Хтось скаже що сєрвак треба крутіший, але в мене 4 процесори (3 Гц) і по 2 ядра в кожному і 8 гб оперативи, хіба цього мало?. Трохи попрофайливши і почитавши Інтернет я зрозумів що основні причини тормозів це як раз ця супер інтелектуальна ORM-ка (тормозить генерація запитів + утворення об’єктів), а також супер класний двіжок для темплейтів. Проблеми звісно вирішуються додаванням повсемісного кешування, але навіть з ним добитися генерації сторінки швидше ніж за 200ms майже не можливо. В Інтернеті маса постів про те як сайт на django витримує сотні тисяч користувачів (ну наприклад ebay.ca), ну але друзі, коли я на нього заходив, то головна сторінка генерувалась півтори секунди!!! Хто буде довольним від користування таким тормознутим гавном?

Висновок

Друзі, нові технології розробки – для нових серверів, з новими потужностями. Звісно за ними майбутнє, бо вони полегшують і пришвидшують розробку, але зараз, якби мене на вулиці запитали “на чому треба писати супер-пупер серсіс, який має заполонити всю планету?”, я би мабуть відповів що для php немає альтернативи. Все інше надто повільне і треба ще чекати поки зізріє, але коли воно зізріє вже будуть нові технології, які ще більше будуть прискорювати розробку і будуть ще більш тормознуті. Таким чином приходиться використовувати технологію яка йде на крок позаду.

Звісно якщо ви зробили сайт на іншій технології, то просто прийдеться довольствуватися тим що є, кешувати, збільшувати потужність серверів, оптимізовувати код, відмовлятись потихеньку від об’єктивності і від супер-пупер інтелектуальних ORM-мок і темплейт двіжків. І зводити всі плюси того фреймворка, який ви використовували, до 0.

Порада дня для програмістів на JavaScript: Використовуйте тільки найкращі JavaScript фреймворки і реалізації на них галерей і сайдшоу. Це позволить вам зробити ваш сайт більш ефектним і красивим, а також зекономить вам масу часу на розробку своєї галереї.

Written by luckyjazzbo

Жовтень 7, 2011 at 10:21

Опубліковано в django, Програмування, php

Follow

Get every new post delivered to your Inbox.