Большое файловое хранилище для маленькой такой компании
Думаю, что любая группа разработчиков рано или поздно сталкивается с такой, казалось бы, примитивной задачей как
- вики, учет задач, тикетов, дефектов;
- система управления версиями/репозиторий;
- файловый сервер.
И если в случае первого и второго предлагается множество прекрасных средств, в частности для багтрекинга существуют известные каждому Redmine, Trac, а для управления версиями Subversion, Git, Mercurial, то для грамотной организации файлового хранилища приходится в очередной раз изобретать велосипед.
Что требуется?
Что я понимаю под файловым сервером? Хороший вопрос. В идеале это должна быть система по типу каталога, способная хранить большие объемы двоичных файлов (pdf, doc, xls, msi, avi и др.), позволяющая тегировать файлы для гибкого поиска по хранилищу, автоматически индексировать их содержимое и метаданные, производить поиск по множеству критериев, предоставлять доступ к файлам как локально, так и через браузер (web-интерфейс), совместно редактировать файлы, иметь клиенты для разных ОС, синхронизирующие версии с сервера, но что-то я замечтался… Конечно, же, такой системы не существует. Сейчас, наверное, многие возразят мне и укажут на Microsoft SharePoint Server, однако для небольшой компании этот продукт неподъемен ввиду сложности в обслуживании и астрономической цены.
Такие варианты как Dropbox, SkyDrive и другие сразу же отбрасываются, так как руководство не хочет распространять проекты компании неизвестно куда, опять же есть ограничения на скорость доступа (в случае файлового сервера в локальной сети большинство запросов поступает по высокоскоростным соединениям и лишь часть — через веб-интерфейс), а также на размер хранимых данных.
Какие же существуют свободные аналоги, частично решающие задачи, перечисленные выше? Я произвел тщательное исследование этого вопроса и готов поделиться с вами своим горьким опытом.
Скажу сразу, что я до сих пор нахожусь в поиске наилучшего варианта и те средства, о которых я расскажу ниже, лишь отчасти удовлетворяют предьявляемым требованиям. Сочетая несколько средств, может быть, есть шанс получить желаемый эффект.
OwnCloud
Недавно вышла новая версия (4.5) системы для организации хранения, синхронизации и обмена данными OwnCloud. Ранее на Хабрахабре уже появлялась замечательная статья об OwnCloud, которая и мотивировала меня познакомиться с облаком поближе.
Первое впечатление было просто волшебным: современный web-интерфейс, возможность онлайн просмотра (txt, PDF, ODF) и редактирования (txt) файлов, календарь, задачи, адресная книга, синхронизация по протоколу WebDAV, поиск по содержимому, а что самое главное — возможность монтирования локальных папок и внешних хранилищ по протоколам FTP, Samba, и др. Однако после более плотного знакомства обнаружилось огромное количество багов и глюков, как достаточно безобидных и даже забавных, так полное и безвозвратное падение системы. С OwnCloud врагам не нужно применять хитрые DDoS-атаки ибо эта функция изначально заложена разработчиками в ядро системы.
Больше всего интересовала функция монтирования удаленной файловой системы через Samba. То есть в локальной сети выделялся web-сервер с системой управления проектами и OwnCloud, а также простой Windows-файловый сервер, с которого web-интерфейс и подтягивал бы данные для удаленного доступа. Однако монтирование через Samba не захотело функционировать ни при каких условиях, несмотря на официально заявленную функциональность и примеры на сайте OwnCloud. Была произведена попытка обмануть OwnCloud и подсунуть её «локальную» папку с примонтированной Samba-шарой, но это вгоняло OwnCloud в неадекватное состояние.
Вообще, средство достаточно неплохое для домашнего использования, или если Вам достаточно пространства жесткого диска сервера на всю компанию. Стоит отметить развитое сообщество разработчиков OwnCloud, в котором Вам всегда подскажут как бороться с очередным фэйлом. Добавьте ссылку на их багтрекер себе в избранное, так как вам часто придется общаться с этими ребятами.
iFolder
Разрабатываемое компанией Novell, средство iFolderтакже предоставляет так необходимые нам возможности — распределение на несколько серверов, синхронизация между клиентами, веб-интерфейс к хранилищу.
Горьким фактом является то, что iFolder со стороны Linux поддерживает openSUSE, для которого процесс установки состоит из одной команды.
Для других дистрибутивов Linux установка iFolder — это практически невыполнимая задача несмотря на множество мануалов, например iFolderInstall. Мне, к сожалению, не удалось установить iFolder ввиду специфичных версий пакетов, которые требуются для работы системы и которые уже давно не доступны на сайте iFolder Novell. Возможно, читатели Хабра более удачливые и продвинутые и у них получится найти общий язык с iFolder.
Помимо iFolder на том же сайте компания Novell предлагает еще два проекта для совместной работы (Kablink Teaming) и для обмена сообщениями (Kablink Conferencing), впрочем они были мне не так интересны, поэтому оставляю знакомство с ними вам на десерт.
SparkleShare
Достаточно интересное средство, написанное согласно приданию некими хакерами, которым надоело синхронизировать свои файлы. Оно основано на системе управления версиями git и по сути является надстройкой. Для файлового сервера создается отдельный репозиторий и затем над ним навешивается SparkleShare. Клиенты, работая с файлами, синхронизируют их между собой и сервером по аналогии клиента для Dropbox. Кроме официального сайта, есть неплохая инструкция по установке и работе с SparkleShare. «Благодаря» фундаменту в виде git возникают и недостатки, свойственные системам такого класса: клиенты хранят полную локальную копию репозитория, что в случае больших объемов просто невозможно. Существует способ «ленивого» доступа к репозиторию посредством git-fs, но только в режиме чтения. Опять же для непрограммистов (экономисты, отдел кадров), это слишком высокотехнологичное решение и они скорее будут пересылать друг другу документацию бесконечными e-mail, чем воспользуются git. Опять же ненависть репозиториев к бинарным файлам окончательно исключает SparkleShare из списка возможных решений.
Syncany
Казалось бы вот она, мечта: облачное файловое хранилище с поддержкой FTP, IMAP, WebDAV, Windows NetBIOS/CIFS, SFTP/SSH, шифрованием данных и т.п. Но проект находится в разработке вот уже два года и официальных релизов системы не поступало. Авторы приветливо предлагают вступить в ряды разработчиков или пожертвовать то, что не жалко… Так что, Хабрачитатели, мечтающие внести свою лепту в Cloud Storage, есть прекрасный вариант реализовать себя.
Rsync и Lsyncd
Выполняют функции, сходные с Dropbox, то есть синхронизацию локальной и удаленной папки. Это не совсем то, что я искал, поэтому не буду слишком подробно останавливаться на этом решении. Отмечу лишь отсутствие графического интерфейса и клиентов для ОС Windows, что автоматически исключает Rsync и Lsyncd из списка.
AeroFS
Если предыдущие продукты можно было скромно называть облачными, то AeroFS использует это понятие по полной. По сути AeroFS — это p2p сеть, которая коллективно хранит файлы не обязательно с использованием центрального сервера! Система полностью распределенная и использует сложные алгоритмы репликации данных. Есть возможность выделить центральный сервер, который привносил бы два положительных момента — web-интерфейс и дополнительную дупликацию данных (вдруг все уедут в командировку и сеть начнет испытывать истощение). До сих пор у меня к AeroFS много вопросов, ответы на которые получить пока не удается. Скачивание релиза доступно только по инвайтам, поэтому ждемс… Обязательно отпишусь по результата разворачивания AeroFS.
Вывод
Подводя итог, скажу, что мы пока выбрали в качестве временной альтернативы решение OwnCloud. Согласно поговорке нет ничего более постоянного, чем нечто временное, но мы надеемся найти альтернативный вариант, так как вероятность, что OwnCloud в ближайшие сроки избавится абсолютно от всех недостатков, к сожалению, стремится к 0.
Вот таким образом обстоит ситуация со средствами для организации файлового хранилища. Обращаясь к Хабрасообществу, прошу поделиться своим опытом решения такой важной для государства задачи. Понимаю, что абсолютно бесплатных средств совсем не много и, между тем, начальство даже(!!!) готово заплатить разумные деньги за действительно функциональную вещь.
Хотелось бы узнать, как решается такая проблема в более крупных компаниях с поставленным процессом разработки?
Post scriptum: Встречался ли кто с системами оповещения работников (по email, sms и др.) о запланированных или циклических задачах с веб-интерфейсом? Наверное, это тема другой статьи. Поэтому to be continued….
Автор: paullarionov