Еволюція зберігання даних: як я запустив сервіс на AWS для раціонального утримання «холодних» файлів

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Я інженер програміст з багаторічним досвідом. Моя основна сфера діяльності — розробка веб додатків. Наразі працюю в аутстафінговій компанії на європейскому проекті.

Як і багато користувачів з далекого минулого я тримаю фото та відео подорожей з минулого до війського життя на компютері, і з кожним апгрейдом заліза, з кожним оновленням операційної системи я ношусь з тими файлами як з надзвичано важливими данними хоча насправді вже багато років не відкривав її для перегляду.

То чи насправді треба файли на компютері? Я постійно задаю собі це питання, а якщо я іх забуду перенести випадково чи намвисно, чи багато я втрачу від того? SSD диск коштує грошей і забивати мертвими файлами не дуже приємно, і ось останній раз коли я зіткнувся з пролемою нехватки диску задумався чи купувати ще один накопичувач чи видалити щось на існуючому...

Так от, я вам можу впевнено сказати ви можете заощадити до 80% на фото і не побачите візуально різниці, смарфон робить якісні фото 4К але для того щоб понастольгувати достатно 1080р

Отже щоб звільнити місце я подумав що можна купити дешеву флешку на 256Гб за $15 та скинути туди і все буде ок, як знадобиться більше — купити іншу флешку і так далі.

Але насправді ще погана ідея і ось чому

1) флешка може загубитися

2) флешка може перестати праціювати

3) файли на флешці можуть побитися (це насправді стало для мене найбільшим розчаруванням)

Я вже стикався з фото які або не відкриваються на компютері або на половину сірі чи навіть повністю, виявилось що ні hdd ні флешка не дають гарантії зберігання файлів.

То ж повертаючись до питання а чи треба зберігати старі фото — так треба, в мене не так давно народилася дівчинка і ми постійно робимо нові фото, кількість яких зростає щорічно, втрата фото дуже не бажана. Отже треба надійне сховище для моїх фото які я може колись подивлюсь.

Огляд існуючих сервісів

Звичайно всі знають що є багато сервісів які вже це вміють зберігати, надійно в будьякій кількості

Давайте розгянемо найбільш популярні які варіанти вже існують, я підготував порівняльну таблицю та зробив графік з апроксимацією бо не всі мають однакову градацію тарифних планів

Ще один не дуже відомий для звичайних користувачів, але айтівці точно знають — AWS S3 bucket

  • 1Gb $0.023

Тобто 100Гб за $2.3, що порівняно з іншими не має ніяких переваг... поки що.

Чому мене зацікавив амазон? по перше не потрібно оплачувати одразу весь пакет на 1Тб чи скільки ви собі оберете, тільки за фактичне споживання. Ще один плюс є дуже дешеве зберігання «холодних архівів» приблизно ~$1.00 за 1Тб

Це майже в 10 разів дешевше ніж в усіх конкурентів, і надійність по словам амазону 99,999999999% (11 дев’яток).

А які недоліки такого сервісу?

Вони є і досить багато... все що ви хочете зробити з даними коштує грошей, частіше дорожче ніж саме зберігання. То чи вигідно його використовувати? на мою думку цей підхід має свою перспективну нішу, а саме зберігати довго без частого звернення до файлів. А головне на мій погляд це умовно довгий час відновлення файлу, амазон пропонує відновити файл з глибокої заморозки приблизно за 12годин, чому? бо наші файли знаходяться фізично на «флешці» яку треба підключити до компютера і скопіювати на швидкий диск для доступу. Тому треба створити запит на відновлення і вказати як довго ми хочемо щоб файл був доступним. Відновлений файл коштує в 23 рази дорожче за Гб на місяць, тому треба з розумом використовувати цей ресурс, після того як пройде час відновленого файлу він видалиться з «гарячого» сховища і залишиться тільки «холодна» копія. До речі я не сказав що файл не можна видалити з «холодного» сховища відразу після завантаження... ну запросити видалення можна але сплатити доведеться за зберігання за 180 днів.

Не вивлячись на всі недоліки я вирішив зробити сервіс для зручного використання цього ресурсу і буду намагатися витягнути максимум з нього.

Вимоги до сервісу (Цілі)

