sgykfjsm.github.com

fud_scala

Scala at ISUCON

資料

ISUCONのお題を元にScalaと各言語のベンチマークを比較する

ベンチマークとしてはPlay = Perl/Ruby

あんまり早くない? - GCチューニング - あんまり早くならなかった - Nettyを4つ並べる、nginxでバランシング - あんまり早くならなかった - ベンチマークの多重度を上げる - あんまり早くならなかった - go/perlは早くなった - Playが重いだけ? - Skinny Framework - スコアがダメだった

解答を元にDB周りのボトルネックを外した - その他いろいろ

現時点ではPerl > Play

一般的なWebアプリケーションだと性能はイマイチ →DB I/Oがブロックしている →mysql-async的なnon-blobking database driverがあれば、状況は変わるかもしれない。

コード自体のプロファイリングが必要。

怖いScala!

資料

-

Scala with TDD

問題の領域がドメイン ドメインの語彙→シナリオ シナリオ→モデうr→実装→シナリオ→… DDDで書かれたコードならば、それを読めばドメインの概念(ビジネス)がわかるようになる。

モデルの実装 - エンティティ: 見分けるおkとができる - 普遍の識別子を持つ - 可変な要素を透過判定に使わない - 要素を変更してもIDを変えない

ドメインモデルはユビキタス言語と対応づくこと (クラス名、属性、振る舞い) - ソーシャルゲームのようにこれからドメインが作られる場合は内部で合意を取りながら作る

リポジトリ - エンティティをリポジトリに保存したり、識別子からエンティティを取得できる。

コストがかかる。複雑でない問題には使わない。 Cocを前提にするF/Wとは相性が悪い。F/Wと喧嘩しない方法を選ぶべき。 OOPよりデータと手続きのほうが高速とはいえ、DDDはオブジェクト指向を使う。