Amazon Web Servicesをつらつらと眺める


 使い始めてしまうと色々気になるもので、何か面白い用途は無いかなー、とサービス概要なんぞを眺める。
 ふーむ。EC2やElastic Beanstalkはまあ、スケーリングが重要な時には有用だろうけど、そういう用途なら個人的な好みではGAEにしたいな。逆に、うちみたいにスケールがほぼ決まってる奴をコンスタントにだらだら走らせるならVPSや専鯖の方が良さそうだ。
 CloudFrontはCDNが使える訳か。面白そうに見えたけど、転送料金が$0.201/GBかー。エロゲーのムービーくらいでも数TBくらい行っちゃいそうだよな。いや、実際やってたけど数字とか全く取ってなかったんで、この数字でいいのかは知らんけど。6TBくらいで10万円か。んー。まあでも、速度がきっちり出るんなら費用的にはありか。今の俺には無縁そうだけど。
 Route 53も気になったけど、ゾーン一つで月$1.00。クエリ100万回で$0.50。料金は悪くないけど、使い方が物凄いなあ。RTTも心配だし、零細ならVPSにBINDなりNSDなり入れる方が良さそうな。Industriaとか月390円で国内だし。

 まあ、スケール固定気味の用途には微妙に合わない気がする、ってことで。


Amazon S3の堅牢性とか転送速度とか


 S3の価格を見る度に気になっていたことがある。
ストレージ(99.999999999%の堅牢性を持つようデザインされています)
低冗長化ストレージ(99.99%の堅牢性を持つようデザインされています)
の表記だ。良く分からないが凄そうなこの確率は何なのだろう、と。
 調べてみると、一つのオブジェクトが一年間破損しない確率、らしい。なるほど。ちなみにS3の世界のバケットとフォルダとオブジェクトは、Windowsの世界のドライブとフォルダとファイルのようなものである。
 という訳で、「99.999999999%/年」とか書いてくれればもう少し納得しやすいのに、とか思ったが、まあ別にどうでもいいな。この数字はどっから出たんだよ、とか考えたらキリねーし。むしろ低冗長化ストレージの堅牢性の低さを理解する為の数字と捉えた方が良さそうだ。だって、年間10000個のファイルのうち1個が行方不明になるんだぜ。あ、今エロいこと考えました。そういうゲームもやりたいですなあ。最近エロゲー調べてねーなー。
 で、普通のストレージの方は、年間1000億個のファイルのうち1個が行方不明になる、という想定な訳だな。つっても、各種の天災や人災の確率を0とした場合の数値だろうけど、まあ、その辺を考えないことにすれば、宝くじなんか目じゃないくらい当たらんな。公営くじで一億円当たる確率は500万〜1000万分の1くらいらしいし。
 まー、低冗長化ストレージは大して安くもないし、俺的には存在を忘れてても良さそうではあった。

 んで、何となく管理コンソールからバケットの中身を見る。ふむ。オブジェクトのLast Modifiedは転送終了時刻ではなく開始時刻っぽいな。3GBの転送に5時間かー。つまり0.6GB/hで、14.4GB/dayか。んー。全体バックアップに掛かる時間は最悪二日くらい見ないとやばそうだな。
 恐らくアメリカに置いてるのも原因だと思うんで、理由が無い限りは東京に置くべきだろうなあ、と改めて思った。理由があるから仕方ないが。
 結局、週一回の一世代バックアップになりそうなので、月額50円/GBくらいになるのかな。まあ悪くは無いか。


観念してAmazon S3利用開始


 さすがにもう時差とか関係無く、世界的に五月になった頃合いである。言い訳ももう残ってないので、Amazon S3の利用を開始しよう。Amazon嫌いだけど、強力な対抗馬が見付けられなかったから仕方ないな。
 目的は何度も書いたけど、重要データの国外へのバックアップである。つっても、よくよく確認してみると、これらのデータが全部吹っ飛んでも被害額はせいぜい八桁ってとこらしい。いやまあ、でかいけど。

 早速(でもないが)AWSのアカウントを作成して、AWS Management Consoleとやらを覗いてみて、S3をアクティベートする。程無くしてメールが到着。英語でうざいが、どうやら速攻で使えるようだ。
 ところで、”Thank you for your participation in the Amazon Web Services community.”という文章があったのだが、”Thank you for your …”という表現はやめろ、と昔教わったのは何だったんだろう。”Thanks for your …”か”Thank you for …”にしろ、とか言われたけど、これ外人の書いたメールだろうしなあ。何か細かいルールでもあるのか、実はどうでもいいのか。

 んで、S3が使えるようになったら、次はバケット作成だが、設置する地域で迷う。アメリカかアイルランドか。他は高いんでパス。まあ、デフォのアメリカでいいか。
 後はもう簡単である。既にOsukini LTにGPGで暗号化済みのバックアップがあるので、これをS3にコピーすればいい。

$ s3cmd --configure

でアクセスキーとシークレットキーを記憶させちゃっといて、cronなり何なりで

s3cmd sync ~/foo/ s3://bar/backup/foo/

とかのスクリプトを走らせれば完了だ。
 …と行きたかったが、都合により日本語ファイル名があるんですな、困ったことに。S3での日本語ファイル名は、行けるという話と行けないという話があったので、とりあえず回避する為にsyncは使わないことにして、

s3cmd put ~/foo/file1 s3://bar/backup/foo/file1
s3cmd put ~/foo/file2 s3://bar/backup/foo/file2

