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 секунди).