ownCloud переходит на новую, созданную с нуля архитектуру, используя бэкенд в виде микросервисов на Go и фронтенд на Vue.js, распределённое файловое хранилище с помощью EOS от CERN, и отказывается от использования базы данных.
До этих архитектурных изменений основным продуктом ownCloud был коммерческий движкок для хранения и обмена файлами, написанный на PHP. ownCloud предоставляет сообществу версию со свободным исходным кодом, однако из-за недоверия к компании и их подходу разработки, оригинальная команда разработчиков отделилась и создала форк под названием Nextcloud. С тех пор у ownCloud наблюдался продолжительный застой в развитии.
ownCloud заявляют, что отказ от старого движка на PHP с использованием базы данных и POSIX-совместмых файловых систем в пользу нового стека технологий даёт прирост в производительности до 10 раз. В процессе создания этой версии фокус был сосредоточен на параллелизме: если движку на PHP приходилось ждать окончания выполнения функций, то Go позволяет выполнять их одновременно.
Если прошлая архитектура движка не решала проблемы масштабируемости дискового пространства, то сейчас же основным способом хранения файлов предлагается программное обеспечение промышленного масштаба — EOS. Оно было разработано CERN и используется для их архива данных размером в 200 петабайт. В то же время всё ещё доступны опции для хранения файлов с помощью Samba, объектного хранилища S3 и поверх обычных файловых систем. Хранение данных на EOS ориентировано на множество дисков, обеспечивая избыточность и отсутствие единой точки отказа.
Основным способом аутентификации выбраны внешние провайдеры, вроде LDAP и Active Directory, но в то же время всё ещё доступна опция для локального хранения идентификаторов пользователей.
Новый фронтенд с использованием фреймоворка Vue.js так же сосредоточен на производительность и параллельное выполнение задач. По сравнению с прошлой итерацией, интерфейс претерпел изменения в дизайне и стал меньше.
Для взаимодействия с бэкендом используется механизм gRPC. Бэкенд и фронтенд полностью независимы друг от друга, а для балансировки их трафика используется веб-сервер Traefik. Ввиду этого изменения, ownCloud подразумевается расширять таким же образом: с помощью микросервисов, обращающихся к бэкенду с помощью gRPC и балансировки их трафика с помощью Traefik. Такая модульная архитектура, сосредоточенная на вызовах gRPC, также свела на нет необходимость в использовании реляционной базы данных.
На данный момент проект всё ещё на стадии технического превью и выпускает новые версии каждые три недели. Проект распространяется под лицензией Apache License 2.0.
>>> Подробности