S3 の画像をリアルタイムにリサイズするServer書いた

S3に配置した画像をURLから指定したサイズにリサイズできるリアルタイムリサイズサーバをnodeで書いた。

Features

Architecture

1台構成

+---------+      +------------+      +------------+      +----+
| Browser | <--> | CloudFront | <--> | EC2 (hose) | <--> | S3 |
+---------+      +------------+      +------------+      +----+

スケールアウト

                                                  +------------+
                                                  | EC2 (hose) |
+---------+      +------------+      +-----+      +------------+      +----+
| Browser | <--> | CloudFront | <--> | ELB | <-->                <--> | S3 |
+---------+      +------------+      +-----+      +------------+      +----+
                                                  | EC2 (hose) |
                                                  +------------+

Url

//hose.com/bucket/key/100x50cq75/802a393d7247aa0caf9056223503bdf611d478ee.jpg

This is called “hose”

プロジェクト名は”hose”。最近、@gosukenatorさんからこの”hose”にPull Requestもらって、一昨年に書いて放置してたのをリファクタリングしたのでブログで告知です。(テストをまだ書いてないのでまだ微妙) ほんと、*Pull Requestってモチベーションあがる*よね、すごいいい仕組み!自分もできるだけほかのプロジェクトにPull Requestしていこうと思う。

“hose”はそもそもcookpad @mirakuiさんのtofuのスライドを見たのがきっかけ。Railsアプリケーションとかだと、Paperclip使うのがお手軽だったりするんだけど、画像サイズが固定だったりするから後でサイズを変更したいときは、バッチでリサイズ処理やったりと結構大変。また、Applicationサーバでリサイズ処理をやるのはそもそもリソースがもったいないよね。そこで”hose”なら全部解決できるってわけ。

特に、*AWS使うなら絶対に便利*だと思うので、たくさんの人に使ってもらいたい。

hose - https://github.com/linyows/hose

なんか、バグ見っけたらGithubにIssue登録お願いします。もしくは、*Pull Request*お願いします。

· S3 node AWS