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
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.7k
クライアントサイドでよく使われる Debounce処理 をサーバサイドで3回実装した話
yoshiori
2
1.2k
ソートできるUUID v7をJavaで使うときの話
yoshiori
8
8.4k
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
sue445's proposals 2026
sue445
0
120
AI駆動開発におけるハーネスエンジニアリングの勘所
tsukuboshi
1
330
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
220
野蛮なアジャイル [サイボウズ発!]組織の常識を覆した反骨のスクラム実践記 / Barbaric Agile - Enterprise Agile Study Group
ama_ch
0
120
Browser Spec: Testing Hotwire with Ruby
takahashim
1
150
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
1k
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
140
局所最適は悪ではない。壊れているのは指標です。量と質を同時に見る先行指標の設計
recruitengineers
PRO
2
230
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
160
LLM-as-a-Judgeは本当に信頼できるのか――評価器を評価する話
taka_aki
2
1k
Codex を使った障害対応机上演習の実際
orgachem
PRO
0
230
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
Featured
See All Featured
Everyday Curiosity
cassininazir
0
360
Tell your own story through comics
letsgokoyo
1
1.1k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
740
Producing Creativity
orderedlist
PRO
348
41k
The browser strikes back
jonoalderson
0
1.8k
Between Models and Reality
mayunak
4
500
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Optimizing for Happiness
mojombo
378
71k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
Paper Plane
katiecoart
PRO
5
54k
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!