Top Banner
Как мы используем Александр Макаров Yii core team Stay.com
39

UWDC 2013, Как мы используем Yii

Dec 05, 2014

Download

Technology

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: UWDC 2013, Как мы используем Yii

Как мы используем

Александр Макаров Yii core team

Stay.com

Page 2: UWDC 2013, Как мы используем Yii

Типичный проект

– Основная веб-мордочка. – Админка. – Консоль. – API.

Page 3: UWDC 2013, Как мы используем Yii

Проблемы?

– Структура, общий код. – Команда. – Разные сервера. – Разные настройки.

Page 4: UWDC 2013, Как мы используем Yii

СТРУКТУРА

Page 5: UWDC 2013, Как мы используем Yii

Приложения

– Common (↓) • Models • Parameters • Components

– Console (↑) – Frontend (↑) – Admin (↑)

Page 6: UWDC 2013, Как мы используем Yii

Алиасы

Yii::getPathOfAlias(), Yii::setPathOfAlias()

– root – common – application (Yii default) – webroot – …

Page 7: UWDC 2013, Как мы используем Yii

Серверы

– Машина разработчика. – Тестовый. – RC. – Production.

Page 8: UWDC 2013, Как мы используем Yii

Как быть с конфигами?

– Общий конфиг. – Конфиги для разных

приложений. – Конфиги для разных

серверов. – Свой конфиг у

разработчика. – Пароли нельзя держать в

VCS.

Page 9: UWDC 2013, Как мы используем Yii

Environments

– Development – Production – … – Локальные *-local.php

(игнорируется VCS)

– install.php <environment>

Page 10: UWDC 2013, Как мы используем Yii

Как перекрываются конфиги

– common/config/params.php – common/config/params-local.php – frontend/config/params.php – frontend/config/params-local.php

Page 11: UWDC 2013, Как мы используем Yii

VCS, КОД, СХЕМА БД

Page 12: UWDC 2013, Как мы используем Yii

Как хранить код

– Git или другая VCS. Git очень удобен.

– Ветки: master, release-X.X, feature-XXX.

– Теги: X.X.Y – Релиз.

Page 13: UWDC 2013, Как мы используем Yii

Что делать с базой?

– base-schema.sql – base-data.sql

– Миграции

• Не использовать модели и код приложения. • Если ушла в VCS и запускалась, не править. • Если ушла в VCS и не запускалась — поправить. • Не лезть в базу руками.

Page 14: UWDC 2013, Как мы используем Yii

AR vs SQL

• AR кушает больше, работает медленней • Актуально только если на странице 50+

записей • Для изменения удобней AR

Page 15: UWDC 2013, Как мы используем Yii

АВТОМАТИЗАЦИЯ, ДЕПЛОЙ

Page 16: UWDC 2013, Как мы используем Yii

Серверы

– Машина разработчика. – Тестовый. – RC. – Production.

Page 17: UWDC 2013, Как мы используем Yii

Деплой

– Pull. – Билд. – Чистим APC (stat=0). – Рестарт вебсервера (если нужен).

– Production/test/local.

Page 18: UWDC 2013, Как мы используем Yii

Билд

– LESS/SCSS → CSS. – Собрать и минифицировать CSS и JS. yiic

compress all. Жмёт, генерит файл аля all_123hash123.js, прописывает его в frontend/config/params-local.php.

– Применить миграции.

Page 19: UWDC 2013, Как мы используем Yii

ДАННЫЕ, ХРАНИЛИЩА, I18N

Page 20: UWDC 2013, Как мы используем Yii

Данные

– MySQL. – Кеш в APC. – noSQL только когда нужен. – Поиск SOLR/Sphinx.

Page 21: UWDC 2013, Как мы используем Yii

Внешние API

– Facebook. – Google. – …

– Могут не работать. – Могут меняться. – Кеш.

Page 22: UWDC 2013, Как мы используем Yii

i18n

– UTF-8. – Collation. – Yii::t, исходник всегда английский. – С данными всегда по-разному…

Page 23: UWDC 2013, Как мы используем Yii

ПРОИЗВОДИТЕЛЬНОСТЬ

Page 24: UWDC 2013, Как мы используем Yii

Преждевременная оптимизация

– Узкие места будут не там, где вы думаете. – Все будут использовать проект «не так». – Рост можно контролировать. – Время.

Page 25: UWDC 2013, Как мы используем Yii

Что тормозит?

– Тормозит не там, где вы думаете. – Не всё можно воспроизвести локально. – Следите за изменениями.

Page 26: UWDC 2013, Как мы используем Yii

Что делать?

– Отложить выполнение. – Очереди. – SQL. – Кеш.

Page 27: UWDC 2013, Как мы используем Yii

ВНЕШНИЕ СЕРВИСЫ

Page 28: UWDC 2013, Как мы используем Yii

Внешние – Latency. – Ломаются. – Без напряга. – Стоят денег. – Гарантии.

Внутренние – Нужно ставить. – Нужно поддерживать. – Детали. – Нужно мониторить. – Нет гарантий.

Внешние vs внутренние

Page 29: UWDC 2013, Как мы используем Yii

Внешние сервисы

– Postmark. – Ratchet.io / Sentry. – S3 / Selectel. – Очереди Amazon.

Page 30: UWDC 2013, Как мы используем Yii

CLIENTSIDE

Page 31: UWDC 2013, Как мы используем Yii

JavaScript

– Без CClientScript::registerScriptFile(). – Модульная система, по модулю на 1-2

страницы. – + виджеты, структура примерно как у jQueryUI. – Все скрипты описываются явно в конфиге,

жмутся при деплое.

Page 32: UWDC 2013, Как мы используем Yii

CSS

– LESS / SCSS … – Перечислены в конфиге, жмутся явно при

деплое.

Page 33: UWDC 2013, Как мы используем Yii

Соглашения CSS/JS

– Каждый view оборачивается div.path-to-file или div.widget-path-to-file.

– В CSS/JS используется .news-index .title { ... } – Глобальные классы g-*. Стили для них в global.css. – На каждый контроллер одноимённый CSS-файл

(если нужен). – Для виджета имя CSS такое же, как имя виджета. – Layout использует префикс layout- и файл layout.css.

Page 34: UWDC 2013, Как мы используем Yii

ДОКУМЕНТАЦИЯ И ЗАДАЧИ

Page 35: UWDC 2013, Как мы используем Yii

Документация

– Readme. – API. – Комментарии.

Page 36: UWDC 2013, Как мы используем Yii

Задачи

– assembla. – Basecamp. – github. – Trello. – Pivotal tracker. …

Page 37: UWDC 2013, Как мы используем Yii

ПОЛЕЗНЯШКИ

Page 38: UWDC 2013, Как мы используем Yii

Шорткаты в global.php

– app() = Yii::app() – user() = Yii::app()->user – db() = Yii::app()->db – t(…) = Yii::t('myproject', …) – h() = CHtml::encode – l() = CHtml::link – param(…) = Yii::app()->params[…]

Page 39: UWDC 2013, Как мы используем Yii

Вопросы?

– ru.yiicookbook.org – yiiframework.ru – yiiframework.com – rmcreative.ru – [email protected] – @sam_dark