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

Під час завантаження сторінок багатьох великих інтернет-проектів нерідко можна помітити, що ресурси на зразок картинок і відео найчастіше підвантажуються звідкись s3.amazonaws.com. Легко здогадатися - вони знаходяться в хмарі, а саме в Amazon S3. Іноді не все так очевидно: хто ж міг подумати, що відомий сервіс для синхронізації даних між комп'ютерами Dropbox - це гарний, багатоплатформений клієнт для доступу до файлами, які знову ж таки зберігаються на Amazon S3? І як, зауваж, добре працює! Не треба пояснювати, навіщо високонавантажених проектам необхідна надійна майданчик для розміщення файлів, яка 99.9% буде онлайн. Але це може знадобитися і звичайному користувачеві. Банальна завдання - збереження даних. Після того, як впав мій зовнішній жорсткий диск з величезною кількістю фотографій, я задумався про те, що непогано зробити бекап. Але куди? Викладати на flickr або Яндекс.Фотки зручно, але все-таки далеко не всі фотографії хочеться викладати в фотохостинг, навіть під замок. Називайте мене параноїком. Більше того, фотки - це фотки, а як бути з резервних копій інших файлів? Є кілька серверів, звідки періодично необхідно зливати кілька сотень мегабайт бекапа, але надійною майданчики я так і не знайшов. Хто гарантує, що жорсткий диск на виділеному сервері, куди відправляються бекапи, точно так само не накаже довго жити? Про бекапа на інші носії, у тому числі DVD, не хочу навіть задумуватися: це дико незручно і взагалі минуле століття. Загалом, саме в той самий момент, коли я задумався про майданчик для надійного зберігання файлів, мені прийшла в голову ідея про Amazon S3. І ось чому.
Що таке S3?

Amazon S3 розшифровується як Amazon Simple Storage Server - просте сховище файлів від Amazon. Якщо говорити коротко, то це просто сховище в Інтернеті. "Причому тут хмарні обчислення, це ж звичайний хостинг?", - Можливо, помітиш ти. Зараз я поясню. У звичайного хостингу завжди є кілька обмежень. Перше саме прозоре - об'єм жорстких дисків (особливо, якщо це стосується дорогих SCSI). Упрешся в стелю - потрібно робити апгрейд. З другим обмеженням стикаєшся, коли на ресурс несподівано приходить надмірно багато користувачів, і сервер банально ... падає. Або інший варіант - не вистачає Інтернет-каналу, і користувачі тягнуть файли так, як якщо б опинилися 10 років тому на 36.6К-модем. Мало цього, якщо раптом жорсткий диск на сервері полетить, то найкраще, на що доведеться сподіватися, - це лише колись зроблений бекап. На жаль, навіть з резервної копією, зробленою кілька годин тому, можна втратити тонну важливих даних. А тепер подивимося на Amazon S3. Тобі надається рівно стільки простору в сховище, скільки потрібно. Хоч 10 Мб, 1 Гб або навіть 5000 Гб - ніяких обмежень (обмовлюся, крім максимального розміру на файл - 5 Гб). У датацентрах Amazon використовується спеціально пророблена обладнання та розподілені файлові системи, що дозволяють нескінченно масштабуватися. Ті ж самі знамениті технології, які давним-давно використовувалися, скажімо, в Google для зберігання величезних масивів даних, але у вигляді послуги для кінцевого користувача. Що не менш важливо, Amazon S3 гарантує схоронність даних. Будь-який об'єкт в обов'язковому порядку надлишково зберігається одночасно в декількох місцях. Як тільки об'єкт потрапляє в сховище, S3 піклуватися про його надійність, перевіряючи і в разі необхідності збільшуючи відсутню надмірність даних. Крім цього, S3 також регулярно перевіряє цілісність даних, що зберігаються, використовуючи контрольні суми. Якщо раптом виявляються порушення, цілісність відновлюється знову ж за допомогою тих самих надлишкових даних. Що все це дає? Багато "дев'яток":

    * 99.99% доступність файлів протягом року;
    * 99.999999999% надійності.

Стоп, я ще не сказав про систему версійність. Ти можеш використовувати її для збереження, вилучення та відновлення попередніх версій об'єкта, що зберігаються в Amazon S3. Запит за замовчуванням витягує останню версію. Але більш стару модифікацію файлу можна закачати, вказавши версію файлу.
Скільки це коштує?

