Что подразумевается под маленьким, небольшим, крупным проектом на PHP?
Часто встречаю выражения вроде "Решение подойдет для небольших проектов, а для крупных нужно использовать ...".
Вопрос: на основании каких критериев делается такое разделение?
Приведите, пожалуйста, примеры малых, крупных проектов.
Интересуют CMS, CRM-системы и т.д.
PS. Я понимаю, что сайт-визитка - малый проект, а google - крупный. Не нужно писать про них ;).
Зависит от количества технологий, которыми придётся воспользоваться для его реализации.
Я сейчас сам себе условно поставлю задания на разработку проектов 4х уровней сложности.
Простейший сайт-визитка.
Технологии:
Дизайн: типовой, картинки со стоков или вообще нет, всего несколько страниц
Реализация: HTML, CSS, может быть JS
Средства разработки: очень простые, вплоть до notepad.exe
Хостинг: бесплатный shared hosting
Обновление: вручную, по FTP
Интернет-магазин средней сложности
Дизайн: заказной, картинки, цены и описание конкретных товаров
Реализация: HTML, CSS, JS, серверный язык программирования, база данных, кэширование. Возможно, интеграция с внешними системами, например, 1С, платёжные системы или доставка. В качестве базового решения использовать готовое, типа OpenCart
Многопользовательский режим: несколько редакторов, посетители сайта, покупатели
Средства разработки: графический пакет, IDE, клиентское приложение для базы данных
Реализация: CSS/SCSS/LESS, сложный Javascript c фреймворками типа Angular, несколько серверных языков программирования, база данных с горизонтальным и вертикальным массштабированием, дублированием, распределённая файловая система, кэшированием, очереди заданий, фоновые задачи.
Многопользовательский режим: любой может добавлять статьи с мульти-медиа контентом, многопользователькие чаты realtime, внутренняя система сообщений
Средства разработки: графический пакет, IDE, клиентское приложение для базы данных, репозиторий кода
Хостинг: virtual dedicated или dedicated + тестовый и демонстрационный сервера меньшей мощности + резервный + балансировка нагрузки
Сервис поддержки пользователей, модерация статей и чатов
Почтовые рассылки, подписки на отдельные темы или авторов, внутренняя система сообщений с дублированием на электронную почту
Авто-тесты
Обновление: автоматическое, через Chef, Capistrano или иной способ
Запредельно сложный сервис
Дизайн: уникальный, специальный, заказной, несколько штатных дизайнеров, все непрерывно работают над улучшением и разрабокой новых возможностей
Реализация: Reach Client Application, передовые клиентские технологии, реализация многопользовательского онлайн 3D мира, несколько серверных языков программирования, несколько типов баз данных с горизонтальным и вертикальным масштабированием, дублированием, кэшированием, очереди заданий, фоновые задачи; части системы общаются между собой по разным протоколам и асинхронно
Многопользовательский режим: международный сервис, количество пользователей просто зашкаливает, они работают круглосуточно, нет периода однозначного снижения нагрузки на сервер для технического обслуживания
Специфический фукционал: пользователи могут совместно делать необычные вещи, например, конструировать и выпускать реальные автомобили онлайн
Средства разработки: чего только не используешь, лишь бы разобраться в коде и документации, который состоит из множества кусков и зависимостей, на разных диалектах разных версий языков, ежедневно изменяемый сотней программистов, тестовые сервера под каждую отдельную фичу; в разработке сразу несколько фич, и они конфликтуют между собой
Хостинг: облачные сервера, много-много серверов, под все части системы резервирование, свой датацентр, свой оптоволоконный канал связи
Авто-тесты, мониторинг, метрики, системы оповещения о сбоях и автоматического устранения аварий
Внутрисистемная виртуальная валюта, возможность взаиморасчётов, найм, покупки
Холдинг: подчинённые компании различных отраслей и сфер экономики или фирм, расположенные в различных регионах, с общей информационной системой
Почтовые рассылки на миллионы подписчиков
Мультиплатформенность: под разные операционные системы отдельная версия программного продукта
Обновление: автоматическое, с бакапами до и после, авто-восстановлением при неудачном обновлении, специфическая система обновления; у каждой версии или модуля своя логика обновления; распределённое одновременное обновление большого количества серверов
Что из этого Гугль? Ничего. Он зашкаливает по сложности.