TGViewer
EvApps EvApps @evapps_team · 199 subscribers
Post #1459 408
😊Привет, я Таня Драбовская, PHP-разработчик Evapps. Сегодня поговорим про технические аспекты кастомизации и масштабирования платформы Nextcloud!

🚀 Nextcloud представляет собой модульную клиент-серверную платформу, ориентированную на развёртывание приватных облачных решений.

Базовая функциональность включает:
- файловое хранилище,
- контроль доступа,
- веб-интерфейс,
- систему авторизации.

Архитектура построена на PHP с использованием собственного App Framework. Фронтенд реализован на Vue.js .
Серверная часть поддерживает интеграцию с MariaDB, PostgreSQL , Redis , S3-хранилищами, внешними файловыми системами и кеширующими решениями (OPcache, file-based cache).
Платформа поддерживает гибкую кастомизацию за счёт API, системы событий и разработки собственных модулей.

☝️Рассмотрим два основных кейса:

1️. Автоматическая сортировка файлов на основе MIME-типов
В рамках проекта была реализована логика автоматической сортировки загружаемых файлов на основе MIME-типов. Решение оформлено в виде отдельного приложения, использующего хук postWrite файловой подсистемы. При загрузке файл классифицируется и перемещается в предопределённую директорию (/Documents , /Images , /Videos ). UI-часть реализована на Vue.js ; конфигурация осуществляется через API и административную панель.

2️. Оптимизация полнотекстового поиска с использованием Elasticsearch
Для повышения удобства работы с хранилищами большого объёма был внедрён механизм полнотекстового поиска на базе Elasticsearch.

🔎 Ключевые технологии полнотекстового поиска:

• fulltextsearch — модуль Nextcloud, управляющий процессами индексации и поиска;
• fulltextsearch_elasticsearch — компонент для интеграции с Elasticsearch;
• Elasticsearch — внешний высокопроизводительный поисковый движок.

⚠️Проблемы стандартной реализации, с которыми мы столкнулись при работе:

• продолжительное время индексации при больших объёмах файлов (сотни тысяч документов)
• высокая нагрузка на центральный процессор сервера
• потенциальная деградация производительности и доступности сервиса для конечных пользователей

🛠Для минимизации задержек и снижения деградации производительности мы провели оптимизацию:

✔️ Распараллелили процесс индексации:
• внедрили асинхронный HTTP-клиент для отправки данных в Elasticsearch
• реализовали пакетную отправку данных (batch-запросы) по 500–1000 документов
• добавили обработку ошибок и механизм повторных попыток (retry)

✔️ Оптимизировали взаимодействие с базой данных Nextcloud:
• перешли с одиночных SQL-запросов на bulk INSERT
• использовали постоянные соединения к базе данных (persistent connections)

✔️ Донастроили Elasticsearch:
• отключили неиспользуемые в индексе поля для уменьшения объёма
• применили ngram-анализатор для ускоренного поиска коротких фрагментов текста

🎯 Комплексная оптимизация процессов индексации и поиска в Nextcloud позволила существенно повысить эффективность работы системы и снизить нагрузку на серверные ресурсы. Это обеспечило стабильную производительность при масштабной эксплуатации.

Готова ответить на ваши вопросы! 😊
  • ❤ 4
  • 🔥 4
More from @evapps_team
  1. Sep 23, 2026🔁 Ретраи, которые добивают лежачий сервис Сервис-сосед начал тупить, отвечает через раз Л…
  2. Sep 23, 2026Хотите не теряться среди сотен откликов? На hh сейчас бывает ощущение, что до HR просто не…
  3. Sep 23, 2026photo post
  4. Sep 21, 2026🧩 Что тут не так? Код-загадка Формат новый - показываю код, ты угадываешь подвох, ниже ра…
  5. Sep 18, 2026🎭 Мифы про производительность, в которые верят даже опытные Миф 1: "Меньше строк кода - б…
  6. Sep 16, 2026🚨 Как перевод денег уронил нам прод ⏰ 19:10 Задеплоили долгожданное - переводы между коше…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →