Зачем нам это было нужно
Нашей компании Artezio (группа ЛАНИТ) 16 лет, и мы помним времена, когда работу заказчикам приходилось отправлять на дисках бандеролями и заказными пакетами. Представьте, как тяжело было нам и клиентам разбираться в ворохе цифровых носителей! Затем наступило время «небыстрого интернета» и многотомных архивов, которые можно было отправить электронной почтой. Но и она не подходит, если вам нужно переслать большой массив данных. Даже очень либеральные почтовые сервисы не позволят это сделать, а менять настройки корпоративной почты ради этого не имеет смысла.
Источник
Остается использовать для обмена файлами уже существующие площадки? Но вспомните, что еще пять лет назад представляли собой развалы файлов в интернете. Отправлять клиента за файлами в адское пекло из рекламы, скриптов – опасно и стыдно. Справедливости ради стоит сказать, что были и достойные облачные продукты. Но несколько лет назад, когда мы задумались о файлообменной платформе, они были еще слишком дорогими и небезопасными. Впрочем, такими они остаются и сейчас. И вот почему.
Даже если весь контент будет создаваться непосредственно в облаке и передаваться через него же, все равно останутся открытыми несколько вопросов. Например, безопасность (разделение доступа для различных пользователей, ограничение доступа по времени, логирование) или удобство интерфейса для распространения информации.
Мы задумали свой продукт (он получил очевидное название SendFile) как корпоративное приложение с высоким уровнем безопасности и интеграцией с внутренней инфраструктурой компании. В этом плане публичные сервисы типа Google Drive, Yandex.disk или Dropmefiles не представляют интереса. Например, Google Drive есть у любого, кто пользуется почтой Gmail. Это решение отлично с ней интегрировано. Но это же является и слабым местом, потому что требует наличие Google аккаунта, что в случае коммерческого использования не всегда удобно.
Сомнения: стриминг и пиратство
В процессе разработки нас часто спрашивали: «Вы не боитесь, что создаете платформу для пиратства?» Особенно часто этот вопрос стал звучать с тех пор, как в России вплотную занялись торрентами и другими площадками, которые распространяют нелегальный контент.
Источник
Если честно, наш файлообменник подходит для того, чтобы обмениваться новыми фильмами и музыкой. Точно так же, как и кухонный нож может стать орудием преступления. Любой инструмент может быть использован как во благо, так и во вред. Но мы встроили некоторые средства обеспечения безопасности, которые в том числе могут пригодиться и при необходимости помочь в борьбе с незаконным копированием. Например, администратор системы знает, кто и когда разместил конкретный файл, кто его получил. Можно определять типы файлов, доступных для передачи в системе. Нужно понимать, что наша разработка — это корпоративная платформа для обмена файлами. Вряд ли кто-то из работников корпораций будет рассчитывать на полную анонимность, если начнет рассылать по офисной сети фильмы и музыку. Однако если вы сделали абсолютно безопасный нож, это значит, что он не режет.
То же самое касается и стриминга. Может показаться, что файлообменные решения — прошлый век. Мол, теперь все решают технологии потоковой передачи данных. Но стриминг предполагает поступление данных в виде потока по частям. При этом, как правило, вы не обладаете полным набором данных ни в какой момент. Это действительно очень удобно в случае просмотра видео или прослушивания аудио — не надо ждать, пока скачается весь фильм. Однако есть много информации, для которой важна целостность. То есть перед тем, как пользоваться информацией, вы должны заполучить ее целиком. Запрос информации из неполной базы данных приведет к непредсказуемому и с большой вероятностью ошибочному результату.
Представьте, что вы «стримите» текстовый файл. Что вы увидите, когда получите только первую часть этого файла? Вы не сможете прочитать текст, не сможете его редактировать, пока не будет завершена передача файла полностью. По аналогии «стриминг» не работает и с другими типами файлов, включая архивы и данные, которые разработчики передают своим заказчикам. Чтобы нормально обмениваться данными на расстоянии, нужен файлообменный сервис.
Люди не любят ждать, поэтому все успешные сервисы будут стараться различными способами предоставить возможность работать с ними как можно быстрее, скрыть задержку, обрабатывать ее на стороне сервера-облака, выдавать результаты по частям. Но пока это не всегда приемлемо, и не думаю, что картина принципиально изменится в ближайшие лет десять.
Как долго мы создавали свой файлообменник
С самого начала над проектом работало два студента, которые мечтали устроиться на работу в нашу компанию. Это очень похоже на историю с возникновением популярной социальной сети, которая родилась в студенческом общежитии. Но с файлообменником вышло проще. В Artezio есть учебное подразделение Juniors Lab, и оно позволяет новобранцам выделиться, реализовать идею, которая наверняка не уйдет в тираж. Никто не ждал, что студенческая поделка будет долго жить и получит развитие. В итоге спонтанная идея и выросла в коммерческий продукт.
На создание файлообменного проекта всего ушло 3700 часов или 8 месяцев работы. (Первоначальную студенческую разработку мы не считаем.) Из этого времени 64% было потрачено только на разработку, 20% — на тестирование, 16% — на менеджмент и анализ. За это время в работе над проектом поучаствовало 15 человек.
В разные периоды состав команды менялся. По мере роста коммерческого потенциала увеличивалась и команда. Сейчас проект не нуждается в большом количестве специалистов. Мы имеем готовый продукт с практичным дизайном, большими возможностями.
Проект разрабатывался в два этапа. Как я уже говорил, в рамках первого — мы создали рабочий прототип силами стажеров Juniors Lab (мы все же взяли их на работу). Вторым этапом стали перспективная доработка, адаптация для коммерческих проектов.
Первые прототипы разработки оказались удачными, и мы начали использовать продукт у себя в компании. Более того, разработка понравилась и нашим коллегам из ЛАНИТ. Поэтому файлообменная система прописалась и в их офисе в качестве корпоративного стандарта. Учитывая, что ЛАНИТ — это группа компаний с коллективом в несколько тысяч человек, наша система стала дополнительным мостиком между офисами, обеспечивая передачу файлов между сотрудниками. Это удобно, когда бизнес ведется разными компаниями, которые не имеют выхода в единую корпоративную сеть. Конечно, система активно использовалась и для отправки информации для клиентов.
Затем была коммерческая интеграция для крупной российской госкомпании, которой была востребована возможность шифрования данных. К сожалению, я не могу раскрыть все детали интеграции и назвать заказчика. Скажу только, что нам пришлось внести специфические изменения, которые усилили безопасность трансфера файлов и идентификацию пользователей. Этот проект стал для файлообменника началом госслужбы. Он работает на ней до сих пор.
Мы не забросили развитие проекта и разработали его обновленную версию. Этот второй этап разработки уже практически закончился.
Первая версия выглядела так.
А вот обновленная версия.
Из чего мы сделали файлообменник (объясняем на схемах)
При создании платформы мы не делали упор на какие-то прорывные технологии. Все довольно обычно, если рассматривать инструменты по отдельности, и интересно, когда смотришь на результат.
Мы использовали open source фреймворк Spring. В качестве антивирусного решения был интегрирован мультиплатформенный пакет Clam AntiVirus. У команды Artezio хорошая экспертиза в области Java, и мы постарались ее использовать на всех этапах разработки.
Сильные стороны
Аналитический департамент Artezio постоянно проводит исследования рынка, тестирует существующие технологические и программные платформы, составляет рейтинги. Пару месяцев назад мы сравнивали мессенджеры для ведения бизнеса. Последнее исследование посвятили файлообменным системам для корпоративного сектора.
Когда мы говорим о бизнес-решениях, мы фокусируем внимание на конфиденциальности хранения и передачи данных, эффективной антивирусной защите файлообменных платформ. В отдельную категорию вынесена стоимость их использования, которая очень часто является критическим фактором при выборе (тем более, что на рынке есть бесплатные решения).
Файлообменные решения мы оценили по следующим категориям: наличие мобильного клиента, интеграция с Active Directory, шифрование, защита антивирусом, функция запроса файла, отчет об использовании файла, отчет о сетевой активности, управление передачей большого количества файлов, цена (чем дороже решение, тем ниже оценка).
В таблице ниже — результаты нашего сравнения. Мы вошли в ТОП 9.
Подробнее об исследовании файлообменных платформ вы можете прочитать здесь.
В госреестре
Как я уже говорил, файлообменник мы создавали для себя и успешно им пользуемся внутри компании. Но продукт быстро перерос эти рамки. В конце 2016 года наш продукт был внесен в Единый реестр отечественного ПО.
Чтобы попасть в реестр, нам потребовалось больше трех месяцев. Немало времени ушло на подготовку юридических документов для соблюдения правил регистрации.
Источник
Затевая процедуру регистрации, мы опирались на уже существующий опыт интеграции в государственной компании, о которой упоминалось выше. Тогда мы убедились, что наша разработка подходит для крупных компаний, которые предъявляют высокие требования к безопасности передачи данных.
Будущее, но не для всех...
Мы не планируем делать свой файлообменник публичным или каким-то другим образом лишать его корпоративного фокуса. В этом плане нет смысла соревноваться с Google Drive или Яндекс диск. SendFile позволяет использовать в качестве хранилища как внешнее облако, так и пространство непосредственно на сервере.
Коммерческим компаниям продукт может быть интересен, как инструмент который можно тонко настроить под себя. Конечно, заказчикам важно самим определять, как файлообменные процессы будут у них работать. Такой подход к развитию кажется нам правильным. Он характерен и для новых проектов Artezio — от домашней бухгалтерии для мобильных устройств до uber-приложения по спасению людей и животных. Но об этом мы расскажем в других статьях.
На 16-летии Artezio
Комментарии (30)
KYuri
29.06.2017 14:03+1Как должна работать функция «Запросить файл» с точки зрения пользователя?
Я, как пользователь, могу хотеть получить какой-то документ, фотографию, аудиозапись/видеозапись, и т.д. Я могу совсем не знать, как называется соответствующий файл.AndyKy
29.06.2017 14:09+4Это работает немного по-другому. Функция «Запросить файл» позволяет человеку, не имеющему аккаунта в SendFile, загрузить файл. Пользователь получает ссылку на форму загрузки файлов, а после загрузки автору запроса приходит уведомление, что требуемые файлы загружены. Т.е. например, у вас в компании установлен SendFile а у ваших клиентов нет. Вам нужны данные большого объема от ваших клиентов – вы посылаете им запрос, затем они загружают данные в систему, а вы получаете уведомление, что можете их скачать из SendFile.
theLastOfCats
29.06.2017 14:17+2Мне одному кажется, что проект совсем не использует современные технологии?
Java 6, Spring 3 — этим сейчас кто-то пользуется, когда начинает проект?AndyKy
29.06.2017 14:17-1Мы начинали этот проект довольно давно. Соответственно в основе и остались такие технологии
Hixon10
29.06.2017 23:31+1Что мешает обновиться до восьмёрки и 4.3?
Не поймите меня не правильно, просто действительно интересно, ведь оба эти обновления принесут в проект массу полезных плюшек.AndyKy
30.06.2017 11:12Переход на новые версии потребует времени разработчиков, которого всегда не хватает. Если нам это по каким-то причинам станет необходимо – перейдем
mikla
30.06.2017 12:12+1В статье речь про 8 месяцев. 8 месяцев назад была точно уже Java 8.
Даже если проект и начинался сильно раньше, то почему бы средствами тех же самых джуниров из лаборатории, не обновить технологии, которые используются в проекте?AndyKy
30.06.2017 12:44-1Чуть выше ответил, что переход на новые версии потребует времени разработчиков, которого всегда не хватает. Если нам это по каким-то причинам станет необходимо – перейдем.
IvanPonomarev
01.07.2017 15:15+1Возможно, в данном случае всё не так или не совсем так, но по своему опыту я знаю, почему это зачастую бывает.
Служба безопасности Заказчика, Которого К Сожалению Нельзя Называть, ещё не одобрила использование Java8. А ещё они держат огромный штат машин на Windows XP с IE7, и требуют от поставщиков ПО совместимости с устаревшими ОС и браузерами. В данной ситуации хорошо и сотрудникам СБ Заказчика, занятым «полезной деятельностью», и Исполнителю — «любой каприз за ваши деньги». AndyKy, у вас не так?
Всё это шапито продолжается бесконечно, а потом все удивляются, как это WannaCry и Petya могут наводить такой шорох в серьёзных конторах. Да вот так.
И действительно забавно в 2017 году читать на Хабре про Java6.AndyKy
02.07.2017 17:29+1Иван, на фразе про совместимость с IE7 по щеке скатилась слеза, знаете о чем пишите. Но в данном случае это не так. Для Того Самого Заказчика сделана отдельная ветка и в ней же поддерживается. Основная ветка так живет исторически. Кроме времени разработчиков ничего не мешает перейти на Java8, но время довольно существенный для нас фактор.
gds1
30.06.2017 11:03+1как бэ если работает, то и трогать не стоит. а старые технологии или нет, странный вопрос…
Distress
29.06.2017 15:05+1Интересно было бы узнать как реализовано само хранение файлов.
AndyKy
29.06.2017 15:54Если коротко, то файлы хранятся как файлы. :) Реализован механизм создания любого количества хранилищ с контролем максимального объема и привязки пользователя или группы пользователей к хранилищу
sielover
29.06.2017 16:13+1Функция запроса файла" ? Dropbox for Business ? нет?
Странно, ведь request file существует в дропбоксе как минимум год.
AndyKy
29.06.2017 16:27Мы это реализовали значительно раньше, но дело даже не в этом. Не все готовы хранить свои файлы на серверах Dropbox. Наше решение может быть развернуто внутри инфраструктуры компании заказчика. Плюс цена за подписку Dropbox Business в случае большой компании не такая уж и демократичная
AlexAV1000
29.06.2017 19:21+1А почему нет шифрования?
AndyKy
29.06.2017 19:21Шифрование трафика — https, шифрование данных и логика закрытых паролями ссылок у нас в backlog, обязательно сделаем, это одна из приоритетных задач
arachno
30.06.2017 11:18+2вот честно — после слов ClamAV читать расхотелось
объясню чтобы не быть голословным:
1. сигнатурные методы ушли в прошлое
2. повторяем пункт 1.
почему нельзя было сделать микросервис «проверить на какой-тоAV» и после получения выставлять флаг «проверен тем-то»
ну и да — это студенческая подделка, без обид. на что тут тратить столько времени непонятно.
хотя в качестве to-it-as-you-know и посмотреть чего получится — в принципе даAndyKy
30.06.2017 11:19Антивирус, конечно, может быть подключен и другой. Что бы вы порекомендовали из бесплатных серверных?
arachno
30.06.2017 13:55+1avast дает свой серверный вариант по реквесту в саппорт
но это мелочи
вопрос — а есть возможность сделать каскад проверок? вот просто сразу — архитектурой это предусмотрено?AndyKy
30.06.2017 14:29+1Просто из настроек – нет, у нас не было такой задачи, но добавить вызов еще нескольких проверок не проблема, можно и гибкие конфиги под это сделать, если будет в этом необходимость.
alltiptop
Интересно почему отказались от Seafile и Nextcloud (хотя там и пришлось бы доделать функционал)
AndyKy
Проект изначально был учебный, технологии Java, так что эти платформы не очень подходили, хотя функциональность действительно похожая