Ответы пользователя по тегу Веб-разработка
  • Есть ли какая то статья, где будет соотношение кол-ва одновременных юзеров на сайте и рекомендуемой конфигурации сервера?

    @dimuska139
    Backend developer
    Нет, потому что 500 человек, грузящие на сервер видео для обработки, и 500 человек, просто читающие на сайте статьи - это совершенно разные вещи, которые требуют совершенно разные конфигурации сервера.
    Ответ написан
    Комментировать
  • Какой стек выбрать для бэкэнда?

    @dimuska139
    Backend developer
    Важна производительность, поэтому и стал вопрос о переходе от PHP/Laravel

    Тут вообще нет связи. Узким горлышком в таких проектах является не язык, на котором приложение написано, а база данных. Если медленно выполняются запросы, то хоть на ассемблере бэкенд напиши - быстрее сервер отвечать не будет. Ну может пару миллисекунд выиграете, но на фоне времени выполнения запроса в БД и сетевых издержек это смешные цифры - даже не заметите разницу. А если речь идёт о Django, то это вообще не про производительность, потому что этот фреймворк довольно тяжёлый сам по себе, да и Python - это далеко не самый производительный язык даже среди скриптовых.

    Если речь идёт про большие нагрузки, то тоже язык тут не особо при делах, потому что обеспечиваются они масштабированием, кешированием и оптимизацией запросов к БД. Язык приложения тут вообще не при чём - разве что памяти какой-то больше жрёт, какой-то меньше. 200к в сутки - это в среднем всего лишь 2-3 запроса в секунду - то есть вообще ни о чём. Понятно, что распределение посещаемости вряд ли непрерывное равномерное, но тем не менее 200к даже если за один час - это всего лишь 140 запросов в секунду. С такой нагрузкой справится любой современный язык и фреймворк даже без масштабирования, кстати.
    Ответ написан
    1 комментарий
  • Как организовать хранение фотографий для сайта?

    @dimuska139
    Backend developer
    Загружайте файлы не в папку, а в s3-совместимое хранилище (чтобы при желании можно было без страданий и изменений в коде перейти на Amazon или в Linode какой-нибудь) - MinIO. Т.е. генерируете некий id, превращаете его в хеш, формируете ключ и по нему льёте в MinIO. Причём храните только оригиналы.

    Что касается миниатюр, то их нарезать и хранить не нужно. Представьте, если размеры в дизайне поменялись - что тогда? А если для каждой миниатюры webp-версия потребовалась - все картинки опять обрабатывать? Есть решение - imgproxy. Это специальный прокси-сервис (можно на свой сервер поставить, как и MinIO), который нарезает картинки "на лету" в момент обращения (по параметрам в url). Кроме нарезки, есть ещё куча разных возможностей. Кеша внутреннего нет, т.е. перед imgproxy есть смысл поставить Nginx для кеширования миниатюр (чтобы при каждом обращении не нарезало).
    Ответ написан
    7 комментариев
  • Как защитить сервер от большого потока аякс запросов от пользователя?

    @dimuska139
    Backend developer
    Нужно на уровне Nginx сделать ограничение количества запросов в секунду с IP. Вот тут подробнее.
    Ответ написан
  • Стоит ли использовать Django Forms, WTForms и т.д.?

    @dimuska139
    Backend developer
    Вот по этой причине я ушёл в сторону разделения фронтенда и бэкенда. Бэкенд - API, работающее с JSON, а весь фронтенд - это React/Angular/Vue приложение. Валидацию в таком случае надо делать и на фронтенде и на бэкенде, либо только на бэкенде. Конечно, с точки зрения удобства использования вариант валидации на фронтенде и на бэкенде выглядит более интересным, т.к. для валидации не требуется делать запрос на сервер. В то же время тут могут быть сложности с соответствием валидаторов на сервере и фронтенде (если это очень трудоёмко, то можно валидацию оставить только в бэкенде). Плюс такого разделения заключается в том, что вся работа с формами, стилями, виджеты и прочая интерфейсная часть с бэкендом вообще никак не пересекается. Код получается более простым для сопровождения (нет каши), кроме того легко разделяются обязанности.
    Ответ написан
    Комментировать
  • Как сделать, чтобы при выборе адреса из списка менялась гугл карта?

    @dimuska139
    Backend developer
    У Google карт есть геокодер с помощью которого можно по адресу получать координаты. При выборе пункта из списка берёте адрес, суёте его в геокодер, получаете координаты. Ну а дальше центрируете карту в этой точке (см. документацию). Если не хотите каждый раз дёргать геокодер, а адреса в списке не меняются, то можно координаты заранее сохранить и при смене адреса в списке брать их. Но, если не ошибаюсь, Google запрещает это делать в рамках соглашения (но это не точно).
    Ответ написан
    Комментировать
  • Как обновляется информация на сайтах?

    @dimuska139
    Backend developer
    Смотря как сайт реализован. По большей части используют реляционные СУБД, так что да - обычные ssl-таблицы. Но данные могут по-разному храниться. Например, в MongoDB или даже просто в обычных текстовых файлах.
    Ответ написан
  • Как менять текст перед каждой перезагрузкой страницы?

    @dimuska139
    Backend developer
    Как вариант - в сессии хранить число, которое будет при каждом обновлении страницы увеличиваться на 1. Первое его значение - 0. Хранить все фразы в массиве, индексы которого будут 0, 1, 2 и т.д. По значению из сессии выбирать нужное значение из массива.
    Ответ написан
    Комментировать
  • Каким стеком лучше организовать проект?

    @dimuska139
    Backend developer
    Парсер я бы сделал вообще отдельным микросервисом и пилил его либо многопоточным на Го, либо с использованием асинхронных фреймворков/библиотек на Python. Бэкенд админки я бы запилил на Django, скорее всего, а фронт сделал к ней на React/Angular/Vue. Но насчет бэкенда админки - вопрос достаточно спорный, потому что если делаешь фронт на React/Angular/Vue, то админка - это по сути просто rest-апи. Не знаю, возможно, использовать Django несколько избыточно.

    Насчет выборки из 30 баз: возможно, правильнее сделать одну базу, в которую данные из этих 30 агрегировать. А читать уже из нее.
    Ответ написан
    Комментировать
  • Web или 1с изучать на перспективу?

    @dimuska139
    Backend developer
    Веб, конечно. Иначе ты зациклишься на продуктах одной фирмы. А вообще надо выбирать то, к чему душа лежит, иначе ничего путного из этого не выйдет.
    Ответ написан
    Комментировать
  • Как правильно задать права на web сервере для удобства работы?

    @dimuska139
    Backend developer
    Вообще правильно, чтобы никто руками на сервере файлы проекта никогда не редактировал. Редактируешь локально, коммитишь, пушишь, а на сервере затягиваешь либо руками, либо деплой-скриптом.
    Ответ написан
    1 комментарий
  • Как заказчики на фрилансе относятся к несовершеннолетним исполнителям?

    @dimuska139
    Backend developer
    Какая разница, сколько лет? Заказчиков это вообще не касается.
    Ответ написан
    Комментировать