だらだらと思いついたこととか書くブログ

エンジニア的なネタとか備忘録とかを書いていく予定

Cookpad tech kitchen#8に参加してみた

Cookpad tech kitchen #8に当選できたので初参加して来ました 色々と経験出来たのでメモ

tech kitchenについて

まず、ガッツリ料理が出てきたのにびっくり。。 野菜もふんだんに使われていて、見た目も味もステキな料理が食べられてこれだけでも来た価値が・・とちょっと思ってしまった笑 飲み物も提供されていて、セッション始まるまでは何しに来たのかちょっとわからなくなるほどのおもてなし感

セッションについて

非同期なジョブ

  • ワーカーがスケーラブルではない  → キューをトリガーにdockerでワーカーが必要な分だけ起動する  → activejobとAWSSNS,SQSなど)を活用

  • Barbeque → ジョブキュー管理システム

  • Hako → コンテナ管理ツール

アプリとワーカーで同じイメージから起動しているため環境差分が無くスケールしやすい

kuroko2

クックパッドのジョブ管理システム

美しいバッチの壊し方

  • Bricolarge
  • 1ジョブ = 1SQL → よいバッチ(運用しやすいバッチ=障害の対応がしやすい)を作るため

美しいバッチとは!?

  • I/Oの対象ごと(DB、テーブル、ファイルなど)にジョブ分割
  • ジョブ管理システムで結合

http://www.shigemk2.com/entry/cookpad_tech_kitchen_8_3

Others

Hakoとは

dockerで賄えないDNSやDB接続情報なども設定ファイルで管理できる(?)ツール

https://techconf.cookpad.com/2017/yoshiori.html

DWHについて

DBA的な仕事もしつつアプリ(バッチ)もガッツリ書く ブリコラージでジョブ管理をしているのでバッチはほとんどRuby製(ただし、中にはシェルなどを呼び出している部分も・・) DWH(Amazon redshift)のキャパ的にはバッチ処理自体では全然余裕があるが、DEVやビジネスサイドで呼ばれるクエリ処理がガンガン来るため大変・・(グルーバル展開もしているため、それこそ一日中来てしまう。。)

Cookpadの開発環境について

本番と開発環境のDBのレプリケーションについて

本番DBと開発DBの間にもう1個DBがかまされている(※わかりやすさのため準本番とする) 本番DBから準本番DBへのレプリケーションステートメントベース 準本番から開発DBへのレプリケーションはレコードベース(IDが変わってしまうなどの問題があるため) 準本番から開発DBへのレプリは開発用のデータはID1から、レプリは必ず6万以上から、といったような感じでMySQLのAUTO INCREMENT(?)機能などを活用して運用している どうしてもレプリ時にエラーとなってしまうデータ(重複エラーなど)は無視する 詳しくはブログにも書いてあるとのこと

開発チーム、体制について

リリース(?)、システムははリクエストごとにdockerイメージがスケールしていくような構成になっている → スケーラブルな仕組み 開発チームはビジネスサイドのディレクターさんなども含めた2〜3人とかの小規模なチーム プロジェクトにチーム(人)が紐付いているような感じで体制は流動的

セッションはRubyAWSも使っているわけではないため概念的な部分とかしか理解できず、持ち帰れたものが少なかったかも・・ ただ、やっぱりバッチがどうあるべき、どういう問題を抱えていてこうした、みたいな話が聞けて良かったし、個別にお話させて頂いて色々聞けたのも良い機会でした!