Первый опыт на Yii

Раньше мы, как и многие другие агентства, разрабатывали интернет-проекты, используя самописную CMS. Наверно, все веб-студии прошли через этот мучительный процесс и почти все осознали, что поддерживать и развивать свою собственную CMS сложно, дорого и невыгодно. Так случилось и с нами. Мы решили выбрать одну из существующих платформ и попробовать поработать с ней. На тот момент лучшим вариантом казалась CMS Битрикс. Однако через некоторое время нам стало не хватать заложенного в Битрикс функционала, а разработка собственных уникальных компонентов под каждый проект оказалась невыгодной и трудозатратной. Поэтому нужна была альтернатива, и мы вернулись к поиску.

К необходимому нам инструменту мы предъявляли несколько важных требований:
  • с помощью него мы должны иметь возможность создавать качественные решения,
  • он не устареет через 2 года,
  • с ним сможет работать любой веб-программист.
Сложность заключается в том, что какое-то одно решение не может сочетать в себе все полезные свойства. Мы поняли, что не получится остановиться только на каком-то одном фреймворке или одной CMS, поэтому пока выбрали два варианта: CMS Drupal и Yii Framework. Конечно, это временная остановка. Мы продолжаем следить за развитием продуктов и смотреть, что нам ещё может подойти. Про Drupal, пожалуй, написано немало, поэтому сегодня речь пойдет об Yii и нашем первом опыте разработки на нем.

Фреймворк или CMS. Отступление

Стоит, наверное, пояснить, в чем разница между фреймворком и CMS. Если пытаться найти плюсы и минусы при их сравнении, то скоро станет ясно, что это всё равно, что сравнивать тёплое и мягкое. Это разные инструменты и предназначены они для разных задач. CMS задаёт архитектуру, в рамках которой нужно работать. Если нет какого-то модуля, его необходимо будет реализовать, а написание модуля для CMS — это всегда не самая лёгкая работа. Часто приходится писать не новый функционал, а отключать лишний. Ведь разработчики CMS стараются создавать максимально универсальные модули, снабжают их множеством функций и настроек. Но даже при таком разнообразии всегда чего-то не хватает, а какой-то функционал, наоборот, создаёт проблемы. С фреймворками дело обстоит совсем иначе. Единственное, что они все предписывают, это использование так называемого MVC-паттерна (model-view-controller). Проще говоря, в них используется схема разделения всего кода на три компоненты: данные (модель), интерфейс (представление), взаимодействие (контроллер), это позволяет при изменении одной компоненты минимально затрагивать остальные. Далее фреймворк уже используется как ящик с инструментами, с помощью которых можно сделать всё, что угодно. Но делать приходится довольно много, особенно, если проект только начался. Ведь по умолчанию нет ни административной панели, ни удобного модуля управления пользователями и их ролями... почти ничего, только ящик с инструментами, позволяющими создать всё это.

Почему Yii?

Как выбрать определенное решение среди множества подобных? Очевидно, придется определиться с критериями выбора.
  1. Для нас это должен быть современный и динамично развивающийся фреймворк.
  2. Он должен быть популярен, чтобы не было проблем с поиском расширений, модулей и помощи в сети.
  3. Он не должен быть слишком сложным, так как у нас работают не только senior-developers, но есть и постоянный приток junior’ов, которые должны максимально быстро вливаться в рабочий процесс.
  4. Вряд ли кто-то будет спорить, что современный фреймворк должен быть производительным и позволять создавать безопасные проекты. Производитель должен его поддерживать, документация должна быть полная и понятная.
Нами рассматривались Kohana, Zend, Symfony и Yii. При выборе фреймворка были сразу отброшены слабо поддерживаемые и малоизвестные фреймворки. Kohana нам не подошла из-за несовместимости со стандартами кодирования. Фреймворк довольно простой, и в одном из наших проектов используется. Но в Kohana принят синтаксис under_score, а мы оформляем код в соответствии со стандартами PSR, то есть camelCase. Zend и Symfony — очень сильные фреймворки, так как предоставляют множество возможностей, но при этом довольно сложны в изучении. Это так называемый enterprise-уровень. Плюс этих фреймворков в том, что можно использовать их отдельные компоненты в своих проектах. Мы, например, использовали некоторые компоненты Zend в наших проектах на CMS Битрикс. Yii подошёл нам лучше всего. У него довольно низкий порог входа, то есть он прост в изучении, у программиста не займёт много времени начать на нём работать. Кроме того, если какого-то функционала не хватает, всегда можно использовать сторонние модули или даже компоненты от Zend и Symfony.

