Transloadit — это сервис обработки файлов, предназначенный в основном для обработки изображений, видео и аудио.
Это позволяет вам выполнять различные операции с этими файлами, проводимые так называемыми «роботами»; например, изменение размера и оптимизация изображений, извлечение миниатюр из видео или преобразование файлов из одного формата в другой.
TransloadIt также позволяет загружать файлы непосредственно на их серверы для обработки, а не через ваше приложение. Действительно, вы можете полностью обойти свой сервер, передав обработанные файлы прямо в корзину Amazon S3, учетную запись Rackspace Cloud Files или на свой собственный сервер через (S) FTP. Другими словами, ваше приложение должно заботиться только о том, где найти результирующие файлы, без необходимости обрабатывать или хранить их напрямую — отлично подходит для запуска распределенных приложений или для кластеров.
В этом уроке мы подробно рассмотрим Transloadit и, в частности, используем его для обработки изображений. Мы рассмотрим некоторые ключевые концепции, такие как создание «инструкций по сборке», чтобы рассказать, что мы хотим сделать с нашими загруженными файлами изображений. Мы «захватим» форму загрузки файла, чтобы отправить файл непосредственно в TransloadIt, запустим набор инструкций для генерации ряда «производных» — изображений разного размера — и затем сохраним их в корзину Amazon S3. Наконец, мы рассмотрим, как мы можем использовать результаты этих операций, чтобы уведомить наше приложение о вновь созданных файлах, чтобы мы могли соответствующим образом обновить нашу базу данных.
Прежде чем мы подробно рассмотрим Transloadit, стоит сделать шаг назад и обсудить, почему вы хотите использовать сторонний сервис для чего-то подобного, а не реализовывать его самостоятельно.
Зачем использовать сторонний сервис?
Обработка изображений не так сложна в реализации, и для этого есть множество библиотек. Так зачем вам вообще использовать сторонний сервис?
-
Во-первых, это позволяет вам сконцентрироваться на том, что представляет собой ваше приложение. Зачем тратить дополнительное время и усилия, скажем, на функциональность фотографий профиля пользователя, когда вы можете сосредоточить свои усилия на разработке критически важных функций?
-
Обработка изображений может быть довольно ресурсоемкой. В частности, изменение размера больших изображений может потреблять много памяти. Использование службы, такой как Transloadit, снижает нагрузку на ваши серверы.
-
Обработка файлов обычно требует установки дополнительных библиотек или программ на ваш сервер; например,
gd
илиImagemagick
для изображений илиffmpeg
для видео и аудио. Используя сторонние сервисы, вам не нужно беспокоиться об их установке, настройке или обслуживании. -
«Задания» Transloadit могут выполняться в фоновом режиме, а не задерживать выполнение вашего приложения. Хотя существуют решения, позволяющие обойти это в вашем собственном приложении — например, очереди, такие как RabbitMQ или Beanstalkd , или серверы заданий, такие как Gearman , использование TransloadIt освобождает вас от дополнительных усилий по разработке и этапов установки, необходимых для их реализации.
-
Серверы Transloadit оптимизированы для обработки загрузки файлов, поэтому производительность может быть намного выше, чем если бы вы реализовали их самостоятельно.
-
Разрешение на загрузку файлов на ваш веб-сервер также имеет всевозможные последствия для безопасности, которые вы должны принять во внимание. Используя сторонний сервис, эти риски несколько снижаются.
-
Это децентрализовано. Вы можете настроить его так, чтобы загруженные файлы передавались через службу и напрямую во внешнее хранилище, такое как S3, без необходимости хранения на вашем веб-сервере. Хотя это не может показаться огромным преимуществом для небольшого приложения, вы получите его, как только оно достигнет уровня, когда у вас будет несколько служб, например, кластер.
В зависимости от вашего приложения, вашего предпочтительного хостингового решения, вашего опыта или количества времени, которое у вас есть, шансы не все из них будут применяться. Возможно, нет; это не оптимальное решение для всех случаев.
Естественно, есть и недостатки. Вот некоторые из них:
- Это вводит дополнительную точку отказа.
- Это может означать передачу конфиденциальных файлов третьим лицам.
- Наконец, есть финансовые затраты.
Имея в виду все эти плюсы и минусы, давайте начнем детально смотреть на сервис. Затем, во второй части, мы рассмотрим практический пример того, как его использовать.
Начало работы с Transloadit
Transloadit предлагает бесплатную учетную запись «песочницы», которая дает вам в общей сложности 1 ГБ для игры — этого будет более чем достаточно, чтобы следовать этому уроку, а затем и некоторым. Доступно несколько платных планов , которые дают различные объемы мощности в месяц. Платные планы начинаются с 19 долларов в месяц, на момент написания.
Фактическое определение емкости зависит от того, для чего вы используете сервис. Чтобы проиллюстрировать, что это означает в контексте обработки изображений, вы можете определить использование, используемое при обработке одной конкретной загрузки изображений, добавив размер файла исходного файла к общему размеру полученных обработанных изображений. Предположим, что вы загружаете изображение размером 800 КБ, которое, в свою очередь, используется для создания большой версии 400 КБ, средней версии 200 КБ и миниатюры 30 КБ. Если вы используете наименьшую возможную версию в качестве входных данных для следующего изменения размера, то для этого ограничения будет использоваться (800Kb + 400Kb) + (400Kb + 200Kb) + (200Kb + 30Kb) = 2,030Kb к вашему пределу. Эти вычисления становятся более сложными, когда вы начинаете работать с видео или аудио, поэтому вы, вероятно, захотите обратиться к их веб-сайту.
Если вы планируете следовать и пройти практический пример во второй части, сейчас самое время зарегистрироваться. Зайдите на сайт и нажмите «Начать».
Теперь давайте рассмотрим некоторые концепции и компоненты, из которых состоит сервис, чтобы лучше понять процесс.
Концепции
сборки
Сборка, по сути, представляет собой набор инструкций, которые сообщают службе Transloadit, какие действия вы хотите, чтобы они выполняли над определенным файлом (или группой файлов).
На практике вы, вероятно, создадите разные наборы инструкций по сборке для разных типов файлов. После этого вы, вероятно, создадите несколько разные инструкции по сборке для подтипов. Например, для изображений / аватаров профиля пользователя может потребоваться один конкретный набор размеров, а для баннеров профиля — совершенно другой набор; поэтому в этом сценарии вы должны создать набор инструкций по сборке для каждого.
Инструкции по сборке содержат список шагов, точно определяющих, какую обработку выполнять и в каком порядке. Каждый шаг выполняется роботом .
Роботы
«Робот» похож на рабочего, который выполняет какую-то обработку. Существует несколько различных типов роботов:
Роботы-импортеры могут получать файлы из разных источников, а не только путем загрузки файлов на основе форм. Например, вы можете создать робота, который импортирует файлы по HTTP, используя (S) FTP или загружая их из корзины Amazon S3.
Роботы логики потока сборки могут использоваться для фильтрации входящих файлов — например, вы можете настроить робота для отклонения файлов, которые не являются изображениями.
Роботы изображений выполняют ряд различных задач с файлами изображений, в первую очередь изменяя размеры. Есть также роботы для оптимизации файлов изображений или создания скриншотов.
Видео и аудио роботы выполняют действия с определенными типами файлов. Поскольку этот урок сфокусирован на изображениях, мы не будем рассматривать их в деталях — но следите за новостями позже.
Роботы экспорта файлов используются для передачи результатов ваших сборок в постоянное хранилище. Важно отметить, что TransloadIt не размещает ваши файлы; хотя они и делают их доступными для загрузки через корзины S3 после обработки, они не будут храниться дольше 24 часов. Вы несете ответственность за то, чтобы ваши файлы хранились где-то под вашим контролем. Вы можете настроить робота для передачи ваших файлов в корзину Amazon S3, в Rackspace Cloud Files или передавать их на ваш сервер, используя (S) FTP.
Инструкция по сборке здания
Инструкции по сборке определены в формате JSON или как хеш, который можно использовать с одной из различных доступных библиотек. В большинстве случаев вы, вероятно, будете использовать официальный плагин jQuery для взаимодействия со службой из вашего клиентского приложения, но есть и другие доступные варианты. Вам не обязательно использовать его из клиентского приложения — также доступны серверные библиотеки.
Во второй части мы подробно рассмотрим, как вы создаете инструкции по сборке.
Шаблоны
Инструкции по сборке говорят роботам, что делать с вашими файлами, но также включают любую дополнительную информацию, которая им понадобится для их запуска. Это реальная проблема, когда речь идет, в частности, об этапах экспорта файлов, так как им потребуются учетные данные, с помощью которых они могут получить доступ к вашей корзине S3 или службе (S) FTP. Ясно, что их определение в коде на стороне клиента будет иметь катастрофические последствия, поэтому по этой причине вы будете использовать шаблоны.
Вместо того чтобы определять свои инструкции по сборке при вызове API TransloadIt — например, при использовании плагина jQuery — вместо этого можно создать документ JSON, содержащий соответствующие инструкции по сборке на сервере TransloadIt, а затем ссылаться на этот шаблон по его уникальному идентификатору. Шаблоны зашифрованы на стороне сервера для дополнительной безопасности.
Вы также можете объединить дополнительные параметры или переопределить существующие в шаблон во время выполнения — все это время, сохраняя конфиденциальную информацию, такую как учетные данные S3, в безопасности от посторонних глаз.
Подписи
Сигнатуры решают проблему предоставления учетных данных для аутентификации TransloadIt в коде на стороне клиента почти так же, как шаблоны защищают ваши учетные данные, связанные с хранением.
Сигнатура — это по сути токен доступа с коротким сроком действия, который вы генерируете на сервере, передаете в клиентское приложение и затем используете для аутентификации в службе. Если кто-то получит это значение, оно очень быстро станет бесполезным. Подписи также «привязаны» к определенному набору инструкций по сборке или одному конкретному шаблону, что делает их еще более безопасными.
переменные
Вы можете использовать переменные в ваших инструкциях по сборке. Это особенно полезно при определении имен обрабатываемых файлов. Так, например, если вы изменяете размер загруженного аватара пользователя, вы можете предоставить идентификатор пользователя или имя пользователя, чтобы сформировать часть получаемого имени файла. Позже мы увидим, как имена различных шагов, которые вы можете определить, также могут использоваться в качестве переменных.
Использование полей формы
Когда вы используете TransloadIt из клиентского приложения (например, формы загрузки), переменные могут быть получены из полей формы. Таким образом, в приведенном выше примере для загрузки пользовательских аватаров вы можете поместить идентификатор пользователя в скрытое поле формы, а затем включить его в инструкции, отправляемые на серверы TransloadIt.
Резюме
В этой первой части мы подробно рассмотрели сервис TransloadIt. Мы рассмотрели, что он может сделать, и некоторые плюсы и минусы использования такого сервиса для выполнения задач, которые вы могли бы реализовать самостоятельно.
Мы рассмотрели некоторые концепции, которые вам необходимо понять, чтобы получить максимальную отдачу от TransloadIt, и с учетом этих базовых знаний мы готовы приступить к созданию практического примера. Оставайтесь с нами для второй части.