21 июля 2022
Блог

Как мы перевезли продукт из зарубежного Cloudinary в российское облако Yandex S3

Когда стало совсем непонятно, что будет дальше с иностранными сервисами, мы составили список рискованных ресурсов, в который попал Cloudinary – израильский облачный сервис для хранения медиаконтента. Но с этим облаком взаимодействует много сервисов нашего продукта. Так началась большая работа по переезду в Yandex S3. 

 

Причины переезда 

Медиаматериалы продукта, над которым мы работаем, содержались в облачном сервисе Cloudinary. Он имеет много преимуществ, в числе которых богатый функционал обработки фотографий. 

Со временем объемы контента продукта и способы его использования так разрослись, что даже максимальные пакеты услуг для корпоративного использования перестали закрывать все потребности. При этом стоимость действий и трафика вне пакетов необоснованно дорогая. Дополнительным минусом стал тот факт, что Cloudinary в текущей реальности находится в списке рискованных иностранных ресурсов, и непонятно, что с ним будет дальше. 

Отечественные облака – не хуже и дают стандарты, сравнимые с зарубежными аналогами, поэтому для переезда мы выбрали Yandex S3. Единственная сложность, с которой мы столкнулись – это функционал трансформации фотографий, который есть у Cloudinary и нет у Yandex S3. Он умеет менять размер фото, их расширение и качество. 

Как работает сервис трансформаций

Это происходит так: мы загружаем оригинальное фото в облако, облако возвращает нам ссылку, которую мы передаем всем сайтам-потребителям. Сайт может обращаться в Cloudinary напрямую, чтобы открыть фото у себя на сайте. Но также можно вставить в ссылку определенные атрибуты. Например, указать в URL-строке, что фотография нужна в размере 200х300 (не как у оригинала). Cloudinary, в свою очередь, трансформирует оригинальное фото и отдаст сайту то, что он попросил. 

Собственно, именно сервис трансформации усложнил переезд. Он используется в нашем продукте, поэтому нужно было придумать, чем его заменить. Мы решили эту проблему и создали собственный сервис со сложными трансформациями, который полностью заменил функциональность Cloudinary. В нем есть следующие функции: 

  • Ресайз фото (PAD) и (FIT) – в одном случае размер меняется «обрезкой», в другом – остатки недостающего изображения заполняются черным цветом; 
  • Смена типа на bmp, gif, jpg, pbm, png, tga, tiff, webp; 
  • Смена background для PNG; 
  • Смена качества. 

Сервис предусматривает большие нагрузки, поэтому чтобы все происходило на лету, его разместили не в инфраструктуре заказчика, а также в облаке Yandex S3. Для этого разработчики развернули в облаке Kubernetes и настроили CI/CD. 

Что необходимо учесть при подобном переезде: 

  • Выбрать продукт со схожим функционалом; 
  • Доработать недостающие сервисы/функции; 
  • Просчитать нагрузку и разместить дополнительные сервисы в оптимальном месте.