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

Давайте спробуємо розібратися у цьому питанні.

Що таке фреймворк?

Фреймворк – дуже широке поняття, яке застосовується не лише у IT. Але навіть у IT це поняття дуже розмите. Є фреймворки для верстання+, є фреймворки для програмної логіки як серверної, і браузерної. Коробкові системи керування контентом (CMS) також використовують свої фреймворки.

Але нас зараз цікавитимуть фреймворки для серверної логіки, такі як: Yii, Laravel, Symfony та інші.

Що таке фреймворки?

Насправді вони дуже різні. Є фреймворки, які мають базовий функціонал, наприклад – підключення до бази даних та формування сторінок, а є фреймворки абсолютно без функціоналу. Однак усі фреймворки, як мінімум, закладають мову програмування та методику програмування.

Загальне призначення фреймворку – полегшити та прискорити розробку.

Можна виділити два основні випадки, коли потрібно використовувати фреймворк:

  1. Вам з якихось причин не підходить коробкова CMS (Вам потрібен сайт під великі навантаження або потрібен великий відсоток унікального функціоналу)
  2. Потрібно швидко зібрати ДЕМО-версію

Інтуїтивно зрозуміло, що підхід до розробки в кожному з цих випадків має бути різним.

Тепер потрібно зрозуміти, якими можуть бути підходи до розробки у таких випадках.

  1. Програміст сам пише код під проект.
    Такий підхід ідеально підходить для першого випадку та не підходить для другого, оскільки писати код з нуля – це не швидко.
  2. Складання проекту з готових модулів.
    Цей підхід, навпаки, погано підходить для першого випадку і відмінно підходить для другого.

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

Написання сайту з нуля на базі фреймворку.

У цьому випадку фреймворк є базовою платформою для іншого коду.

І в цьому випадку істотної різниці між різними фреймворками немає. Як кажуть, PHP (а ми зараз розглядаємо PHP-фреймворки), він і в Африці PHP. Будь-якому розумному PHP-програмісту все одно, який фреймворк використовувати. Щодо доробок, якщо сайт написаний руками досвідченного розробника, то фреймворк також не має значення.

Складання сайту з готових модулів на базі фреймворку.

У цьому випадку, фреймворк є екосистемою. Кожна екосистема має свої модулі.

У цьому випадку, при виборі фреймворку, потрібно звертати увагу вже не на сам фреймворк, а на його екосистему: чи є в ньому все необхідне, і чи воно працює так, як потрібно.

Так, питання дуже складне, особливо для замовника, який не спеціалізується на цих технологіях. Але йому й не треба цього обирати. Не так вже й важливо, як саме зроблено ДЕМО-версію.

Тепер виникає питання – а чи можна із модулів зробити робочий сайт?

Так, теоретично можна, і люди роблять. Але тут як пощастить. Справа в тому, що багато модулів не розраховані на швидкість та навантаження. Вони складаються з великої кількості файлів із великою кількістю коду. Працює це погано і вкрай складно у доопрацюваннях, оскільки шукати функцію та всі її зв'язки у такому обсязі коду – завдання доволі велике, і в більшості випадків – нерентабельне.

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

Ми неодноразово бачили проекти, зібрані з «важких» модулів для «бойового» сайту. Наприклад, була дошка оголошень, яка починала гальмувати вже від 100 оголошень. Замовник розраховував на ефективний сайт, написаний під нього, а отримав абсолютно непрацездатну систему, хоча фактично вона є, і потрібний функціонал там передбачено і він навіть якось працює.

Пара слів про міфи.

У мережі можна знайти багато обговорень і суперечок на тему того, який фреймворк кращий, який швидше, який крутіший і т.і.

У більшості випадків подібний діалог позбавлений сенсу.

Фреймворк не впливає на жодний із цих факторів. Фреймворк може бути швидким чи повільним. Таким може бути код, звичайно, у переносному значенні. Одну й ту саму функцію можна написати багатьма способами. Один такий спосіб може вимагати більше обчислювальних ресурсів (і відповідно часу), інший – менше.

У цьому сенсі, порівнювати фреймворки – все одно, що порівнювати бойові мистецтва. Не можна оцінити методику у вакуумі, можна оцінити рівень володіння нею та ефективного застосування. І якщо Ви бачите опис кейсу, в якому зазначено, що на певному фреймворку зроблено щось дуже добре, то, швидше за все, це заслуга не фреймворку, а програміста.

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

То як же бути впевненим, що Вам зроблять на фреймворку щось хороше?

Насправді, повної впевненості бути не може, хіба що розробник – Ваш найкращий друг, якому Ви абсолютно довіряєте.

Але є маркери, які повинні Вас насторожувати:

  • Вам обіцяють зробити сайт на фреймворку швидко та недорого. Хоча ціна – вторинне питання, з Вас можуть взяти по повній програмі за те, щоб завантажити та встановити готові модулі.
  • Розробник працює лише з одним фреймворком. Швидше за все, розробник орієнтується в екосистемі, може зібрати модулі, але не має компетенції писати код самостійно або допрацьовувати навіть ті модулі, що він поставив.

Будьте уважними при виборі розробника та технічної бази. Не шкодуйте часу на вивчення питання та не нехтуйте консультаціями фахівців. Успішних вам проектів!