Вопрос или проблема
Я собираюсь создать веб-сайт для своего бизнеса и мне нужна некоторая информация о том, что потребуется. Мы пытаемся создать веб-сайт, где пользователи из общего населения сайта смогут формировать свои собственные частные группы для общения и общения. Я использую Roll 20 в качестве примера, потому что он позволяет пользователям формировать свои собственные виртуальные группы DnD. Группы Facebook – еще один пример. (Наш бизнес абсолютно не связан с DnD или Facebook, мы не пытаемся их копировать.)
Я знаю очень мало о программировании, кроме основ Python или Java, и практически ничего о веб-сайтах, кроме основных макетов. Мы ищем людей, чтобы помочь нам построить сайт, но сначала нам нужна информация, чтобы помочь нам решить, что именно нам нужно и кого искать.
Я знаю, что если я спрошу “что лучше”, я получу множество мнений и, вероятно, кучу отрицательных голосов, поэтому вместо этого я спрошу: какие типы сетевых систем нам нужны для создания веб-сайта с большой базой данных участников, где участники могли бы формировать свои собственные группы, обмениваться информацией и взаимодействовать? Это то, что обычно рассматривается в HTML, или создается в WordPress, или что-то еще? Какие серверные системы вам нужны, чтобы обрабатывать такие данные и позволять такому сайту функционировать? Существуют ли готовые сервисы, которые упростят это?
Это трудный вопрос, поэтому давайте начнем с того, что мы знаем о технологиях, используемых https://roll20.net/
Стек Roll20
Этот веб-сайт позволяет вам узнать, что вы можете определить, взглянув на исходный код фронтенда
- https://builtwith.com/?https%3a%2f%2froll20.net%2f
- https://hexometer.com/stack-checker/https://roll20.net/
Что не дает нам никакой информации о бэкенде в данном случае. Некоторые веб-сайты могут предоставить версию PHP или что-то через свои заголовки.
Создание собственного
Вы можете выбрать “что угодно” в наши дни для создания веб-сайта. И всегда полезно потратить время на выбор правильного инструмента / языка / фреймворка для вас.
Примечание: Эта часть ответа является крайне субъективной и не учитывает другие языки.
Распространенный инструмент (CMS в этом случае) – WordPress, написанный на PHP, который позволит вам быстро создавать (статические) страницы. Однако, если вы хотите добавить некоторые индивидуальные функции, вам нужно будет написать для этого плагины. Если на сайте много специальных функций, я бы предложил избегать WordPress и создать свой веб-сайт с нуля с использованием такого фреймворка, как Laravel, например (легко использовать и хорошая документация).
Мы пытаемся создать веб-сайт, где пользователи из общего населения сайта могли бы формировать свои собственные частные группы для общения и общения
Я нашел готовые решения для развертывания:
Проверьте, соответствуют ли они вашим требованиям.
Кроме того, ближе всего я могу подумать о решениях с открытым исходным кодом для социальных сетей. Например, Elgg и некоторые из его альтернатив.
Какие типы сетевых систем нам нужны для создания веб-сайта с большой базой данных участников, где участники могли бы формировать свои собственные группы, обмениваться информацией и взаимодействовать?
Два вопроса:
- Нужны ли вам уведомления в режиме реального времени? (Пользователи видят, как новое сообщение появляется в реальном времени, нет необходимости обновлять страницу).
- Если да, нужна ли вам сохранность? (Старые сообщения остаются на странице, независимо от того, закрывают ли люди браузер или сеанс).
Если вам не нужны уведомления в реальном времени, то вы можете строить архитектуру аналогично комментариям в блоге или форуму.
Если вам нужны уведомления в реальном времени и сохранность, вам следует использовать WebSockets, чтобы сервер мог отправлять уведомления клиентам. Основная альтернатива – это оставить соединение открытым и обрабатывать частичные ответы. В идеале, используя События, отправляемые сервером.
Если вам не нужна сохранность, рассмотрите возможность использования WebRTC. С помощью WebRTC вы можете устанавливать соединение между браузерами (p2p)※, ваш веб-сервер будет помогать в соединении, но разговоры не будут проходить через сервер.
※: В качестве альтернативы вы можете использовать реле-сервер. Однако на этом этапе я бы рекомендовал использовать WebSockets вместо этого.
Это то, что обычно рассматривается в HTML, или создается в WordPress, или что-то еще?
Если вы не хотите получать уведомления в реальном времени (или не можете установить работающие p2p-соединения), то решение заключается в том, что все хранится на сервере. Тогда практически любая серверная технология будет работать. В теории, да, вы должны быть в состоянии сделать это с помощью плагинов WordPress (я не знаю о каких-либо, которые это делают).
Какие серверные системы вам нужны, чтобы обрабатывать такие данные и позволять такому сайту функционировать?
Вам нужна база данных, язык серверного скриптования, и удобен будет веб-фреймворк. И если вы собираетесь использовать WebSockets, я настоятельно рекомендую выбрать язык и фреймворк, которые поддерживают их из коробки, обязательно проверьте документацию (могут потребоваться дополнительные шаги установки, например).
Существуют ли готовые сервисы, которые упростят это?
Веб-фреймворки, конечно.
Ответ или решение
Какие веб-системы нужны для создания сайта, подобного Roll20?
Создание веб-сайта, который позволит пользователям формировать частные группы и взаимодействовать друг с другом, требует продуманного подхода как к архитектуре, так и к выбору технологий. Рассмотрим ключевые компоненты и системы, необходимые для успешной реализации такого проекта.
1. Определение функциональности
Первый шаг в создании вашего веб-сайта — это четкое понимание требуемой функциональности. Вам нужно решить, необходимо ли:
- Создание групп: Возможность пользователям создавать собственные группы и приглашать в них других участников.
- Чат и взаимодействие: Реализовать функции обмена сообщениями в реальном времени, а также возможность оставлять сообщения и комментарии.
- Управление пользователями: Регистрация, авторизация и управление профилями пользователей.
- Хранение данных: Особенности работы с большими объемами данных и историей взаимодействий.
2. Технологии и стеки
Для реализации подобного проекта вам потребуется следующее:
-
Frontend (Клиентская часть):
- HTML, CSS, JavaScript: Основные технологии для создания пользовательского интерфейса.
- JavaScript фреймворки: Использование фреймворков, таких как React, Vue.js или Angular, позволит значительно упростить разработку интерактивных интерфейсов.
-
Backend (Серверная часть):
- Серверный язык программирования: Современные языки, такие как Python (Django, Flask), JavaScript (Node.js), или PHP (Laravel), подходят для создания серверной логики.
- Платформа для веб-серверов: Выбор между такими веб-серверами, как Apache или Nginx, зависит от ваших требований и ожиданий.
-
База данных:
- Системы управления базами данных (СУБД): Реляционные (MySQL, PostgreSQL) или NoSQL (MongoDB) базы данных могут быть выбраны в зависимости от структуры хранения данных и потребностей вашего приложения.
3. Реализация функций взаимодействия
Давайте рассмотрим подробнее, как реализовать функции взаимодействия:
-
Чат в реальном времени: Необходимость в мгновенном обмене сообщениями требует использования технологий, таких как WebSockets. Это позволяет серверам отправлять сообщения клиентам без необходимости обновления страницы. Альтернативой могут стать серверные события (Server-Sent Events, SSE).
-
Управление сессиями: Для обеспечения безопасности и управления доступом к группам нужно задействовать системы аутентификации и авторизации пользователей, такие как OAuth.
4. Готовые решения и фреймворки
Существуют готовые решения и платформы, которые могут облегчить разработку:
- WordPress: При наличии потребностей в нестандартных функциях может оказаться слишком ограниченным, однако он идеально подходит для простых сайтов и блогов.
- Social Network Solutions: Платформы типа Elgg или других аналогичных открытых социальных сетей могут быть полезны для быстрого старта.
- Готовые чаты: Сервисы, такие как Mattermost или Let’s Chat могут быть интегрированы для упрощения коммуникаций.
5. Инфраструктура и развертывание
Не забывайте о развертывании и поддержке сайта. Для этого потребуется:
- Хостинг: Подбор подходящего хостинга, будь то облачный (AWS, Google Cloud) или выделенный сервер.
- CDN: Система доставки контента (Content Delivery Network) для улучшения скорости загрузки и надежности.
Заключение
Создание веб-сайта, подобного Roll20, требует комплексного подхода и понимания архитектуры веб-систем. От выбора технологий до реализации специфических функций — каждый аспект играет важную роль. Как только вы определитесь с основными требованиями, вы сможете обратиться к разработчикам с конкретными запросами и ожиданиями, что существенно упростит процесс разработки. Развивайтесь и следуйте современным технологиям, и ваш проект будет успешным!