Преимущества и недостатки разработки на Yii

У всех решений есть свои минусы. Первое, с чем мы столкнулись, это необходимость полностью менять подход к разработке. Нельзя просто сделать какую-то часть проекта, реализовать просто отдельно стоящий модуль. Сначала необходимо создать структуру БД, создать административную панель с базовым функционалом и реализовать некоторые другие базовые вещи, которые есть почти в любой CMS по умолчанию. На эти задачи потребуется время. Во-вторых, несмотря на огромное количество сторонних расширений, активно поддерживаемых и полезных не так много. Приходится очень аккуратно выбирать и всегда убеждаться на практике в том, что это расширение поможет решить задачу, а не добавит новых проблем. Но у Yii гораздо больше плюсов. Например, для Yii написано множество расширений, позволяющих использовать Yii вместе с CSS-фреймворком Bootstrap. Самые крутые — это Yiistrap и набор дополнительных виджетов Yii Wheels. Если взять шаблон для админки, написанный с использованием Bootstrap, то программисты без помощи дизайнеров и верстальщиков смогут сразу создать отличный интерфейс для управления системой. Все элементы уже созданы, нужно просто брать их и собирать админку, как дом из кирпичиков. В итоге мы получили мощный, производительный инструмент, с которым могут работать все программисты. Кстати, по тестам на производительность Yii занимает лидирующую позицию среди наиболее популярных фреймворков. Посмотреть результаты тестов и почитать о том, как они выполнялись можно здесь.

Первый опыт

У нас есть клиент Кворус (российский поставщик школьной мебели), для которого необходимо было создать удобную онлайн-систему для заказа мебели. Казалось бы, всё просто! Делаем интернет-магазин, берём Битрикс, правим шаблоны и всё готово. Но Битрикс тут не подошёл из-за одного маленького нюанса. Все товары системы имеют множество зависимых друг от друга свойств, которые можно представить в виде вложенных друг в друга справочников, покупатель буквально создает свою собственную конфигурацию товара, которая в реальности может быть произведена. Например, выбираем стул, от материала обивки зависит набор её цветов, а от цветов обивки в свою очередь зависит цвет металлокаркаса и т.д. В итоге система была реализована на основе Yii, решение оказалось простым и удобным.
Есть проекты, которые нет смысла даже пытаться делать на готовой CMS. Например, в одном из наших последних проектов, сайте зрительского клуба Цирковой и театральной компании «Аквамарин», требовалось реализовать несколько эксклюзивных модулей (накопление и операции с баллами, клубными картами, генерация различных сертификатов и поручений), а также выполнить интеграцию сразу с несколькими сторонними системами (билетный сервис компании, сервис email-рассылок, sms-рассылок, база КЛАДР). Выбор Yii в качестве платформы помог нам написать качественный код и избавил от необходимости долго и нудно «допиливать напильником» уже готовое, но не подходящее под наши нужды решение. Кстати Yii подходит не только для нестандартных проектов. Допустим, необходимо создать лэндинг. Как правило, лэндинг состоит только из HTML и Javascript. Но иногда нужно вставить туда форму с последующей обработкой на сервере. Реализация форм на Yii настолько проста, что даже при решении таких элементарных задач видна ощутимая польза от использования этого фреймворка.

Заключение

