読者です 読者をやめる 読者になる 読者になる

Fight the Future

何かを始めたら、半分成功したのと同じ

続QCon Tokyo 2011に行ってきた

Netflix in the Cloud Architecture With more than 20 million members in the United States and Canada(Adrian Cockroft)

Netflixは、動画コンテンツサイト。
月額7ドル!で見放題。
年度末に国外展開したい。


クラウドを活用する。
path finding。
構築するのではない。


動画配信では、マシンリソースが予測できない。
データセンターが爆発するw


2000万件の契約。
前年比37倍の利用があった。


100%クラウドで運用している。
AWSを利用。
一番大きなパブリッククラウドだから。
AWSでは、インスタンスを予約できる。


ASG。同一インスタンスを多数作成できる。


Hive。Facebookで開発された。

分散クラウド型プラットフォームを考える(山下 克司)

クラウドアーキテクチャトレードオフ
一貫性とレイテンシ、デプロイと運用がトレードオフ


BASE特性、CAP定理。
RDBに見られるACID特性。


クラウドでは、サービスが単位となる。
スペシャリストのままではダメ。
バーサタイル(露天掘り、多能工)。
T型ではない。
バーサタイリストは、マルチディメンションで評価する。


LAMPはパフォチューに向いていない。

Performance Engineering at Twitter(Evan Weaver)

やることを少なくする。
コードがないのが一番速い。


ユーザーが知りたくない、使わないなら、機能をなくしてよい。


メモリに注目する。
アルゴリズム的な解決策に価値はない。


バルク的にデータにアクセスする。
意思決定ができるようにする。


Ruby GC。
フロントエンドでパフォーマンスを解決する。


Kiji。社内Ruby
1.8ベース。

40バイトのStruct。
毎回すべてのスロットをみる。
ヒープに固定サイズを取る。


世代別コレクタ。
マークバリア。
Edenヒープとロングライフヒープ。


オブジェクトの寿命を予測する。
たとえば、定数であれば長期。


Edenは9割以上がGCされる。生き残るのは1割ということ。


オブジェクトを動かすことができない。
1.9と同様に、Mallocですべてのせる。


JEMalloc。
TCMallocよりもスレッドが増えても性能が安定する。


アロケーションを管理できる。


Tweetストレージ。
4つにクラスタ


Rowストレージ。
gzzd。


Indexストレージ
memcached。


Row Cache。


タイムラインプール。
memcached。
Redis。
毎月500超。


Repository Pattern。
バルクで。
トラバーサルがない。


オペレーションの順番に気をつける。


キャッシュのライトスルー。

GCの再実装した理由は。
C RubyのVMは単純。


JVMはキャッシュがよくない。


Twitterを再実装するとしたら。
JRubyとScsla。
AWSを使う。
MySqlとCassandra。
Cassandraは柔軟なスキーマ管理ができる。


ドメイン駆動設計においてレガシーシステムを扱うための戦略(Eric Evans)
レガシーシステムをドメインモデルを使って再構築する。


数年単位。ムービングターゲットになる。
レガシーのリプレイスメントはよくない。


ではアジャイルは?
リファクタリングしていく。
これもうまくいかない。


もともとの概念と異なるもの。
統合モデルができればよいのではない。


レガシーシステムをエミュレーションする。
全体のリプレイスよりもいい。
腐食防止層(ACL)を作る。


バブルコンテキスト。
DDDへのコミットメントはそこそこのときに使う。
スコープは限定的。
同期はない。


新しい章を始める。
パイロットとしてバブルコンテキストをしてから。
ACLでの同期化が必要、


レガシーシステムは問題であるとみなす?
取りあえず役に立っている。


レガシー資産を公開する。
イベントチャンネル。
レガシーシステムの更新をイベントとしてリスナーする。

アーキテクチャパネルディスカッション/DDDを切り取る3つのテーマ

完成されたアーキテクチャ
モデル駆動設計。
戦略的設計。

ビジネス。
DDDは普及していない。


DDDのメリットを説明したい。
小規模な実験をする。
コアドメインを蒸留できる。


システム構築は受動的なもの。
特定の機能の話をするのではない。


ドメインエキスパートの存在。
チームに引き込めない。