Якщо ми наважуємось робити свій сервіс для довгострокового зберігання данних, а серед них найперспективніше це

  • старі фото і відео які можливо я ніколи не подивлюсь але шкода видаляти
  • бекапи які можливо ніколи не знадобляться але критично важливо щоб вони були
  • файли замовників які залишились і можливо знадобляться при повторному замовленні

насправді тут можна додати багато чого основна критерія це рідке звертання на повторне считування, бо викачати файл дорожче ніж його зберігати.

І я взявся за проектування сервісу на мій смак під мої потреби але з урахуванням потенційних клієнтів.

Основні вимоги:

  • я хочу завантажувати фото і відео з телефону та компютера
  • я хочу видалити файли з девайсу але в будь-який момент мати доступ до них
  • я хочу зробити це доступнішим ніж пропонують великі провайдери сховища, інакше це не має сенсу
  • я хочу бути впевненим що фото проживуть у сервісі на все моє життя
  • я вважаю що користувачі захочуть розраховувати на приватність, ніхто не зможе отримати доступ до файлів
  • я вважаю що розробники можуть захотіти автоматизувати збереження бекапів у сервісі

Таким чином я сформулював цілі для MVP(minimal valueble product) і взявся за розробку, в процессі я дода ще багато додаткових цілей які я виніс в наступні оновлення.

Які складнощі в розробці

Як інженер программіст з великим досвідом я звик до ріхного роду викликів у технічному сегменті, я знав як створити сервіс, інтегрувати з провайдером сховища, налаштувати базу данних, зробити збірку та деплой. Хоча було і багато моментів які мені довелося робити вперше, купівля домену, налаштування пошти, інтеграція з платіжними системами тощо....

Але як виявилося розробка сервісу і розгортання його в інтернеті це невелика частина розробки продукту, є багато нюансів з якими мені не доводись стикатись і які насправді займають більшу частину роботи ніж программування, тим більше що з появою ШІ написання коду стає набагато легше. Не буду зупинятися на розробці краще розкажу що насправді за кулісами розробки.

  1. Юридична частина продукту. Я не міг уявити скільки законів можна порушити якщо не врахувати того що публікуєш в інтернеті, обовязково мають бути правила користуванням сервісу, так-так тей самий довжелезний текст який ніхто не читає.
  2. Дизайнерська робота. З мене дизайнер ніякий, тому я використовував ШІ для надання хоч якогось вигляду, впевнений що там ще багато роботи з інтерфесом та навігацією.
  3. Зворотній звязок. Для технічного спеціаліста таких задач ніколи не стояло, спілкування із кінцевим користувачем беруть на себе зазвичай не технічні спеціалісти. Але важливо мати канал звязку з клієнтами.
  4. Маркетинг. Навіть коли створив свій продукт і будеш пропонувати його безкоштовно ніхто вас не знайде щоб покористуватись, треба провести велику роботу з поширення бренду.
  5. Бізнес аналіз. Для мене дуже важливо створити чесний сервіс який може запропонувати цінні послуги без переплат, але в той же момент не зазнати збитків. Треба зберегти баланс щоб задовілнити всіх користувачів.
  6. Платна підписка. Без надійного і безпечного способу оплати сервіс не може інснувати, вкрай важливо запропонувати користувачам той сервіс за адекватну ціну і з найдійним платіжним провайдером.
  7. Безпека. Не достатньо написати сервіс та задеплоїти в хостинг, боти з усього світу почнуть його атакувати майже одразу, треба налаштувати фаєрвол.

Інтерфейс

Є світла та темна тема, я більше полюбляю темну. Є можливість вибрати мову, чесно переклад згенерований ШІ.

Скрін поточної версії файлового сховища, при кліку на архів можна відкрити галерею з превью зі стисненими фото до розміру 800р який я вказав при завантаженні.

Є колекції в які обєднується завантажені архіви. (архіви тому що вони фізично архіви при завантаженні всі файли обєднуються в архів без стиснення для оптимізації запитів)

Приклад сторінки завантаження.

