2015年版Adventarをリリースしたので今年の構成をメモとして残しておく。
ちなみに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をよろしくお願いします。