Мобильная
версия

10 столбов разработки на PHP

Дата: Категория: PHP

Недавно PHP исполнилось 20 лет, и сейчас это уже не прстой язык для создания домашних страничек. Это достаточно мощный язык, на котором уже написано множество высоконагруженных приложений - самые яркие примеры это ВКонтакте и FaceBook. Сейчас, если вам нужна домашняя страинчка, существует бесчисленное множество решений. Миллионы хостингов, предлагающих готовые CMS для развертывания блога, интернет магазина, и всего чего только душа пожелает. 

Однако сегодня не об этом. Сегодня о разработке на PHP, и о том каких методов следует придерживаться PHP разработчику. Буду краток, и уложимся в 10 пунктов.

1. Код

Самая важная часть вашего приложения.

Управление

Весь код (разумеется в передалх разумного - локальные конфиги, например, должны быть только у вас) должен быть в GIT. Правда, на сегодняшний день это самая лучшая система контроля версий, у которой самое большое сообщество, и огромное количество возможностей.
Отличный курс по git на русском вы можете пройти здесь

Стиль

Весь код должен быть написан в одном стиле. Не важно пишети вы его один, или в команде, вы должны изначально для себя выбрать определенный стиль, и придерживаться только его. Ведь там намного удобнее и проще читать свой или чужой код.
Подробнее про стандарты кодирования можно прочитать здесь

Open Source

Открытие исходников вашего приложения это отличная идея (разумеется если оно не уникальное, перволе в своем роде), так как свежий взгляд на код, и причем далеко не один, помогут вам выявить кучу багов, косяков, и вообще как говорится - одна голова хорошо, а две - лучше.

2. Тесты

Покрывайте тестами все, даже если оно работает идеально, и в коде все ясно, лучше перестраховаться и написать тест. Много времени это не займет, но зато сэкономит кучу времени в будущем если чтото пойдет не так. И не просто напишите их и забудьте, а перед каждым деплоем прогоняйте обязатнльо все. А еще лучше автоматический деплой с прогоном тестов, но об этом позже.
Подробнее об использовании тестов, а в частности PHPUnit читайте здесь

3. Зависимости

Composer - пожалуй, самый лучший менеджер зависимостей, и самый просто в использовании. Что может быть проще, чем написать

"require": {
"php": ">=5.5",
}

И не переживать что на сервере окажется версия PHP меньше чем 5.5. Плюс огромное сообщество, и постоянно расширяющийся функционал.

4. Конфигурация

Конфигурайия может быть большой проблемой при переносе вашего приложения. Для того чтобы таких проблем не было лучше всего использовать переменные среды разработки.

Не очень хорошо:

$database = "foobar";
$user     = "foobar";
$password = "foobar";

Отличное решение:

// $ _SERVER [ "DB_NAME" ];
// $ _SERVER [ "DB_USER" ];
// $ _SERVER [ "DB_PASSWORD" ];

Подробнее про переменные в apache и в nginx

5. Статические файлы

Все js и css файлы должны быть сжаты для минимизации траффика. Я уже писал об одном из способов сжатия в своей статье минификация js и css. Чаще всего их обрабатываетк оманда фронтэнд раработки, но знать это надо всеравно всем.

6. Данные среды выполнения

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

Для таких целей лучше всего использовать облачные хранилища (например, S3 , Cloud Files ,Cloud Storage). Это позволитполучить доступ к данным откуда угодно. Также на них лучше всего хранить статичные файлы (js, css, картинки)

 7. Ресурсы

Абстракция

Любую проблему можно решить путём введения дополнительного уровня абстракции, кроме проблемы слишком большого количества уровней абстракции

Старайтесь абстрагировать все взаимодействия с внешними ресурсами. Например БД - если нам вдруг понадобится сменить конфиги, или библиотеку для работы с базой данных, то такой подход приведет к затруднениям

$mysql = new mysql($host, $login ...);

а такой подход поможет нам сделать все быстро и красиво

use Illuminate\Database\Capsule\Manager;
// $_SERVER['DATABASE'] = ["host" => "localhost", ...]
$mgr = new Manager->addConnection($_SERVER['DATABASE']);

Слабая связь 

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

8. Развертывание (deploy)

Разворачиваться ваше приложенеие должно в одно касание. Никаких клонирования репозитория, обнвоелния composera, или чего бы то ни было. Все это доллжно быть в конфиге деплоя. Об одном из таких я уже писал в своей статье Phing. Автоматическая сборка проекта.

9. Уровни

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

10. Масштабируемость

И последний стоб, но, пожалуй, самый выжный из всех, это масштабируемость приложений.  Существует 2 вида - горизонатльная и вертикальная масштабируемость.
Вертикальная масштабируемость достигается за счет увеличения у сервера оперативной памяти, количества ядер процессора, и когда нибудь сможет достигнуть своего предела.
Горизонтальная масштабируемость достигается за счет увеличеиня количества серверов и разделения нагрузки посредством переноса некоторых служб на другие сервера.

У вертиклаьно масштабируемых приложений нет будущего. Их рано или поздно перепишут, в отличие от  горизонтально масштабируемых.

Ваша оценка:

Рейтинг: 9.8 (Оценок: 2)

Комментарий:

Copyright © DOC_tr 2015-2017 г. Все права защищены
Яндекс.Метрика
Перейти к мобильной версии