Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How we cook cookpad.com 2016
Search
Yoshiori SHOJI
August 26, 2016
Technology
30
8.9k
How we cook cookpad.com 2016
http://cedec.cesa.or.jp/2016/session/PRD/11836.html
Yoshiori SHOJI
August 26, 2016
Tweet
Share
More Decks by Yoshiori SHOJI
See All by Yoshiori SHOJI
なぜThrottleではなくDebounceだったのか? 700並列リクエストと戦うサーバーサイド実装のすべて
yoshiori
13
6.3k
クライアントサイドでよく使われる Debounce処理 をサーバサイドで3回実装した話
yoshiori
2
890
ソートできるUUID v7をJavaで使うときの話
yoshiori
8
7.8k
Go Down Rockin'
yoshiori
31
15k
テストデータを貯めて感じたこと
yoshiori
12
4.4k
エンジニアリング x US 海外とのコラボレーション
yoshiori
3
2.1k
未完成な技術と歩む道のりでの 試行錯誤
yoshiori
0
200
DevOps, Immutable Infrastructure, Microservices and Chaos Engineering
yoshiori
13
2.4k
Change the recipe's world
yoshiori
3
1.5k
Other Decks in Technology
See All in Technology
ActiveJobUpdates
igaiga
1
310
MariaDB Connector/C のcaching_sha2_passwordプラグインの仕様について
boro1234
0
1k
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
340
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
3.9k
ハッカソンから社内プロダクトへ AIエージェント「ko☆shi」開発で学んだ4つの重要要素
sonoda_mj
6
1.5k
【U/Day Tokyo 2025】Cygames流 最新スマートフォンゲームの技術設計 〜『Shadowverse: Worlds Beyond』におけるアーキテクチャ再設計の挑戦~
cygames
PRO
2
1.4k
Identity Management for Agentic AI 解説
fujie
0
440
アラフォーおじさん、はじめてre:Inventに行く / A 40-Something Guy’s First re:Invent Adventure
kaminashi
0
120
Snowflake導入から1年、LayerXのデータ活用の現在 / One Year into Snowflake: How LayerX Uses Data Today
civitaspo
0
2.2k
AI駆動開発の実践とその未来
eltociear
1
480
Kiro を用いたペアプロのススメ
taikis
4
1.6k
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
180
Featured
See All Featured
WCS-LA-2024
lcolladotor
0
390
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
84
How to make the Groovebox
asonas
2
1.8k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Practical Orchestrator
shlominoach
190
11k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
How STYLIGHT went responsive
nonsquared
100
6k
How Software Deployment tools have changed in the past 20 years
geshan
0
30k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Transcript
何故 クックパッドの サービス開発の進化は 止まらないのか 庄司 嘉織 ∠
庄司嘉織 yoshiori 2001 組み込み系 プログラマ 2002 Borland Conference Tokyo で発表
2003 SI へ転職
2007 Java-ja コミュニティ立ち上げ 2009 ドワンゴへ転職 Web+DB PRESS で特集1 執筆 2011
ニコニコ静画 (電子書籍) リリース 2012 クックパッド へ転職
2014 Developers Summit で発表(ベストスピーカー) Developers Summit 関西 で基調講演 2016 CEDECで発表
イマココ ∠
クックパッドについて 2,450,000 cooking recipes 61,090,000 monthly unique visitors 1,850,000 PS
user
世界のクックパッド
13 languages 55 countries
None
世界一
世界一巨大な モノリシック Rails サイトでもある (かも知れない) https://speakerdeck.com/a_matsuda/the-recipe-for-the-worlds-largest-rails-monolith
rake stats >
なぜ Ǹ Ruby なのか スクリプト言語としては早い方 Ȑ 多分 Java や ASP
にすると サーバ台数半分くらいに出来る
コンピュータ資源を使い切りたい Ȑ 素早く価値を届けたい サーバコストを安くしたい 何を優先するか
素早く価値を届けたい コレは資源の有効活用や サーバコスト削減の努力を 怠っているわけではありません。 素早く価値を届けることを最優先事項とし、 それを最大限活かせる形で コスト削減などを 日々努力しています。
開発 テスト デプロイ
開発の基本的な流れ 開発用ブランチを切る 追加修正をしコミット ∠ ∠
開発環境には 本番のデータが 常にレプリ されている http://techlife.cookpad.com/entry/2014/10/03/110806
ダミーデータやテストデータでは サービスの価値はわからない データが 大量なときに 遅くなるなども 発見
開発の基本的な流れ 開発用ブランチを切る 追加修正をしコミット ∠ ∠
Pull Request を作成し レビューしてもらう リリースブランチに マージ CI でチェック ∠
レビュー対象 リリース対象となるブランチにマージされる コードはすべてコードレビューされる必要が ある。ただし、簡単な文言修正や緊急度の 高いものはテストが通ればマージして良い。 レビュー時 必ず返信がほしい、もしくは修正してもらい たいものは [MUST] をつける。逆に今は修
正しなくていいが次に弄るときは気にして おいてほしいことのような気軽なものには [nits][IMO]などをつける レビュー相手 他のチームとの連携や、専門分野外なの で識者にレビューしてもらいたいときはその 人達にも mention すること。 ȑ マージ LGTM を貰ったら自身でマージする。 また [MUST] が付いていない修正箇所は レビュー相手に再度確認を求める義務は なく自身の裁量で修正、マージして良い。
機械的にチェックできるのもは 機械にチェックさせる
iOS, Android は dokumi 使って チェック cookpad/dokumi
DeployGate などへの 自動アップロードにも対応 cookpad/dokumi 実機ですぐ チェックできる デザイナや ディレクタも
もちろん Pull Request 毎に CI も通す
Pull Request を作成し レビューしてもらう リリースブランチに マージ CI でチェック ∠ ∠
2,000+ 20,000+ FILES EXAMPLES ̓ MINITS cookpad/rrrspec 分散テスト実行システム
Pull Request を作成し レビューしてもらう リリースブランチに マージ CI でチェック ∠ ∠
本番デプロイ CI が通ると Staging に 自動的にデプロイされる ので動作確認 ∠ ∠
sorah/mamiya 150+ hosts 13 sec 高速デプロイシステム Ȑ Ȑ Ȑ Ȑ
Ȑ Ȑ Ȑ Ȑ
デプロイは開発者自身で行う 業務時間中のみデプロイ出来る デプロイはチャットでボットに言うだけ ロールバックもボットに言うだけ
本番デプロイ CI が通ると Staging に 自動的にデプロイされる ので動作確認 ∠ ∠
90+ 毎週約 90 個の Pull Request が 取り込まれている *クックパッド本体のみの数字です
30+ 課金や認証、 ユーザーサービスなど 30 以上の アプリケーションが 動いている
10+ 毎日 10 回以上 デプロイされている *クックパッド本体のみの数字です
「デプロイしたら終わり」ではない
スタッフだけ、 特定のユーザーにだけ 開発中の機能を 簡単に 公開できる cookpad/chanko 安全に簡単に
ユーザーさんが ご意見、ご感想を書くためのフォームを サービスの奥に隠すのではなく すぐに書ける場所に置く フォームへの投稿は 専用のチャンネルなどに流すのではなく、 常に眼に入るように サービス担当者が 普段から使っているチャンネルに流す
素早く価値を届けたい
2 年半前、発表した時は dokumi も rrrspec も mamiya も無かったし チャットでデプロイも 出来なかった
進化する 文化
情報共有 Blog と Wiki の機能を持った社内ツールがある。 Wiki だけでなく Blog があるのでストックスべき情 報とフロー情報を分けて書ける。それが別のサービ
スとしてあるのではなく、同じ所にあるため全員そ れを見れば良いし誰でも自分の意見を発信できる
全社的に 1Password が 導入された
意見交換 提案は最近は github/issues で行われる。議論と して追いやすく、後から経緯を見ることもできる。 チャットで話し始めたあとに issue に移行する場合 もある
社長も創業 者もアカウント 持ってるし 使っている
雑 ɔ http://techlife.cookpad.com/entry/2015/03/25/202709 決して低品質な仕事をしたり、誰かに迷惑をかけた りすることを指しているわけではありません。日頃か ら発言のハードルが低く、気軽に意見できることが 重要なのです。
zatsu リポジトリに 雑に issue を立て ていく
昼飯や 飲みに行った時の 貸し借りも
行動する ユーザーのため、会社のために正しいと思ったら 自分の意志で行動出来る。 怒る人は居ないし、助言してくれたり助けてくれる。 賛同したら一緒に動いてくれる。 Ŏ
Tech ブログ英語版 作ったぜ!と言ったら いろいろな人が 書き出している
社外のエンジニアにも貢献すること OSS 活動、執筆や講演などの社外への貢献も評価 の軸の1つです。 そういったことが許されているとかのレベルではなく 会社がそれを望んでいます。
今日ご紹介した 以外にも 多数
オープンである
平等である Ŏ ɔ
素早く価値を届けたい
–Grace Hopper http://en.wikiquote.org/wiki/Grace_Hopper “It's easier to ask forgiveness than it
is to get permission.”
None
None