Содержание статьи
Вера и ее диски
Есть у нас в издательстве милая девушка Вера, которая каждый месяц делает страшное. Она берет рабочие файлы одного из прошлых номеров «Хакера» (тексты, иллюстрации и фотографии, файлы верстки) и заливает их на DVD-болванку. Для архива. Со временем файлы из рабочей папки автоматически удаляются, чтобы сетевое хранилище не забивалось под завязку, но файлы всегда остаются в архиве на болванке. В теории. На практике не раз оказывалось, что файлов нужного номера может не оказаться. Или, к примеру, на болванке, где должны быть файлы январского номера прошлого года, легко могут оказаться файлы февральского. Ну что взять с ручной работы? Естественно, это давно надо было автоматизировать, однако технической возможности не было. Журналов много, файлы большие — админы уверяют, что никаких их NAS’ов для такого объема не хватит (особенно если нужно гарантировать целостность данных). Пришлось все брать в свои руки. Где разместить гигабайты данных максимально дешево? Максимально надежно и как можно более дешево? Пока я думал над этим вопросом, Amazon анонсировал свой новый сервис Amazon Glacier. Это явно было послание свыше :).
Почему так дешево?
Напомню, что Amazon — это далеко не просто интернет-магазин. И даже не просто производитель читалок Kindle. Это невероятно технологическая компания, предлагающая всем желающим свои механизмы Amazon Web Services (AWS), позволяющие, к примеру, в момент поднять ферму серверов (технология EC2), организовать бесперебойную отдачу неограниченного объема файлов (S3) и с недавнего времени еще и надежнейший бэкап данных. Если хочешь найти максимально дешевое хранилище для файлов, то это Amazon Glacier. Парадокс в том, что одновременно с этим оно может быть и очень дорогим. Цена хранения составляет 0,01 $ за гигабайт данных в месяц. Предельно безопасное хранилище для 100 Гб данных (а Amazon гарантирует сохранность 99,999 999 999%) обойдется всего в доллар в месяц. Где подвох? А все просто: Glacier действительно позволяет дешево хранить данные, но достать их из бэкапа может быть очень дорого. Бесплатно можно извлечь лишь 5% от всего размера бэкапа (каждый месяц), а свыше этого придется оплачивать от 0,01 доллара за каждый гигабайт (не считая дополнительных платежей, но это нюансы). Кто-то скажет, что это обдиралово, но на самом деле этот сервис для них просто не подходит. Очень важно понять: это не хранилище файлов (вроде Dropbox) — это именно бэкап. Сюда можно заливать самые важные файлы (например, фотографии) или даже делать копию бэкапа и быть уверенным, что если когда-нибудь с этими файлами что-то случится, то ты их точно сможешь извлечь из облака Amazon. К слову, извлечь не так уж и быстро: запрос обрабатывается от трех до пяти часов. Сложно сказать, что происходит в это время по ту сторону сервиса (возможно, ищутся дешевые жесткие диски с нужными файлами, которые были без питания, после чего данные извлекаются), но именно это позволяет Amazon предлагать такую цену.
Как это мне помогло?
В моем случае это было как раз тем, чем нужно. Ультрадешевый и надежный бэкап для данных, к которым обращаться нужно очень редко (а возможно, и никогда). Правда, при всей привлекательности начать использовать Glacier было не так просто. С ходу я не смог найти готовый клиент: несмотря на подробный API, который предоставила Amazon, программисты еще не успели написать клиенты. Я быстро нашел реализации на Python и Perl, но хотелось попробовать технологию с помощью какого-то человеческого клиента, которого еще не было, — я этот вопрос отложил. Уже через несколько дней (оцени скорость) вышел релиз виндового клиента FastGlacier, который уже умел загружать данные в Glacier и по запросу выгружать их обратно. Все, что нужно, — это завести аккаунт в AWS и указать в настройках программы свои Access Key ID и Secret Access Key — ключи доступа, с помощью которых выполняется авторизация (их можно получить в разделе «Security Credentials»). Я быстро создал Vault (отдельное хранилище файлов) и с хорошей скоростью загрузил туда бэкап одного из номеров. Сделал запрос на извлечение файлов — и смог их получить обратно через три часа. Стало ясно, что это как раз то, что надо. К сожалению, FastGlacier оказался очень простым клиентом, как и другая похожая поделка Simple Amazon Glacier Uploader, — ни в том, ни в другом не предусмотрена возможность периодического бэкапа. Поэтому я нашел консольный клиент glacier-cli, реализованный на Java, и через планировщик nnCron настроил ежемесячную загрузку бэкапов в облако. А Вера и дальше делает бэкапы на болванки. Но еще не знает, что мы ее, наверное, по этому поводу больше не побеспокоим.