Edited at

2015年版Adventarの構成

More than 3 years have passed since last update.

2015年版Adventarをリリースしたので今年の構成をメモとして残しておく。

http://www.adventar.org/

ちなみにAdventarはソースコード公開したい気持ちもあるんだけど色々めんどいこともあるので二の足を踏んでいる。


サーバー

言語はRuby。WAFはRails。特に物珍しいものは使ってない。Gemfileはこんな感じ。

https://gist.github.com/hokaccha/6413437122815143f0d0

ホスティングはHeroku。1月〜10月は全然アクセスないので1dynoにしといて、11月と12月だけ2dynoにしてお金払うっていうスタンスだったけど、料金形態変わったのでHobbyプランにした。そこまでアクセスないのでたぶんHobbyで大丈夫だと思うけど厳し書くなったらStandardにあげる。

DBはHeroku PostgresのHobby Planで全然足りてる。あとはNew RelicとPapertrailをFreeで使ってる。Papertrailは11月、12月は全然容量足りないのでとりあえず一番安いプランで課金しといた。あとはAirbrakeとかSentryとかを入れたいと思ってる。

まあサーバーはこんな程度で大したことはしてない。$20/monthぐらいで運用できてるので楽ではある。


フロント

フロントエンドは今回けっこう構成を変えた。去年まではフレームワークはBackbone.jsで、ライブラリの管理はvendor/assets/javascriptsにwgetしたやつを置いてAsset pipelineでビルドするっていう温もりのある感じだった。

今年は全部Reactに書き換えて、react-railsのサーバーサイドレンダリングを有効にしてTurbolinksで遷移するようにして、モジュール管理はnpmでやるようにしてビルドはbrowserify-railsとbabelifyでES6な感じで書いた。モダン。

今のところHerokuでreact-railsのサーバーサイドレンダリングは問題ない速度で動いてるけどアクセス増えたらどうなるかな。あと、こんな問題ではまったりもした。

Herokuでreact-railsのサーバーサイドレンダリングがTimeoutしてハマった話

Flux的なのはRedux使おうかと思ってやってみたけど、そんなに複雑なアプリケーションじゃないのでRedux使う方が複雑になりそうだったので、azuさんのmini-flux的な感じでやった。EventEmitterを継承したStoreとDispatcherを作ってActionを単なる静的な関数を集めたstaticなclassとして定義する程度。このぐらいの小規模なものであれば自分で書いたほうが小回りが効いてよい。

そういうわけで今年もAdventarをよろしくお願いします。