Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cookpad awakens
Search
Yoshiori SHOJI
January 21, 2017
Technology
5
7.6k
Cookpad awakens
https://techconf.cookpad.com/2017/
Yoshiori SHOJI
January 21, 2017
Tweet
Share
More Decks by Yoshiori SHOJI
See All by Yoshiori SHOJI
クライアントサイドでよく使われる Debounce処理 をサーバサイドで3回実装した話
yoshiori
1
400
ソートできるUUID v7をJavaで使うときの話
yoshiori
8
7k
Go Down Rockin'
yoshiori
27
13k
テストデータを貯めて感じたこと
yoshiori
12
4.3k
エンジニアリング x US 海外とのコラボレーション
yoshiori
3
2k
未完成な技術と歩む道のりでの 試行錯誤
yoshiori
0
150
DevOps, Immutable Infrastructure, Microservices and Chaos Engineering
yoshiori
13
2.3k
Change the recipe's world
yoshiori
3
1.4k
Failure teaches Success
yoshiori
42
11k
Other Decks in Technology
See All in Technology
LINE API Deep Dive Q1 2025: Unlocking New Possibilities
linedevth
1
160
コード品質向上で得られる効果と実践的取り組み
ham0215
2
200
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
1.8k
数百台のオンプレミスのサーバーをEKSに移行した話
yukiteraoka
0
680
一人QA時代が終わり、 QAチームが立ち上がった話
ma_cho29
0
290
Road to SRE NEXT@仙台 IVRyの組織の形とSLO運用の現状
abnoumaru
0
380
初めてのPostgreSQLメジャーバージョンアップ
kkato1
0
400
Riverpod & Riverpod Generatorを利用して状態管理部分の処理を書き換えてみる簡単な事例紹介
fumiyasac0921
0
100
30代エンジニアが考える、エンジニア生存戦略~~セキュリティを添えて~~
masakiokuda
4
2k
Symfony in 2025: Scaling to 0
fabpot
2
170
大規模プロジェクトにおける 品質管理の要点と実践 / 20250327 Suguru Ishii
shift_evolve
0
280
Agile TPIを活用した品質改善事例
tomasagi
0
310
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Scaling GitHub
holman
459
140k
Visualization
eitanlees
146
16k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
470
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
490
Building Your Own Lightsaber
phodgson
104
6.3k
How GitHub (no longer) Works
holman
314
140k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
Why Our Code Smells
bkeepers
PRO
336
57k
GitHub's CSS Performance
jonrohan
1030
460k
Unsuck your backbone
ammeep
670
57k
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!