Звичайно, послуги Amazon S3 не безкоштовні, як і за все хороше, доведеться платити. Але я б ніколи не став розповідати про хмарних обчисленнях у такому ключі, якщо б не більше ніж підйомні ціни. Якщо мова йде про невеликі обсяги для зберігання (на бекап якихось важливих файлів) і невеликому трафіку, то виходять фактично копійки. У Amazon використовується регресійна шкала: чим більше хостів, тим дешевше тобі обходиться гігабайт сховища. До 50 ТБ вартість гігабайта становить $ 0.150. Приблизно 4.5 рубля за гігабайт на місяць! Правда, окремо доведеться платити за трафік (поки безкоштовно), а також запити для звернення до об'єктів ($ 0.01 за 1000 запитів).

Щоб відразу зрозуміти, скільки приблизно ти будеш витрачати, можеш скористатися спеціальним калькулятором. Вибираємо в меню, що хочемо підрахувати вартість для сервісу Amazon S3 (це не єдиний проект хмарних обчислень від цієї компанії), і вводимо дані на власний сховища бекапів. Я використовую близько 20 Гб для зберігання файлів, вхідний трафік складає приблизно 5 Гб, а вхідного практично немає (зазначимо для вірності теж 5 Гб). Кількість запитів PUT / COPY / POST / LIST - близько 5 тисяч, стільки ж зазначимо для запитів GET. Заповнивши поля, натискаємо на "Add to bill" і дивуємося ціною справа.

Виходить, за наднадійні сховище з підтримкою версійність, яке доступне 99.99% часу, доведеться платити $ 3.66 в місяць, а це трохи більше 100 рублів. Не те щоб дуже великі плати за спокій і гарантію збереження даних. До того ж, сам факт використання самих передових технологій: розібравшись з S3 для зберігання бекапів, у разі необхідності легко потім підключити cloud-storage до свого високонавантаженого проекту. Якщо у тебе є такою, але при цьому хостинг постійно відмовляє, а ширини каналу не вистачає, щоб витримати години пік, обов'язково порахуй витрати на утримання S3. Цілком імовірно, що при тих же витратах ти зможеш отримати безпроблемне сховище в хмарі, а може - навіть дешевше!

Тут є ще одна хитрість. У калькуляторі є один незрозумілий на перший погляд параметр Reduced Redundancy Storage (RRS). Це відносно недавно з'явилася опція в S3, що дозволяє зменшити витрати за рахунок купівлі дискового простору в менш надійному контейнері. Це, звичайно, не означає, що файли будуть хоститься на якому-небудь старому обладнанні або на зразок того. Звичайно, ні - просто для файлів у такому сховищі буде використано меншу кількість надмірності і меншу кількість реплікацій. Але навіть у такому випадку надійність зберігання буде в 400 (!) Разів вище, ніж просто вдома на жорсткому диску. Таке сховище дешевше (це легко перевіряється калькулятором), але теоретично менш надійно. Тут важливо ще сказати, що у Amazon S3 є три регіони, в яких розташовані датацентри - два в Америці, один в Ірландії і один в Сінгапурі. Це зроблено для того щоб мінімізувати затримки: краще всього вибирати регіон ближній до себе, але при цьому мати на увазі, що ціна між різними регіонами може незначно відрізнятися.

XXX ЗАГОЛОВОК XXX
Як підписатися?

Якими б пафосними не були розмови про хмарних обчисленнях, почати їх використовувати - нікчемна справа. У першу чергу, як вводиться, необхідно зареєструватися: тиснемо на кнопку "Sing up for Amazon S3" на офіційній сторінці сервісу aws.amazon.com/s3. Якщо ти до цього моменту купував щось в інтернет-магазині Amazon (а я, наприклад, купував у ньому Radar-детектор вдвічі дешевше, ніж він продається в Росії), то можна використовувати вже наявний обліковий запис. В іншому випадку доведеться заповнити декілька стандартних форм. Так чи інакше, рахунок у Amazon'е у нас є, тепер необхідно обзавестися доступом до самого S3, а вірніше всім Amazon Web Service (AWC). Вводимо своє ім'я, поштову адресу, пароль і вибираємо метод платежу. Для оплати, як не крути, знадобиться карта міжнародної платіжної системи, тобто Visa або Mastercard. Ти можеш скривився: "Мовляв, фігня якась: ні Webmoney, ні Яндекс.Денег ні - не буду користуватися". Насправді, час диктує нові правила. Кредитною картою можна розплатитися скрізь: я навіть не кажу про іноземні магазинах і проектах, їх почали нормально приймати скрізь в Росії. Витрати мінімальні: якщо картка потрібна тільки для оплати в Інтернеті, згодиться віртуальна версія (тобі видається тільки номер картки, час витікання й cvv2 код замість самої пластикової картки). Обслуговування Visa Virtuon коштує 200 рублів на рік, при цьому ти можеш розплачуватися нею без комісії, як у випадку з електронними грошима. Таку карту приймають скрізь, де є логотип Visa - простіше кажучи, їй можна розплатитися скрізь:). Amazon спише з картки один долар, щоб перевірити валідність карти, і через деякий час поверне його. Це спочатку насторожує і бентежить: "Один долар, і все?". Так і є - сервіс використовує оплату постфактум. Скільки будеш використовувати простору, скільки трафіку нагенерішь - за стільки і заплатиш. Дуже зручно і гнучко. Через кілька хвилин після реєстрації на пошту прийде лист з підтвердженням того, що твій акаунт активовано. Можна починати працювати.
Наше перше звернення до сховища