Як бачимо оригінльне фото зроблене на професійну камеру має розмір 30.21 Мб, такий розмір для перегляду фото не потрібне, тому воно стискається наприклад до комфортних 2000рх, з коефіціентом якості 50% і має розмір 419кб. При завантаженні оригінал піде в холодний архів з дешевим зберіганням, а зменьшену копію поміщаємо в сховище для швидкого доступу. Зазвичай достатньо 800рх візуально якість достатня для комфортного перегляду фото. При стиснені деякі кольори можуть трохи змінюватись але оком цього майже не видно.

У лівій частині дропзона для обирання файлів і папок для завантаження, превью для фото, таблиця обраних документів

справа — панель управління завантаженням

  • розмір та кількість всіх файлів,
  • назва архіву,
  • чекбокси активаціх для завантаження оригіналів у Deep Archive
  • чекбокс для завантаження превью у гаряче сховище для швидкого доступу.
  • повзунок для регулювання розміру превью
  • повзунок для регулювання якості превью
  • кнопка пуску

Тут можна обрати якість для превью та при кліку на фото подивитись якість в повний розмір.
також доступні функції

— завантажити тільки превью без оригіналів. В цьому випадку розмороження не знадобиться все буде в швидкому доступі

— завантажити оригінали без превью. це дозволяє зберігати файли без фото, наприклад бекапи в яких превью не потрібне

— встановити пароль на архів, пароль встановлюється на превью та оригінал однаковий і якщо ви втрачаєте його то відновити файли буде не можливо. Якщо ви використовуюєте гугл хром то він запропонує вам зберегки паролі в менеджері паролей

Висновки

Отже мій сервіс не є конкурентом для гігантів з гарячим доступом, але в плані довгострокового надійного, безпечног та дешевого сервісу я честно альтернативи не бачу, тим паче що всі згадані гіганти використовують ваші данні для навчання своїх ШІ.

Оглядуючись на пророблену роботу я з впевненістю можу сказати що цей проект для мене найцінніший досвід який я не міг отримати працюючи у великих компаніях розробляючи додатки в різних сферах. І в багато чому я вдячний розробникам штучного інтелекто бо без нього розробка зайняла в десятки разів довше, я навчився те про що навіть не підозрював тримаючи за руку віртуального помічника.

Попереду ще багато роботи по вдосконаленню та просуванню, і я буду вдячний за підказки що б могло стати важливою фічею в моєму сервісі. Критика теж буде корисна тому чекаю всіх у коментарях. Я працюю над зручним апі для автоматизації завантаження скриптами, додам SDK для пайтона та планую зробити мобільний застосунок для автоматизації збереження фото з телефону.

icevault.space

Я планую ще статю про технічні деталі як все побудовано, чому саме такі технологіїї я обрав.

👍ПодобаєтьсяСподобалось11
До обраногоВ обраному4
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Чому ви вирішили використовувати саме AWS, а не Cloudflare? Так і проблем з цінами на egress можна уникнути👀

Дякую за влучне запитання! Cloudflare R2 дійсно пропонує чудове гаряче сховище з безкоштовним egress, але за ціною $15 за 1 Терабайт на місяць.
Проте, якщо ви хочете використовувати саме R2 — це вже можливо! Я реалізував концепцію BYO S3 (Bring Your Own S3), яка дозволяє підключати бакети будь-яких сумісних вендорів: Cloudflare R2, Backblaze B2, AWS або навіть власний self-hosted MinIO. У такому режимі ваші файли завантажуватимуться напряму у вашу хмару.

Для підключення власного сховища перейдіть у: Меню користувача ➡️ Settings ➡️ External Storage (BYO S3).

res.cloudinary.com/...​/nraqightsbr9dixtridm.png
Там ви зможете легко додати свій бакет, який сервіс використовуватиме для запису та менеджменту ваших архівів.

Дякую за матеріал, але, на жаль, на сайті не знайшов якоїсь сторінки в соц. мережі, щоб можна було слідкувати за апдейтами по проекту.

Дякую! Дуже приємно чути, що вас зацікавив проєкт і ви хочете стежити за його розвитком.

Окремих сторінок у соцмережах я поки що дійсно не створював, оскільки повністю сфокусований на релізах та технічній частині. Проте ви можете стежити за всіма оновленнями та планами розвитку проєкту на нашій публічній дорожній карті прямо на сайті:

icevault.space/community/roadmap

