Ваш вопрос проницательный. Это связано с тем, что по мере того, как ваше предприятие становится более успешным, ему придется увеличить , чтобы поддерживать нагрузку большего объема трафика. Таким образом, вам придется разделить ваш код PHP на слои , которые выполняются на отдельных уровнях (либо на отдельных серверах, либо на отдельных виртуальных машинах, как в Xen.)
Например, в прошлом году я разработал систему, реализованную на PHP на 10 Linux-серверах OpenSUSE, на которых установлено около 25 виртуальных машин Xen (ВМ). Некоторые из виртуальных машин были балансировщиками нагрузки, некоторые - интерфейсными, некоторые - средними, а некоторые - средними. это были внутренние уровни, некоторые содержали базы данных MySQL, и у нас было несколько выделенных серверов, которые были RAID-массивами для хранения пользовательских файлов. Мы создали монтирования NFS для сохранения / чтения файлов в / из массива RAID.
Мы сгруппировали уровни в три связанные группы, чтобы у нас могли быть независимые тестовые площадки для QA, Staging (User Acceptance) и Production.
Таким образом, наше программное обеспечение PHP было разделено на слабо связанные слои следующим образом:
УРОВЕНЬ ПЕРЕДНЕГО КОНЦА (ВМ)
- Уровень приложений (порт 80) -
включая ответы AJAX, валидация
код, навигация и т. д.
- Уровень администратора (порт 443) -
включая панель администратора с
доступ к системным показателям и жгутам модульного тестирования
- Провайдер услуг (порт 443) - Безопасный
API веб-сервисов RESTful (с токеном)
предоставлять услуги партнерам и
другие, которые используют систему как
"Платформа".
СРЕДНИЙ УРОВЕНЬ (ВМ)
- Уровень бизнес-логики - расчеты
специфичные для системы или бизнеса,
или роли и разрешения для
различные варианты использования
- Уровень взаимодействия -
авторизации и посты в соцсетях
сети или партнерские приложения,
и т.д.
ОБРАТНЫЙ УРОВЕНЬ (ВМ)
- Уровень доступа к данным - обрабатывает SQL
Запросы, вставки, обновления, удаления в
база данных (реализована как подготовленная
Заявления) таким образом, что может быть
адаптируется, когда база данных изменяется на
другой вид ... пример: из
PostgreSQL для MySQL или наоборот.
Включает PHP-код для резервного копирования и
восстановление баз данных.
Идея, которую другой респондент поднял с помощью Framework для корпоративного программного обеспечения, кажется мне довольно глупой. Если вы разрабатываете студенческий проект или «доказательство концепции» на одном сервере, и если вы уже знакомы с платформой, она может использоваться для быстрого создания прототипов.
Но, как видно из вышесказанного, когда вы пишете код производственного качества, распределенный по нескольким уровням, вам не требуется использование платформы Framework.
Где бы вы поместили фреймворк для ссылки на все места в вашем коде? На каждом уровне? Плохая идея. Фреймворки включают в себя множество страниц, которые могут вам понадобиться, а могут и не понадобиться. Таким образом, они замедляют производительность, особенно при умножении на каждый уровень, на котором их необходимо установить.
Столь же неэффективным было бы создание «слоя», просто содержащего структуру, которую должен вызывать каждый другой слой. Преимущество программных уровней заключается в том, что они слабо связаны и не зависят от других уровней, поэтому, когда изменения происходят на одном уровне, они не требуют изменений на другом уровне.
Кроме того, разработчики, которые пишут код качества производства, не должны полагаться на «швейцарский армейский нож», который представляет Frameworks. Такие разработчики вполне способны написать целевой эффективный код и, при необходимости, повторно использовать классы в библиотеке, которую они могли разработать для предыдущих проектов.