Конечно, мы не отказываемся от использования и поддержки других платформ. Есть проекты, которые просто обязаны быть написаны на CMS. Например, типовой интернет-магазин с 1С-интеграцией проще сделать на CMS Битрикс, а блог — на Drupal. Но мы чаще всего работаем с нетривиальными и очень амбициозными задачами, связанными с решением конкретных проблем бизнеса наших клиентов и построением новых процессов, нередко требующими уникального и качественного подхода, поэтому Yii для нас стал незаменимым помощником.



  • Как самостоятельно настроить учет данных о рекламных расходах в Google Analytics с точностью до копейки

    Если вы тратите деньги на рекламу в интернет, можете ли вы с точностью до копейки сказать, сколько потратили за сегодня или за прошлую неделю? А сколько переходов получили за эти деньги? Или к каким продажам это привело?

    Мы в своих проектах такой учет ведем. И сегодня генеральный директор агентства интернет-маркетинга «Топ Спот», входящего в нашу группу компаний, Дмитрий Губанов написал специально для vc.ru колонку с практическими советами о том, как автоматизировать учет данных о рекламных расходах в Google Analytics.

  • Итоги уходящего года

    2015 год подходит к концу, и мы по традиции подводим итоги и вспоминаем всё, чего достигли за это время. А достижений было немало!

  • Как победить в схватке за кадры с лидерами индустрии?

    Издание Cossa.Ru опубликовало статью Валерия Комягина о том, как противостоять хантингу со стороны IT-гигантов. В издании вышла редакционная версия материала. Мы, в свою очередь, публикуем «режиссерскую версию» текста, не подверженную цензуре.

  • Мы в десятке лучших разработчиков интернет-магазинов Москвы

    Мы в десятке лучших разработчиков интернет-магазинов Москвы

  • Перестаньте делать обычные сайты. Адаптив — это не страшно

    Перестаньте делать обычные сайты. Адаптив — это не страшно

    Сколько раз вы не могли найти на сайте компании карту с их офисом? Сколько раз вы кликали по экрану, в надежде попасть на нужную вам ссылку? Сколько раз вы проклинали владельцев сайтов за то, что невозможно прочесть текст? А всех этих проблем можно было бы избежать, если бы разработчики предусмотрели адаптивную версию сайта.

  • Тэглайн 2015: +22 позиции в рейтинге ведущих digital production России

    Тэглайн 2015: +22 позиции в рейтинге ведущих digital production России

    Крупнейшее аналитическое агентство Тэглайн опубликовало рейтинг ведущих разработчиков Рунета. В этому году мы поднялись сразу на 22 позиции и заняли итоговое 71 место.

  • Презентация к докладу «Ключевые показатели digital-производства»

    Все говорят, что в студийном бизнесе важно следить за показателями эффективности. Но никто не говорит, за какими именно. На РИФ+КИБ 2015 мы рассказали о личном опыте внедрения базового управленческого учета. Публикуем презентацию к этом докладу.

  • Эволюция: из маленькой веб-студии в опытного интегратора

    Мы быстро поняли, делать простые сайты — невыгодно. Конкуренция возрастала, рынок наводнялся небольшими компаниями. Всё это привело к снижению цен на проекты и падению прибыльности бизнеса.

  • Сказ о том, как старый год провожали

    Однажды решили добры молодцы и красны девицы Студии Комягина праздник себе устроить. Да не простой, а корпоративный новогодний. Стали снедь собирать да в путь-дорогу собираться.

  • Как это было: новый логотип и фирменный стиль Студии

    Как это было: новый логотип и фирменный стиль Студии

    В этом году Студии исполнилось 15 лет. Всё это время мы прожили с логотипом, придуманным в 2002 году первым арт-директором и совладельцем компании Олегом Нагурским. Настало время его поменять.

  • Третий лишний?

    Третий лишний?

    Рассказ о том, как сделать интеграцию со сторонними сервисами менее болезненной.

  • Срочно... в вёрстку!

    Срочно... в вёрстку!

    Процесс вёрстки — важный этап при создании сайта. В нашей Студии ему уделяется не меньше внимания, чем программированию или дизайну. В этой статье хотелось бы рассказать об инструментах, которым мы отдаем предпочтение, и поделиться опытом автоматизации некоторых этапов вёрстки.

  • Стратегическое партнёрство с Caparol

    2014 год для нашей компании становится знаковым сразу по нескольким причинам. В этом году Студии исполнилось 15 лет. Для веб-разработчика, с учётом молодости самой индустрии, это солидный возраст. Когда мы начинали в 1999 году, Рунету было всего 5 лет, а веб-студий по стране насчитывалось не больше сотни.

  • Интервью SeoPult

    Интервью SeoPult

    25 сентября состоялись съемки интервью Вaлерия Комягина для SeoPult.TV. Публикуем видеозапись передачи.

  • Браузеры в браузере

    Браузеры в браузере

    В процессе верстки шаблонов сайта всегда встает проблема кроссбраузерности. Да и некорректное отображение страницы в IE8 или в Chrome на iPad стало волновать уже практически каждого заказчика. В этой статье хотелось бы поделиться инструментом, который помогает нам в Студии тестировать шаблоны в разных операционных системах и браузерах быстро и легко.

  • Еженедельные планерки...

    Очень долго я не мог для себя лично определиться — нужны нам еженедельные собрания, на которых мы могли бы обсуждать текущие проблемы или нет. Мне казалось, что все это присуще скорее большим каким-то корпорациям с советами директоров и прочей фигней. Мне казалось, что настоящая живая компания должна обсуждать все «на лету». Возникла проблема, сразу же спохватились, обсудили ее, нашли решения и вернулись к работе.

  • Как выбрать подрядчика для создания сайта? Часть 2

    Две недели назад я начал описывать процесс подбора подрядчика для создания сайта. Несмотря на все многообразие компаний, занимающихся веб-разработкой, заказчику этот выбор обычно дается довольно трудно. Цены, подход к процессу, качество — все это сильно зависит от каждой конкретной компании. Сегодня я хотел бы продолжить и дать еще несколько рекомендаций, которые, на мой взгляд, смогут помочь вам определиться. Итак...

  • «Цель» Элияху Голдратта

    Мы не планировали создавать в нашем блоге отдельную рубрику с отзывами о прочитанных книгах. Ведь есть компании и люди, которые занимаются рецензированием профессионально и отлично справляются со своей работой. Но об одной книге мне все-таки захотелось рассказать, поскольку, если вы занимаетесь производством (не важно, чего именно), она может натолкнуть вас на полезные мысли и решения. Меня она вдохновила на многие изменения в организации рабочего процесса Студии.

  • Как выбрать подрядчика для создания сайта? Часть 1

    Ежедневно, получая вопросы о стоимости создания сайта от потенциальных заказчиков, я сталкиваюсь с одними и теми же типичными ошибками.

  • Мобильное приложение хоккейного клуба «Динамо» доступно в App Store

    Эта новость имеет для нас особое значение. Сейчас, в эту самую минуту, мы не только хотим рассказать вам о нашем новом проекте, но и анонсировать наше новое подразделение.

  • V Russian Digital Week, день первый

    В эти дни в Digital October проходит мероприятие под названием «V Russian Digital Week», которое, как написано на сайте мероприятия, «определяет вектор развития российской digital-индустрии на ближайшие годы». Мы почитали темы докладов, подумали и решили съездить в качестве слушателей. Первый день под названием «digital&design» был посвящен, собственно, digital и дизайну.

  • Сайт коллекционного журнала «WinX Club — Волшебная комната»

    Вчера вышел наш новый проект — сайт коллекционного журнала «WinX Club — Волшебная комната». Проект получился маленький, но аккуратный. Примечательно то, что собран он был в рекордные просто сроки даже с учетом необходимости согласования материалов не только с представителями заказчика — наших старых друзей из издательства «Эгмонт-Россия», но и с представителями правообладателя — итальянской компанией Rainbow S.r.I. Собственно, не без удовольствия и гордости, представляем вашему вниманию проект. Будем рады критике, похвалам, восторженным возгласам ... Тухлым помидорам рады, конечно же, не будем, но обещаем воспринять, как это положено настоящим профессионалам... с гневной истерикой :-)

  • Еженедельные планерки...

    Очень долго я не мог для себя лично определиться — нужны нам еженедельные собрания, на которых мы могли бы обсуждать текущие проблемы или нет. Мне казалось, что все это присуще скорее большим каким-то корпорациям с советами директоров и прочей фигней. Мне казалось, что настоящая живая компания должна обсуждать все «на лету». Возникла проблема, сразу же спохватились, обсудили ее, нашли решения и вернулись к работе.