Теж мав схожу проблему... використав гітхаб, (закинув вже 52Гб на 1 репозиторій але там є обмеження що 1 файл не більше 100мб). Ідея в тому що потрібно ще й давати можливість шарити файли з кимось по посиланню через гітхаб пейджес.
Тут є демо якщо цікаво:
www.linkedin.com/...​-7457031600363470848-ZlHJ

Блокування акаунту амазон веде до видалення усіх сторадж обʼєктів, а це можна зловити дуже легко

Коментар порушує правила спільноти і видалений модераторами.

Чому в порівняльній таблиці цін для 2ГБ лише у Dropbox вказано безкоштовно, якщо у всіх цих платформ декілька гігів (5 у iCloud та OneDrive i 15 у Google Drive) надається безкоштовно?
Також на сайті на сторінці icevault.space/community/roadmap кілька помилок:
Після 2026.03.07 йде 2026.07.13 (мало би бути «03» замість «07»)
У англійській версії є різні невеликі проблеми з граматикою

Дякую за цінні знахіднки. У вас гарно розвинена уважність до деталей. Всі зауваження приймаю як баги, а в статті не правильно підготовлена порівняльна таблиця.

res.cloudinary.com/...​/ptvlgssgy4cjppa7yeqn.png
текст на кнопці прийняття кукі майже не можливо прочитати без зуму/вглядання

я хочу зробити це доступнішим ніж пропонують великі провайдери сховища, інакше це не має сенсу

Как бы есть IDrive e2 — это полноценное «горячее» хранилище c мгновенным доступом к файлам по цене в среднем $4.2 в месяц (и на первый год со скидкой выходит около $2.1). Вы предлагаете «холодное» с кучей ограничений за $5.60. Или я что-то не понял

Дякую за коментар! Ви абсолютно праві щодо цифр IDrive e2, але тут є принципова технічна різниця. IDrive e2, як і AWS S3 — це IaaS (гола інфраструктура). Це просто хмарне сховище для розробників та сисадмінів, яке не має зручного інтерфейсу для кінцевого користувача. До того ж, якщо почитати фідбек спільноти, у подібних ультрабюджетних сховищ часто є нюанси зі стабільністю швидкості та плаваючими тарифами.
IceVault — це SaaS (готовий продукт). Наше ядро побудоване на базі наднадійної інфраструктури AWS, але ми продаємо не просто простір, а готову екосистему: з шифруванням, оптимізацією даних, миттєвим рендером прев’ю та інтерфейсом, зрозумілим кожній людині.
Проте, якщо ви просунутий користувач, вас не лякає менеджмент API-ключів, і ви готові взяти на себе ризики стабільності лоукостерів — у нас для вас хороші новини. Зараз ми активно працюємо над функцією BYO S3 (Bring Your Own S3). Ви зможете підключити свій бакет (навіть той самий IDrive e2) до нашого інтерфейсу й отримати найкраще з обох світів: ультрадешеве сховище + наш інтерфейс.

інтерфейсом, зрозумілим кожній людині

Как идея — это интересно, но как объяснить простому человеку, что нельзя скачивать, допустим, 500 ГБ скопом? Для личного пользования — это, пока что, лучший вариант по себестоимости для хранения фото. Для масс — сложно будет продать из-за особенностей холодного хранилища. Буду наблюдать за проектом.

Для фотографів (а саме вони мають великі архіви фото) також важлива можливість збереження raw-форматів і оброблених фото в psd. Плюс превью у jpeg.

Згоден, дякую за підказку, чомусь одразу не врахував підтримку сирих файлів, обовязково додам

На кнопці перемикання мови англійська чомусь написана українською. Як буде цільовий користувач розуміти що англійська, то English — не зрозуміло

Цілком слушне зауваження, кожна мова має бути підписана своєю мовою, дякую! виправлю в наступному оновленні

Підкажіть будь ласка,
який КВЕД (Класифікація видів економічної діяльності) потірбно використовувати під таку бізнес модель?

Доброго дня, веб сервіси (SaaS) потребують відкритого КВЕДу
63.11 Оброблення даних, розміщення інформації на веб-вузлах і пов’язана з ними діяльність — обирається, якщо ви надаєте програмний продукт у режимі онлайн (SaaS), хмарні послуги або розміщуєте свої додатки на власних серверах.

Підписатись на коментарі