Перш ніж рватися в бій, необхідно розібратися, як власне влаштований S3 і як працювати з файлами, які знаходяться в хмарі. У платформі від Amazon немає звичної файлової системи - вона розподілена. Тут немає такого поняття як файл або каталог: на практиці це означає, що ти не зможеш взяти FTP-або SSH-клієнт і звернутися до них.

Amazon S3 концептуально - це дуже просте key-based сховище. Це означити, що коли ти розміщувати дані, їм присвоюється унікальний ключ об'єкта, який далі може бути використаний, щоб ці файли отримати. Кожен об'єкт знаходиться всередині так званого bucket'а - це фундаментальне поняття S3, що означає контейнер для зберігання будь-якої кількості об'єктів. Але оскільки ключ може бути рядком, то він може імітувати ієрархію каталогів. Останнє означає, що якщо у тебе є файл scanner.zip в каталозі xtoolz, то ти можеш залити його в сховище S3 і присвоїти йому ключ xtoolz / scanner.zip.

Будь-які об'єкти знаходяться в хмарі не самі по собі, а всередині так званого bucket'а. Bucket або відро - це концептуальне поняття контейнера всередині Amazon S3, в якому може перебувати нелімітоване кількість об'єктів. Назва bucket повинна бути унікальною по всій системі Amazon S3, тому як є ідентифікатором для доступу до об'єктів bucket'а ззовні. Наприклад, якщо об'єкт називається xtoolz / scanner.zip і знаходиться в bucket'е xakep, то до нього можна звернутися, використовуючи URL http://xakep.s3.amazonaws.com/xtoolz/scanner.zip. Звертатися до bucket'ам можеш тільки ти сам, а можеш дозволити це робити іншим. За допомогою атрибутів об'єкта ти можеш дозволити або заборонити доступ іншим людям, які хочуть завантажувати або заливати файли в твої bucket'и. Так, щоб кожна людина могла завантажити об'єкт з твого сховища за адресою http://xakep.s3.amazonaws.com/xtoolz/scanner.zip, йому повинні бути присвоєні права для читання "All".

Для роботи з об'єктами використовуються технології REST і SOAP, а всі операції виконуються за допомогою запитів (саме тому за них треба платити). П'ять основних операцій: створити bucket, записати об'єкт (вказавши унікальний ключ і bucket), вважати об'єкт (можна завантажити файл по HTTP або BitTorrent протоколу), видалити об'єкт, вивести лістинг ключів (отримати список всіх ключів, що зберігаються всередині зазначеного "відра").

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

Так як же отримати доступ до цих bucket'а і створити, нарешті, своє перше сховище? Є кілька варіантів. Можна скористатися безкоштовним розширенням для Firefox - S3Fox: за допомогою нього можна робити практично все. Встановлюється як і будь-який інший аддон, але при першому ж запуску обов'язково вилається з приводу отстствующіх акаунтів. Можеш не пробувати вводити сюди email та пароль для доступу до особистого кабінету Amazon - йому потрібне зовсім інше. У S3 використовується досить потужна модель безпеки, що передбачає різні способи авторизації. Найпростіший спосіб звернутися до сховища - використовувати пару ключів Access Key ID - Secret Access Key (вони ж використовуються для симетричного шифрування). Отримати ключі, створити нові або заблокувати існуючі можна в розділі Security Credentials, в який можна потрапити з свого особистого кабінету. Виглядають вони приблизно так:

Access Key ID: AKIAIEAXPSMKJUXB3XDQ
Secret Access Key: 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