みたいにベタベタと。
 実際にputしてみると、一つ目の76MBくらいのファイルは264.92KB/sで4分44秒掛かって転送完了。あんまり速くはないが、どこが引っ掛かってるか分からんから何とも。わざわざ国外を選んでいる時点で、速度を期待することも無かろう。用途的には十分だ。
 また、転送途中のファイルはS3のストレージには入っていないように見える。仕様を調べてみると、partialなデータが書き込まれることは無く、ちゃんと転送完了した時だけ書き込むとのこと。それなら二世代取る必要も無くて素晴らしいな。ただ、パイプの最後に持ってこられない仕様になりがちだろうから、どこかでファイルを作ってからアップロードすることにもなるなあ。まあ、今はOsukini LTで一度作ってからS3に流してる訳だから、何も考えなくていいけど。
 あと、バージョニング機能も一応見てみたが、きっちりS3向けにアプリを書く人専用っぽい感じなんで、見なかったことに。つーかs3cmdが無かったらこんなに一瞬でスクリプト書けんし。s3cmdさえ使えるなら、バックアップ程度はマジで超簡単だけど。

 という訳で、気になっていた作業もほぼ完了である。今のままなら、無料枠が有効な一年間は課金が発生しないかもしれないが、多分データが増えるだろうから駄目だろうなあ。


パスワード漏洩とか


 認証DBがハックされることでパスワードが漏洩しちゃうような管理体制に納得行かねー。ソーシャルハックとかし放題じゃないか。salt付けて一方向ハッシュした奴を持てば良さそうな話に思えるのだが。
 つっても、平文で持ってるとこが多いのは良く分かってるが。何なんだろうな、あれ。パスワード問い合わせると、平文が普通にメールで返ってくるんですよ。意味分からん。ついでにパスワードリマインダーとかも、あれ発明した奴も導入する奴も意味分からん。しかも導入してるとこに限ってリマインダー必須にしてたりするし、リマインダーの設定を忘れると手も足も出なくなったりするし。何でわざわざあんなセキュリティ的にゆるゆるの第二パスワードもどきを追加しなきゃなんねーんだか。

 でもまあ、これを書くきっかけはプレステの大漏洩だけど、あれの場合はパスワードだけちゃんとしててもアレではあるなあ。カード情報とかもあるんだし。漏洩したから変更します、って出来ないのもカードのめんどくささか。ネット決済の全部が認証必須になってればマシなんだろうけど、今のところそうじゃなさそうだよなあ。多分。


海外に置けそうなストレージを検討してみる


 前にも書いたが、関東に大地震が来る可能性はそれなりに高まっていそうではある。やはり、海外にデータを置けるもんなら置いておきたいなあ。大したコストでもなかろうし。どうだろうな。調べてみようか。

 まずはクラウド系から。
 Google Docsは、ファイルサイズに1GBの上限があるっぽいし、ファイル形式の制限が回避出来るのかも不明。EPELでGDataを入れて自前でAPI叩く感じになりそうだから、無変換アップロードさえ可能なら分割操作自体は難しくもないだろうけど。価格は20GBでも$5.00/年と、非常に安くて魅力的なのだが。とりあえず、無料枠で軽く実験してみるのは悪くない考えかもしれない。
 Amazon S3はかなり有望。s3cmdなるものがEPELから入れられそうだし、暗号化した巨大ファイルを置くのも問題無いようだ。価格体系がよく分からんが、公式の課金シミュレータに適当な数字を突っ込んでみよう。一週間ごとのバックアップなら大体30GB/月くらいの転送と考えて、ストレージの計算ルールは良く分からんけど30GB/月としておくと、$5.01/月くらいか。一ヵ月ごととかにするなら$2.00/月も切れそう。つっても、$60.00/年と考えると、Google Docsよりはだいぶ高いが。最大の難点は、俺がAmazon嫌いなことか(笑)。まあ、もっと安いとこあるんじゃね、という気分はある。そこまでガチなのは要らないんだよな正直。
 Windows Azureも眺めてみたけど、Linuxでcronからスクリプトを起動してちょちょいとコピー、というイメージが浮かばないので、見なかったことに。
 毛色を少し変えて、例えばGAEのblobstoreの利用はどうか。30GB/月の転送、15GBの保管と考えると、$5.25/月ってとこかなあ。検討対象外だな。
 んー。バラバラすぎて何とも言えないが、将来さらに安くなるかもしれないとか、堅牢性が高いとかを考え合わせるならば、既に十分に魅力的ではあるかもなあ。何とかGoogle Docsに突っ込めればいいんだけどなー。異様に安いし。

 Dropboxなどのあまりバックエンド向けでなさそうなオンラインストレージは、思ったよりも条件が合わなかった。つーか、インターフェースの付加価値なのか客層の違いなのか理由は分からないが、そもそも高いのだ。50GBで$9.99/月ですよ。いやまあ、半分のプランとか出したらAmazon S3とそれほどは差が無いけどさ。ただ、この系のサービスは転送速度が異様に遅いことも普通にあるっぽいし。
 他に思い付くのは、Webサーバ辺りを借りてストレージだけ使う、とかか。素直な使い方ではないが、迷惑は別に掛からないとは思う。堅牢性は期待出来ないので、最後の砦としては微妙に頼りない気もするけど。海外という条件で一応探すと、例えばWeb Hosting Padというところが相当安いクラスっぽいんだけど、五年契約で$1.99/月、とか。うーん。容量無制限はいいけど、これならクラウドストレージを選ぶかなあ。

 むー。Amazon S3っすかねえ。俺の好みでぐだぐだ迷ってる間に地震で飛びました、なんてなったら後悔先に立たずもいいとこだしなあ。ロックインの心配がある訳でもないんだし、別にAmazonでいいんじゃねーのかな、という気はしてきた。かなり。
 でもまあ、先にGoogle Docsで実験かな。もう少し元気が出てきたら。