2013年8月19日月曜日

クックパッド×サイバーエージェント合同勉強会



行ってきました。


入るとまずはキッチンどーん!


後ろから始終調理音が聞こえてくる勉強会は初めてでした。







内容


OpenStack


無知だったので勉強になりました。


AWSとの差異や利点はあまり分からなかったけれど、AWSが最大公約数的な形で機能拡張していくとのことなので、色々面白そうな機能を独自路線で作っていってくれれば面白いかも?


あとPython触ってる端くれとしてはGUIがDjangoで出来てるってのもいい感じ。


以下、メモ。



プライベートクラウドをやってみたかった。


Cactusが現行バージョン


AWSとの機能比較


ロードバランシングはない


Cloud ControllerによってNovaプロセスを動かす。


デフォルトのハイパーバイザーはKVM


NW構成


FlatManaget


FlatDHCPManager


VLANManeger


novaコマンド


インスタンス起動・停止


スナップショットの作成


とか


euca2oolコマンド


Pythonで出来てる


novaコマンドとほとんど々ことができる


CloundControllerが停止してもComputeNOでとインスタンスに影響はない


ComputeNodeが停止すると稼働状況が伝わらない


デフォルトではvirtioを有効にして起動される


DjangoベースのGUIが付属している


ElasticFoxでも管理できる


WebAPIはある


CloudControllerは冗長化できる?


→出来るはず


スケールアウトする?


→多分。Eucalyptusがスケールしないから作ったという話なので



AmebaPicoとAWSについて


AmebaPiggの海外版?のAmebaPicoでのAWS運用のお話。


ZooKeeperを触ったことがないのでちょっと調べたところ、以下のページが勉強になりました。(日本語


Hadoop本読書会 - 13章 ZooKeeper


MongoDB、ちゃんと勉強しないとな…と思いました。


以下、メモ。



サーバ構成(全部AWS


キャッシュが効く静的データはCloudFront(CDN


細かい大量のコマンド独自のバイナリプロトコル(Socketサーバで受ける


分散Lockサーバ(ZooKeeper


キャッシュサーバ(memcached


DB(MongoDB


ログ集計サーバ(ElasticMapReduce


とかとか


EBSにバックアップ


Socketサーバ


ノンブロッキングIO


ID管理サーバ


ユーザIDの発行


UIDと認証機関でのIDの対を管理


Point管理サーバ


ユーザIDにひもづくポイント(サービス内通貨)を管理


ID管理サーバが発行したトークン付きのリクエストで処理


DB


エンティティはバイナリ形式でKeyValueストア可能なインターフェイスを持たせて定義


3台構成のレプリカセットを6シャード


プライマリ・セカンダリ・セカンダリ(on EBS)


Flashについて


クライアントで最初にメインモジュールを読み込み


→必要におうじてサブモジュールをロード


サーバとのイベント部分にはデリゲートインターフェイスを用意


Flashとサーバ側との分業体制をきちんと整備


EC2について


60個ぐらい運用していて、2、3ヶ月に一回くらいで落ちる(バージニアだから?


落ちたり特定ポートが死んだらリブート


落ちやすいので、冗長性をきちんと確保する


MongoDB


コネクションプールが枯渇する


シャードを増やした


スペックの高いインスタンスを利用


オートバランシングの挙動


そもそもバランシングのされ方が微妙


レプリカセットのコンフィグ情報未反映問題


コンフィグ反映には全台再起動が必要



画像配信システム


ここからはクックパッドの方の発表。


画像変換あたりの技術とかはやったこともなければ聞いたこともないという感じなので知らない単語が多かったす。


発表途中のアンケートでは、Apacheモジュールを書いている人が結構多かったのかな?一番前に座っていたので分かりませんでしたが。


今だとmod_wsgiだし開発止まっちゃったけど、mod_pythonの勉強でもしようかな…と思ったり。


以下、メモ



以前


ユーザの画像をAPサーバでコピー・リサイズしてストレージにぶっこむ


そしてそれを配信


どの画像サイズ、形が適切か?


→新サイズを試すたびに画像を800万枚リサイズ


iPhoneアプリとかに対応するためにまたリサイズ?


リリースも遅くなる


画像800万枚


秒間7000枚のリクエスト


クラウド移行を検討中(EC2へ


NFSをやめたい


現行(TOFUシステム


ストレージには1枚だけ溜め込む


リクエストのたびにリサイズする


URLにサイズと画質をぶっこむ


実装


Apache Module(mod_tofu.so


画像変換


ImageMagick


ストレージ


S3


AKAMAI(CDN)の後ろにELBでバランスしてApache


S3での苦労


APIが変になった


Akamai OR CloudFront?


EC2をオリジンに使用できるようになった(CloudFrontが)けど、


Akamaiの方が速い。


Akamaiのキャッシュ率はそんなに良くない。


昔はVarnishをELBの後ろに置いていたけど、値段が高い。


tofuを増やした方が安いので、今はそうしていて、Varnishは使っていない。



AWS移行にむけて(分散DNS


非常に色々と網羅された内容で素晴らしいお話が聞けました。


あまり深い内容ではなかったけれど、全体像を伝え、そして現行の問題点とそれを改善するために分散DNSを作ったという話の流れは非常によくわかった。


メモを取らずに聴き入っちゃってました。


クックパッドのインフラは今回発表された方がリーダとしてまとめてるのかなぁと思った。


Heartbeatのバージョンが古かったので、そこは上げた方が…とは思いました。


まとめ


今回も色々なお話が聴けて非常に勉強になりました。


僕は仕事的にはこんな大規模Webサービスに関わっていないので、負荷分散やDB周り以外のキャッシュシステム導入みたいなことをやったことがなかった。


で、Squidはやったんですが、Varnishはやったことないのでnginxと組み合わせたWebサイト構築をやってみたいと思います。


あと、LTで聞いたtmpfsは今まであまり気にしたことがありませんでしたが、永続性を必要としないところには使ってみるのもいいかなと思いました。


最後に、クックパッドさん、サイバーエージェントさんありがとうございました!





0 件のコメント:

コメントを投稿