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.5k
Cookpad awakens
https://techconf.cookpad.com/2017/
Yoshiori SHOJI
January 21, 2017
Tweet
Share
More Decks by Yoshiori SHOJI
See All by Yoshiori SHOJI
ソートできるUUID v7をJavaで使うときの話
yoshiori
8
5.9k
Go Down Rockin'
yoshiori
17
9.3k
テストデータを貯めて感じたこと
yoshiori
12
4.2k
エンジニアリング x US 海外とのコラボレーション
yoshiori
3
2k
未完成な技術と歩む道のりでの 試行錯誤
yoshiori
0
130
DevOps, Immutable Infrastructure, Microservices and Chaos Engineering
yoshiori
13
2.2k
Change the recipe's world
yoshiori
3
1.4k
Failure teaches Success
yoshiori
42
11k
How we cook cookpad.com 2016
yoshiori
30
8.6k
Other Decks in Technology
See All in Technology
Hazard pointers with reference counter
ennael
PRO
0
100
DenoでもViteしたい!インポートパスのエイリアスを指定してラクラクアプリ開発
bengo4com
0
1.7k
Causal Impactを用いたLINE Pay UIの効果検証とABテスト実施への貢献
lycorptech_jp
PRO
2
460
映像・音声伝送システム
jtes
0
190
【shownet.conf_】AI技術とUX監視の応用でShowNetの基盤を支えるモニタリングシステム
shownet
PRO
0
260
HashHub会社案内「なぜ今、パブリックブロックチェーンに賭けるのか」
hashhub
3
75k
【shownet.conf_】ShowNet伝送改めShowNet APN 2024
shownet
PRO
0
310
【ログ分析勉強会#5】Elasticsearch/Kibana のパイプ型クエリー言語ES|QLの紹介 ~ Pandasと一緒にログ分析してみた
nobuhikosekiya
0
160
分析者起点の企画を成功させた連携面の工夫
lycorptech_jp
PRO
0
220
【shownet.conf_】トポロジ図の歩き方
shownet
PRO
0
350
Rubyはなぜ「たのしい」のか? / Why is Ruby a programmers' best friend? #tqrk15
expajp
4
1.7k
トークナイザー入門
payanotty
2
290
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Docker and Python
trallard
40
3k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
263
13k
Making Projects Easy
brettharned
114
5.8k
Speed Design
sergeychernyshev
22
460
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.3k
Optimizing for Happiness
mojombo
375
69k
Atom: Resistance is Futile
akmur
261
25k
The Cult of Friendly URLs
andyhume
76
6k
Navigating Team Friction
lara
183
14k
Facilitating Awesome Meetings
lara
49
6k
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!