The Gilt Effect: Handling 1000 Shopping Cart Updates per second in Rails (RailsConf2009レポート)
2009年5月6日
@hashikemです。
秒間1000回更新されるシステムの発表ということで、興味深々で聞いてきました。
高級ブランドの招待制ファミリーセールのサイト「ギルトグループ」のシステムについての発表でした。
ギルトグループでは、決った時間のみのセールなどを行なうため、短い時間にショッピングカートの更新が集中します。 20秒間に、20万人が使用することもあるそうです。 1秒間に、1000リクエストのアップデートを処理するために、以下のような技術を使用しています。
- 自前のCDNを構築してキャッシュデータを載せる
- トランザクションの処理をスケールするために、JRuby + EC2 + SQS + Rails のシステムを、EC2上に構築
- 商品をショッピングカートに入れる処理を扱うために、商品毎にDBサーバを分割。ここでは、H2 DBも使用。
スケールに対応するための新しい技術をうまく組み合わせて使っています。
また、今回のカンファレンスでは、ここのシステムのように、スケールに対応するために積極的にクラウドの技術を 導入している発表が、数多く見られました。さらに、ギルトグループでは、$100Mの売り上げを得てもいるとのことで、スケールに対応するための新しい技術を用いて成功している好例だと思います。
これまでギルトグループについては良く知らなかったのですが、技術駆動型の企業として今後も見習っていきたいと思います。
こんばんは根岸です。会社のマニーでべガスに来ています。
本稿はrakeの作者、Jim WeirichさんとJim O’brienさんのテストやリファクタリングに関する表題の発表のレポートです。
リファクタリング用のサンプルプロジェクトとスライドがアップロードされていました。
http://onestepback.org/download/refactor.zip
以下軽く紹介するので、興味がわいたらプレゼンを眺めたりあとで公開されるであろうビデオを眺めたりして下さいね。
前半は要するに良いオブジェクト指向のデザインとは何かというテーマです。
・凝集性を高める
・低い結合性を保つ
・明確さを維持する
これを実行するために単一責任原則だとか、リスコフの置換原則だとか、役割の局所性を利用したオブジェクト間のやりとりの粗結合性だとか、最少のクラスとメソッドの実装だとか、様々な設計ポリシーがあるよと説明したあと、ではそれを維持するためにリファクタリングをしよう!という話につながりました。
・新しいテストを書く
・それが全て通るようなコードを書く
・リファクタする
というリファクタリングのループを前提として、メソッド分割やらパラメータの導入やらといった一般的なリファクタの手法を説明していました。
後半はgreedというおもしろRailsゲームをリファクタリングしつつ仕様変更しよう!という内容だったんですが、cucumber前提なのも割とついていけないポイントだったんですが1時間ちょっとのリファクタリング講義の為にわざわざいろいろ穴のあるこのサイズのアプリ作ったんですか…と驚きあきれました。僕は持ち時間使い切ってまずアプリを動かせる状態にしてcucumberのシナリオの書き方の学習とコードリーディングを大体やってリファクタリングに入り始めたところで終わっちゃったんですが、基本的に周囲の外人さんは課題の仕様変更を終わらせてAIの改善とかに手をつけはじめる感じで、完全に差を感じました。
開発の技術的な体制やマインド・ポリシーの共有は、クックパッド技術部にとって注力したいテーマの一つです。今回の発表はきわめて一般的な話ではありましたが、こういった形で一種の最適解みたいなものに直に触れられたことは今後の良い糧になると考えています。
個人的にオブジェクト指向の説明のためにテーブルにJimさんが配ってくれたさいころは宝物にします :)
ちなみにそのうちこんな本が出るそうです
Refactoring: Ruby Edition
http://www.amazon.com/dp/0321603508
Martin Fowlerのリファクタリング本のRuby版ですね 僕は予約しましたので皆さんも買えばよいと思います
システム管理ツールChefのチュートリアル(RailsConf2009レポート)
2009年5月5日
RailsConf2009に参加中の高田悟史です。RUNNING THE SHOW: CONFIGURATION MANAGEMENT WITH CHEFを聞いてきました。
Chefというのは、Puppetのようなシステム管理ツールです。
Puppetとの違いをいまいち分かっていないのですが、サーバー(Chef Server)とクライアント(Chef Clients)という構成で、サーバーの設定(cronやApacheなど)をrubyで記述し(これをCookbookと呼ぶ)、新しく導入するサーバー(Chef Clientにあたる)のセットアップや設定変更やRailsアプリケーションのデプロイなどを自動的に行うことができるツールです。また、このCookbookという設定情報はバージョン管理されます。例えば、Apacheの設定ファイルをERBで記述し、rubyで変数値を指定するというような書き方ができるのは便利そうです。
Chef Soloという仕組みもあり、ネットワーク上やセキュリティー上の問題からChef Serverに接続できないサーバー(Chef Client)でもCookbookを含むターボールを指定することで同様のことをすることができます。
その他にも、WebUIでCookbookの参照や編集や検索をすることができるのは便利そうでした。このCookbookの操作にはREST APIも準備されていて、コマンドラインからこれらの操作をすることもできます。
PoolPartyというクラウドを管理するツールは、Chefが元になっているらしいです。
ちなみに、Puppetの日本情報wikiにPuppetの作者がChefをどう思ってるか書いてありました。
Chef ServerとChef Clientのデモには、VirtualBoxを使っていました。まだ試していないのでどのくらい手間がかかるのかは分かりませんが、ローカル環境でChefを試してみたい場合なんかにはよいかもしれませんね。
クックパッドでも、近々サーバーの増設をすることになるのだろうというところですが、100台を越え始めるので、このような一元管理できるしくみを導入したいと考えています。Puppetと比較してChefも検討しようと思います。
カヤック×クックパッド主催 技術者交流会のお知らせ~おいしいソースのつくり方~
2009年4月2日
■イベント概要
ひとつのサービスをこつこつと向上させるクックパッド。
新しいサービスを生み続けるカヤック。
そんな2社の共通点は、ユーザーに「おいしい!」と思ってもらえるサービス開発を目指して、開発に力を入れていること。
この2社のサービスや、いま挑んでいる新しい技術、これからのエンジニアの働き方など話しをしながら、技術者交流会も行いたいと思っています。
当日ライトニングトークも行う予定です。
是非、あなたの自慢の作品を発表してください。
当日はごはんをたべながら、お酒を飲みながらの交流会になります!
■当日の予定
参加者の皆様&クックパッドとカヤックメンバーによるライトニングトーク
【クックパッド】
・中村浩之(programmer)
「Rails上でのメールウェア構築」
【カヤック】
・typester(http://www.kayac.com/member/murase)programmer
「カヤックとオープンソースプロジェクト」
・ 村井考至(http://www.kayac.com/member/murai) Flash Developer
「インタラクティブなショップコンテンツの作り方」
・荒賀謙作(http://www.kayac.com/member/kensaku-araga)programmer
「Flashを自動生成して動くケータイペットをつくる方法」
クックパッドの技術最高責任者・橋本健太(http://www.web-career.com/contents/buyuden/34.html)と カヤック技術最高責任者・貝畑政徳(http://www.kayac.com/member/kaichi)によるトークセッション
【テーマ】
「クリエイティブ?」「技術力?」「デザイン?」「センス?」
二人のCTOが語る イマドキのサービスが生まれる思考と行動
カヤック貝畑氏×クックパッド橋本氏本音トークバトル
【司会】
馮富久(ふぉんとみひさ)
1975年生まれ。横浜市出身。1999年4月株式会社技術評論社に入社。入社後から『Software Design』編集部に配属され,2004年1月に編集長へ就任。同2004年9月に『Web Site Expert』を立ち上げ,同誌編集長を務める。2008年9月に設立したクロスメディア事業部に配属され,現在に至る。雑誌やWebというメディアを通じて,新しい技術やサービス,そして,何よりもすばらしい人たちとの出会いとともに,刺激を受ける毎日を過ごしている。
■開催日時
2009/4/24(金)
OPEN:18:30 START:19:00 CLOSE 22:00
■開催場所
鎌倉どんぶりカフェ bowls
http://bowls-cafe.jp/info/
■食事について
bowls特製コース料理
飲み放題付
※立食形式になります。
■参加費
会費:5000円
■定員
定員:50名(調整中)
■参加対象
webエンジニアもしくはディレクターの人
カヤックやクックパッドのサービスにちょっとでも興味がある人
いろんなエンジニアと交流してみたいと思っている人
自分のサービスを発表してみたい人
カヤックやクックパッドで働いてみたい人
サービスをつくりたいと思っている人
自分の制作したプログラムのソースを自慢したい人
■参加方法
ご参加をご希望される方は、
===============================
・お名前
・会社名
・ブログや作った作品などがあればURLを教えてください
・参加希望者のみなさんに一言
・ライトニングトークへの参加希望の有無
ライトニングトークを希望される方は、トークしたい内容をご連絡ください。
人数が多い場合は、抽選とさせていただきます。
===============================
を明記の上下記アドレスまでご連絡ください。
![]()
当日、参加される方のお名前を名簿にしてみなさまにお渡しする予定です。
同意の上ご連絡ください。
皆さまのご応募を心から楽しみにしております。
イベント運営担当
こちらにも告知しています。
http://tech.kayac.com/archive/kayac-cookpad-engineers-event.html
創る心とおもてなし~第一回webエンジニア料理対決イベントのお知らせ~
2009年3月19日
皆さまこんにちは!
クックパッドのイベント実行委員会(仮)、スミです。
来る3/27(金)、技術評論社とコラボしてエンジニア料理対決イベントを開催することになりました!
料理とサービス開発に共通する「おもてなし」「創造性」。
今回はそこに着目してみました。
当日は、3チーム(Yahoo!japan、リクルートメディアテクノロジーラボ、クックパッド)の料理対決に加え
各チームによるLT,参加者の皆様を巻き込んだフリーディスカッション等のコンテンツを予定しています。
さらにさらに、参加者の方の中から抽選で、
審査員&クックパッドチームとして一緒に料理をしてくださる方を選ばせて頂くという
楽しい(?)イベントもご用意しております。
▼詳細はこちらから▼
http://gihyo.jp/event/2009/cooking
尚、今回初挑戦Ustream.tvにて実況中継いたしますので
ご来場できない方も是非チェックしてみてくださいね。
