Imperial BeachImperial Beach // 2017-12-10

Backblaze B2

Я почав використовувати онлайн сховище Backblaze B2 для збереження фотографій для нової версії галереї 2 місяці тому. Якщо перед ним поставити Cloudflare Proxy то виходить більш-менш нормальний сервіс. Але за цей час я помітив кілька проблем: короткотермінова (528 помилка Cloudflare) та довготермінова (500 помилка Backblaze).

Короткотермінова проблема повʼязана з неможливістю Cloudflare встановити звʼязок з Backblaze чи перевірити його TLS сертифікат (технічні деталі мене невідомі). Зазвичай друга чи зрідка третя спроби дістати файл закінчувалася вдало. Тому я просто додав в Cloudflare Workers переадресацію на той самий файл з додатковим параметром:
/path/to/image.jpg -> /path/to/image.jpg?1601059967

Довготермінову проблему я спостерігав лише раз, але вона тривала мінімум годину. Суть в тому, що Backblaze повертав помилку 500 – internal incident на деякі запити і нічого з цим вдіяти не можна. Якщо файл вже був в кеші Cloudflare то це не було помітно, але деякі файли не вантажилися.

Сервісів для збереження файлів онлайн можна знайти десятки і здається я знайшов непогану альтернативу для свого сайту.

Scaleway Object Storage

У цього сервісу є певні переваги перед Backblaze B2:

  • 75Гб безкоштовного місця замість 10Гб
  • необмежена кількість безкоштовних запитів замість 2500 на день
  • можна отримати «гарну» адресу файлів без використання Cloudflare Workers
  • стабільність сервісу (субʼєктивно, треба більше часу на тестування)
  • в Європі у них є датацентри в Парижі та Варшаві на додачу до Амстердаму

але є й недоліки:

  • збереження файлів понад безкоштовний ліміт коштує €0.01 за 1Гб/місяць замість $0.005 (в 2.4 рази дорожче)
  • 75Гб безкоштовного вихідного трафіку на місяць замість безліміту, потім €0.01 за 1Гб
  • немає датацентру в Америці

Я думав, що трафік через Cloudflare буде безкоштовним (Scaleway як і Backblaze є частиною Bandwidth Alliance). Але запитавши службу підтримки я дізнався, що трафік все одно рахується. Для невеликого сайту як мій це не має значення. В крайньому випадку (при різкому зростанні трафіку) можна повернутися назад на Backblaze.

Scaleway підтримує протокол Amazon S3, тому для синхронізації можна використовувати ту саму програму rclone, що й для Backblaze.

Власний домен підключити не складно. Достатньо створити контейнер з іменем типу bucket.example.com та направити (CNAME) цей субдомен на їх технічну адресу s3.xxx.scw.cloud. Але для підтримки HTTPS доведеться використати якийсь CDN/проксі інакше буде помилка SSL сертифікату. Сподіваюсь вони колись почнуть генерувати сертифікати за допомогою Let’s Encrypt для доменів користувачів.

Результат

Я потестую Scaleway кілька тижнів перед тим, як скласти остаточне враження, але поки все працює добре.

За моїм стостереженням, Scaleway віддає файли більш рівномірно (десь протягом 1 секунди) ніж Backblaze (від 0.5 до 3 секунд).
Візуально це виглядає як завантаження усіх фотографій на сторінці майже одночасно замість мозаїки, що хаотично наповнюється.
Можливо разниця в тому, що Backblaze був підключений через Cloudflare Workers а Scaleway — напряму через Cloudflare Proxy. В будь-якому випадку Cloudflare кешує найпопулярніші файли та віддає їх дуже швидко (біля 0.2 секунди).