Goldstine研究所

mosuke5's tech blog

ブログ移転しました。5秒後にリダイレクトします。

Cookpad TechConf2017にいってきたメモ

はじめに

CookpadTechConf2017に参加してきた。
昨年は抽選に外れていけなかったのでよかった。

techconf.cookpad.com

おなじみCookpadが年に一回行っているテクノロジーカンファレンス。
1年間のクックパッドでの取り組みを発表する場。

完全メモ書きではあるが、ご活用ください。

クックパッドの取り組み

セッションはたくさんあったが、クックパッドが今年1年間で取り組んできた大きな内容は以下3つと感じた。

  1. 海外進出
  2. 機械学習への取り組み
  3. スケールへの対応

海外進出の話は今まではほとんど聞いたことなかったので、本格的に力を入れ始めたというところだろう。
機械学習への取り組みは去年からと明確にいっていたのでこちらもそう。
最後のスケールへの対応は今までもたくさん発表してきたが、そこに大きな波がもう1つやってきた。後ほど。

海外進出

Go Global

  • 宗教、言語、気候によってサービスを変える
    • 同じ言語圏であっても気候が違えば違う食文化がある
    • 例えばスペイン語圏でも、スペインと南米では全く食文化が異なる
  • どうやってサービスを作っていくか
    • あたりまえ品質
    • グローバリゼーションとローカライゼーション
  • 検索のローカライズははてしなくどろくさい
  • 翻訳もとんでもなく大変
    • Amazonの例だが、Kindleで"OR"で誤訳があった
    • プレミアムという言葉も実は難しい
      • プレミアムというのは地方によってはプレミアムでないものを差別する用語として使われることもある
      • プライムやプレミアム、エクストリームなど使い分ける
  • 国際チームは国籍がみんなばらばら
    • それぞれの考え方も文化も異なる
    • 最終的なアウトプットだけ共有しあとはまかせるというスタイルをとっている

Global Infrastracture

  • 多くのリージョンへ展開している
  • グローバルアプリはスクラッチで新規開発
    • いまは普通のRailsアプリ
    • 日本のCookpadとはUIも全く異なる
  • グローバルのインフラについて
    • us-east-1のサーバを利用
    • データベースはAurora for MySQL
    • Elasticache利用
    • nginx, unicornの構成
    • CDNはFastly
  • 地域によってトラフィックピークが全く異なる
    • 日本だとバレンタインシーズン
    • イスラムではラマダンと呼ばれるシーズンがある
      • しばらく断食していたその後に食事を楽しむ時期

Go Global - #CookpadTechconf 2017 // Speaker Deck
Building infrastructure for our global service // Speaker Deck

機械学習へのとりくみ

Real World Machine Learning // Speaker Deck

スケーラビリティへの対応

  • Railsアプリでは世界最大規模
    • モノリスティックに構築して巨大化しすぎた。。。
  • サービスの分割化、マイクロサービス化を促進
  • マイクロサービス化、それゆえにおこる問題が起きてくる
    • サービス間の連携がとても重要に
    • 次の仕組みを使って連携を強化
      • 障害を制御する => Expeditor
      • 障害を予防する => Pact
    • Expeditor(内製ソフトウェア)
      • 1)サーキットブレイカー
      • 2)並列処理
      • 3)リトライ処理
      • もともとは並列処理のために作ったがサーキットブレイカーの機能が重宝
      • netflixNetflix/Hystrixにインスパイア
    • Pact (https://docs.pact.io/)
      • サービス間の連携テストを行うソフトウェア
      • これは外部開発のソフトウェアだが周辺ツールは内製
  • マイクロサービス化したのでDockerでサービスのポータビリティも上げた
    • Dockerをより良く使うためにHakoというDockerデプロイツールも開発
  • その他、スケールに対応するために幾つかのソフトウェアを内製
    • Kuroko2
    • barbeque
  • これらの内製ソフトウェアはすべてRubyで書いている
    • なぜRubyか?
    • 好きというのもあるが、統一することで品質やスキルの担保ができる
  • でもRubyには速度の問題などあることは承知。。。
  • すべてのデータをRedshiftに移行
  • スポットインスタンスの利用でAPIサーバのコストを60%下げた

Cookpad Under a Microscope // Speaker Deck
Cookpad awakens // Speaker Deck
Spot Instances in Cookpad #CookpadTechConf 2017 // Speaker Deck