Все, тепер створюємо новий рахунок у S3Fox, вводимо ключі - і, ву-а-ля, з'єднання встановлюється. Виглядає S3Fox, як і будь-якої файлової менеджер з двома панелями: з одного боку локальні диски, з іншого - хмара. Якщо спробувати перемістити файл або папку, плагін скаже, що для цього попередньо потрібно створити bucket. Об'єкт в хмарі не може бовтатися сам по собі і обов'язково повинен бути прив'язаний до одного з "відер". Сам процес створення bucket мало чим відрізняється від створення каталогу на локальному диску, про правила складання імені підкаже сам плагін. У цілому треба використовувати ті символи, які можуть бути в URL - як я вже сказав, ім'я "відра" далі використовується для складання URL для доступу файлу ззовні. Пробуємо залити файл - вийшло. Виберемо цілу папку - немає проблем, файли по черзі заливаються з використанням черги. Тепер подивимося, чи доступні файли ззовні. Через контекстне меню якого-небудь файлу натиснемо "Copy URL" і спробуємо відкрити отримане посилання в браузері (http://xakep.s3.amazonaws.com/xtoolz/scanner.zip). Облом:

AccessDeniedAccess Denied31D32B892AF10B41tDOSXPdDmixz7CkanMA1GoYbaBhgcTjQy8l93OqTNsXXJqmj3snzF2fOdlAQJvQ9

Доступ заборонений. Необхідно знову ж таки через контекстне меню змінити права доступу ("Edit ACL") і зробити файл доступним для всіх - після цього всі відразу запрацює. S3Fox дозволяє виконувати всі елементарні дії з файлами і навіть підтримує найпростішу синхронізацію каталогів. Ще один плюс в тому, що плагін багатоплатформовий і може бути встановлений до браузеру під будь-який ОС. З іншого боку, коли починаєш працювати з Amazon S3 більш щільно, приходить розуміння, що функціоналу у плагіна недостатньо. Яке було моє здивування, коли я хотів перейменувати файл, а такої можливості ... не виявилося. Немає і підтримки більш дешевого сховища RRS, про який ми говорили. Загалом, з цього моменту я почав використовувати інструмент серйозніша - CloudBerry Explorer.
Прокачуємо софт

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

По-перше, тут є вкладки: можна навіть одночасно працювати з різними обліковими записами на Amazon S3, якщо необхідна така можливість. По-друге, програма не впадає в ступор, коли потрібно залити на сервер многогігабайтний файл (у S3Fox цього краще не робити!). Те ж саме стосується ситуації, коли в хмару потрібно залити величезна кількість файлів: всі, будь то зовсім маленькі чи дуже великі, акуратно встануть в чергу і передаватися на сервера S3. По-третє, CloudBerry Explorer підтримує швидке копіювання і переміщення об'єктів між акаунтами і bucket'амі всередині Amazon S3. Тобто не треба спочатку закачувати файли собі, а потім знову заливати на сервер - все відбувається прозоро всередині хмари. Природно, підтримується перейменування об'єктів (чому її немає в S3Fox, мені складно зрозуміти). По-четверте, ти можеш розшарити об'єкти або навіть цілі "відра" для інших користувачів Amazon S3. За допомогою ACL-листів чітко настроюються всі політики безпеки. До речі, коли створюєш посилання, іноді дуже корисно вибрати протокол BitTorrent (опція "generate bittorent url). У цьому випадку файл із хмари буде викачуватися через Torrent'и. Це дуже класна фішка Amazon S3, яка стане в нагоді, щоб заощадити трафік. Користувачі при такому розкладі будуть викачувати об'єкт не тільки із хмари, але і з комп'ютерів один одного. Мало того, для будь-якої згенеровано можна позначити термін придатності, після якого вона буде невалідним. І що важливо: при всіх плюсах CloudBerry Explorer залишається безкоштовним для всіх користувачів. Втім , розробники знали, як можна змусити користувачів платити. У її старшого брата, за який проситься $ 40, є ще кілька запаморочливих фішок. По-перше, це підтримка шифрування і версионном, які пропонуються Amazon S3. А, по-друге, можливість використання Powershell -скриптів для автоматизації практично будь-яких завдань. Спробуємо автоматизувати закачування вмісту c: \ workdata \ в bucket "xakep", причому ім'я нової директорії в хмарі буде генериться автоматично, виходячи з поточної дати (2010_06_01 - такий формат зручніше для сортування):