Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Cookpad awakens
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yoshiori SHOJI
January 21, 2017
Technology
7.7k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cookpad awakens
https://techconf.cookpad.com/2017/
Yoshiori SHOJI
January 21, 2017
More Decks by Yoshiori SHOJI
See All by Yoshiori SHOJI
なぜThrottleではなくDebounceだったのか? 700並列リクエストと戦うサーバーサイド実装のすべて
yoshiori
13
7.6k
クライアントサイドでよく使われる Debounce処理 をサーバサイドで3回実装した話
yoshiori
2
1.2k
ソートできるUUID v7をJavaで使うときの話
yoshiori
8
8.3k
Go Down Rockin'
yoshiori
31
20k
テストデータを貯めて感じたこと
yoshiori
12
4.5k
エンジニアリング x US 海外とのコラボレーション
yoshiori
3
2.2k
未完成な技術と歩む道のりでの 試行錯誤
yoshiori
0
250
DevOps, Immutable Infrastructure, Microservices and Chaos Engineering
yoshiori
13
2.5k
Change the recipe's world
yoshiori
3
1.6k
Other Decks in Technology
See All in Technology
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
550
AI に書かせたその API、 “信頼” できますか?
nagix
0
110
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
100
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
190
Geolonia の開発現場における AIの活用について
miya0001
0
100
Screen Lens - 今見てる画面を翻訳する
komagata
0
290
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
110
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
8
4k
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
21
11k
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
4
600
事業課題から技術的負債に向き合う
sansantech
PRO
2
1.8k
[2026-09-11]SREは誰のもの?運用エンジニアが始める 「SRE領域への越境」とチームの進化の軌跡 〜Road to NEXT CRE
tosite
0
240
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.5k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
840
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Google's AI Overviews - The New Search
badams
0
1.6k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Faster Mobile Websites
deanohume
310
32k
Transcript
$PPLQBEBXBLFOT ঙ࢘Յ৫ ∠
ঙ࢘Յ৫ yoshiori ٕज़෦ਓࣄ෦ ∠
ਓࣄ෦ バックオフィスでも技術が分かる人がいることが大事 エンジニアの採用にも、もちろん大事 エンジニア以外に人権が無いのではない 逆に変に神聖視されないためにも大事
ٕज़෦
࠷ॳ쎂
まだまだ いっぱい
쎿썗쏝쏃쎅ׂ썿࿈ܞ
쎿썗쏝쏃쎅ׂ썿࿈ܞ microservices化によってサービス間の連携が大事に なった。 サービス間の境界に対して Pact と Expeditor とい うのを使っている -障害を制御する
Expeditor -障害を予防する Pact
&YQFEJUPS -サーキットブレイカー -並列リクエスト -リトライ制御 cookpad/expeditor
1BDU -サービス間の連携部分のテスト -簡単に言うと Service-A が返す JSON と Service-B が期待する
JSON のテスト -Consumer-Driven Contract testing (CDC testing) - 詳しくは http://techlife.cookpad.com/entry/2016/06/28/164247
QBDU@KVOJU@GPSNBUUFS -規模が大きいアプリケーションでは、pact verification が失敗した時に出力が多く見づらい -JUnit のフォーマットにすることで CI などでも 見やすいようにするプラグイン taiki45/pact_junit_formatter
QBDU@FYQFDUBUJPOT -Remote Facade のテストでのみ Pact を使い、そ の他の層では Remote Facade をモックするように
-Pact の expectation をレスポンスとして流用で きる -ちゃんと設定したものが両方で呼ばれていること も確認できる yoshiori/pact_expectations
1IBLDIJ -iOS からの API 呼び出しも -Pact の expectation を楽に記述できる -Swift
製 -XCTest から利用 cookpad/Phakchi
쎿썗쏝쏃쎅 쏧썗쏉쏝쏴쏐쎭 分割したサービスは全て Docker 化されている Docker を更に有効的に使うために hako を作った
IBLP
IBLP -Docker のデプロイツール - 今のところ ECS に対応 - 定義は YAML
で記述 (Ruby DSL とかは無い) eagletmt/hako
-一昨年から新規はすべて Docker、既存のものもど んどん Docker 化は結構進んでいた。 -が、どうしてもインフラ作業などは発生する。 - アプリケーションサーバ以外の機能 (RDS、Route53、ELB などなどの設定)
- 環境変数の追加など (DB 情報や APIのキーなどの秘匿値) IBLP
IBLP -定義は YAML で記述 -ソフトウェアと同様に開発者が管理ができ、 git&github 等で管理、レビューが出来る -cookpad では hako_apps
というリポジトリで集中 管理してる
IBLP -秘匿値を含む環境変数の扱い - etcd をバックエンドにした etcvault を使用 - 現在 hashicorp/vault
に移行中 sorah/etcvault
-デプロイに処理を差し込む - Route53 の自動設定やデプロイするリビジョン を jenkins から取得等 -詳しくは下記 - https://speakerdeck.com/eagletmt/ecs-woli-yong-sitadepuroihuan-
jing - http://techlife.cookpad.com/entry/2016/09/09/235007 IBLP
-hako deploy - デプロイを実行するコマンド - クックパッドではコマンド実行に Rundeck を使 用 -hako
oneshot - バッチ系 IBLP
LVSPLP
-ジョブ管理システム - 各チームのジョブスケジュールを 可視化する機能などもあり -Ruby で書かれてる -Web UI がある -細かい話は
http://techlife.cookpad.com/entry/2015/12/07/195732 LVSPLP cookpad/kuroko2
-ジョブ管理を最初は cron で雑に管理していて破 綻する - どのサーバでやるか - リソース使い切って分散したくなったり - バッチ用のサーバ立てたり
쏂쏱쏠쎂썻썛썽
-DB への接続やドメイン特有の処理など Web アプリと共有したいものは多い -普通にやると job 実行は web アプリを内包しな きゃいけなくなる
- デプロイが別になったり大変 - プロビジョニング自動化してても大変…… - ワーカーは最強の権限をもったサーバになりがち 쏂쏱쏠쎂썻썛썽
-hako oneshot - ECS task なので IAM role を設定できる -
権限管理や秘匿値の管理がコンテナ単位になっ て適切にサービス毎に権限が管理できる - デプロイを気にする必要ない (Dokcer イメージを hako で実行するため) 쏂쏱쏠쎂썻썛썽
#BSCFRVF
-ジョブキューシステム -Ruby で書かれてる -kuroko2 と同じような Web UI -細かい話は https://speakerdeck.com/k0kubun/scalable-job-queue-system-built-
with-docker #BSCFRVF cookpad/barbeque
-Rails だと Resque や Sidekiq 使うことが多い -さらにキューの管理が複雑に -起動がユーザリクエスト単位だったりするので負 荷が読みにくい 쏂쏱쏠쎷쏯썗쎂썻썛썽
-Barbeque も kuroko2 と同じように hako oneshot でジョブを実行(OSS 化済み) -Scale-out は
hakoの特性を使ってやっている - ワーカー単位ではなくジョブ単位で必要な時に 必要な分だけオートスケールできる 쏂쏱쏠쎷쏯썗쎂썻썛썽
*NNVUBCMF *OGSBTUSVDUVSF
-言葉がバズってから結構たった -Docker 化により開発者も半ば強制的に意識するよ うになり、hako で加速 -コンテナ化によりポータビリティが上がりそれを 有効活用したシステム構成に出来るようになった *NNVUBCMF *OGSBTUSVDUVSF
-まだ Docker 化出来てない>< -が、もちろん Immutable な構成にはなっている -のでインフラ周りではちょっと面白いことやって いるよ〜 썾ɺDPPLQBEຊମ
)5514Խ
-Web の現状を鑑みるとHTTPS 化しない理由がない -新しい技術は HTTPS を要求するものが増えている (HTTP/2 やService worker 等)
-さらなる挑戦のためにも HTTPS 化が必要だった )5514Խ
"NB[PO3FETIJGU쎏쎅 શҠߦ
-去年発表のあった DWH の件 -今まで サードパーティの DWH サービスを併用し ていたが完全に Redshift へ移行した
-データが一箇所に集まった(アクセスログも!) "NB[PO3FETIJGU쎏쎅 શҠߦ
-つまりアクセスログとアプリケーションのデータ を join 出来る -例えば 神奈川県に住んでいる 20代女性が昨日一 番見ていたレシピのタイトルとかが簡単に取れる શ썽쎅쏑썗쏉썣ू쎕쎢 썿썛썝썪썿
-ディレクターも活用 -AB テストなどでもユーザーセグメント作ったり -もちろんプライバシーへの配慮なども取り組んで いる શ썽쎅쏑썗쏉썣ू쎕쎢 썿썛썝썪썿
쎕썿쎘
-この一年もドンドン進歩していった -もちろん今年も更に加速していきます!! 쎕썿쎘
We are hiring!