Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
$PPLQBEBXBLFOT ঙ࢘Յ৫ ∠
Slide 2
Slide 2 text
ঙ࢘Յ৫ yoshiori ٕज़෦ਓࣄ෦ ∠
Slide 3
Slide 3 text
ਓࣄ෦ バックオフィスでも技術が分かる人がいることが大事 エンジニアの採用にも、もちろん大事 エンジニア以外に人権が無いのではない 逆に変に神聖視されないためにも大事
Slide 4
Slide 4 text
ٕज़෦
Slide 5
Slide 5 text
࠷ॳ쎂
Slide 6
Slide 6 text
まだまだ いっぱい
Slide 7
Slide 7 text
쎿썗쏝쏃쎅ׂ썿࿈ܞ
Slide 8
Slide 8 text
쎿썗쏝쏃쎅ׂ썿࿈ܞ microservices化によってサービス間の連携が大事に なった。 サービス間の境界に対して Pact と Expeditor とい うのを使っている -障害を制御する Expeditor -障害を予防する Pact
Slide 9
Slide 9 text
&YQFEJUPS -サーキットブレイカー -並列リクエスト -リトライ制御 cookpad/expeditor
Slide 10
Slide 10 text
1BDU -サービス間の連携部分のテスト -簡単に言うと Service-A が返す JSON と Service-B が期待する JSON のテスト -Consumer-Driven Contract testing (CDC testing) - 詳しくは http://techlife.cookpad.com/entry/2016/06/28/164247
Slide 11
Slide 11 text
QBDU@KVOJU@GPSNBUUFS -規模が大きいアプリケーションでは、pact verification が失敗した時に出力が多く見づらい -JUnit のフォーマットにすることで CI などでも 見やすいようにするプラグイン taiki45/pact_junit_formatter
Slide 12
Slide 12 text
QBDU@FYQFDUBUJPOT -Remote Facade のテストでのみ Pact を使い、そ の他の層では Remote Facade をモックするように -Pact の expectation をレスポンスとして流用で きる -ちゃんと設定したものが両方で呼ばれていること も確認できる yoshiori/pact_expectations
Slide 13
Slide 13 text
1IBLDIJ -iOS からの API 呼び出しも -Pact の expectation を楽に記述できる -Swift 製 -XCTest から利用 cookpad/Phakchi
Slide 14
Slide 14 text
쎿썗쏝쏃쎅 쏧썗쏉쏝쏴쏐쎭 分割したサービスは全て Docker 化されている Docker を更に有効的に使うために hako を作った
Slide 15
Slide 15 text
IBLP
Slide 16
Slide 16 text
IBLP -Docker のデプロイツール - 今のところ ECS に対応 - 定義は YAML で記述 (Ruby DSL とかは無い) eagletmt/hako
Slide 17
Slide 17 text
-一昨年から新規はすべて Docker、既存のものもど んどん Docker 化は結構進んでいた。 -が、どうしてもインフラ作業などは発生する。 - アプリケーションサーバ以外の機能 (RDS、Route53、ELB などなどの設定) - 環境変数の追加など (DB 情報や APIのキーなどの秘匿値) IBLP
Slide 18
Slide 18 text
IBLP -定義は YAML で記述 -ソフトウェアと同様に開発者が管理ができ、 git&github 等で管理、レビューが出来る -cookpad では hako_apps というリポジトリで集中 管理してる
Slide 19
Slide 19 text
IBLP -秘匿値を含む環境変数の扱い - etcd をバックエンドにした etcvault を使用 - 現在 hashicorp/vault に移行中 sorah/etcvault
Slide 20
Slide 20 text
-デプロイに処理を差し込む - Route53 の自動設定やデプロイするリビジョン を jenkins から取得等 -詳しくは下記 - https://speakerdeck.com/eagletmt/ecs-woli-yong-sitadepuroihuan- jing - http://techlife.cookpad.com/entry/2016/09/09/235007 IBLP
Slide 21
Slide 21 text
-hako deploy - デプロイを実行するコマンド - クックパッドではコマンド実行に Rundeck を使 用 -hako oneshot - バッチ系 IBLP
Slide 22
Slide 22 text
LVSPLP
Slide 23
Slide 23 text
-ジョブ管理システム - 各チームのジョブスケジュールを 可視化する機能などもあり -Ruby で書かれてる -Web UI がある -細かい話は http://techlife.cookpad.com/entry/2015/12/07/195732 LVSPLP cookpad/kuroko2
Slide 24
Slide 24 text
-ジョブ管理を最初は cron で雑に管理していて破 綻する - どのサーバでやるか - リソース使い切って分散したくなったり - バッチ用のサーバ立てたり 쏂쏱쏠쎂썻썛썽
Slide 25
Slide 25 text
-DB への接続やドメイン特有の処理など Web アプリと共有したいものは多い -普通にやると job 実行は web アプリを内包しな きゃいけなくなる - デプロイが別になったり大変 - プロビジョニング自動化してても大変…… - ワーカーは最強の権限をもったサーバになりがち 쏂쏱쏠쎂썻썛썽
Slide 26
Slide 26 text
-hako oneshot - ECS task なので IAM role を設定できる - 権限管理や秘匿値の管理がコンテナ単位になっ て適切にサービス毎に権限が管理できる - デプロイを気にする必要ない (Dokcer イメージを hako で実行するため) 쏂쏱쏠쎂썻썛썽
Slide 27
Slide 27 text
#BSCFRVF
Slide 28
Slide 28 text
-ジョブキューシステム -Ruby で書かれてる -kuroko2 と同じような Web UI -細かい話は https://speakerdeck.com/k0kubun/scalable-job-queue-system-built- with-docker #BSCFRVF cookpad/barbeque
Slide 29
Slide 29 text
-Rails だと Resque や Sidekiq 使うことが多い -さらにキューの管理が複雑に -起動がユーザリクエスト単位だったりするので負 荷が読みにくい 쏂쏱쏠쎷쏯썗쎂썻썛썽
Slide 30
Slide 30 text
-Barbeque も kuroko2 と同じように hako oneshot でジョブを実行(OSS 化済み) -Scale-out は hakoの特性を使ってやっている - ワーカー単位ではなくジョブ単位で必要な時に 必要な分だけオートスケールできる 쏂쏱쏠쎷쏯썗쎂썻썛썽
Slide 31
Slide 31 text
*NNVUBCMF *OGSBTUSVDUVSF
Slide 32
Slide 32 text
-言葉がバズってから結構たった -Docker 化により開発者も半ば強制的に意識するよ うになり、hako で加速 -コンテナ化によりポータビリティが上がりそれを 有効活用したシステム構成に出来るようになった *NNVUBCMF *OGSBTUSVDUVSF
Slide 33
Slide 33 text
-まだ Docker 化出来てない>< -が、もちろん Immutable な構成にはなっている -のでインフラ周りではちょっと面白いことやって いるよ〜 썾ɺDPPLQBEຊମ
Slide 34
Slide 34 text
)5514Խ
Slide 35
Slide 35 text
-Web の現状を鑑みるとHTTPS 化しない理由がない -新しい技術は HTTPS を要求するものが増えている (HTTP/2 やService worker 等) -さらなる挑戦のためにも HTTPS 化が必要だった )5514Խ
Slide 36
Slide 36 text
"NB[PO3FETIJGU쎏쎅 શҠߦ
Slide 37
Slide 37 text
-去年発表のあった DWH の件 -今まで サードパーティの DWH サービスを併用し ていたが完全に Redshift へ移行した -データが一箇所に集まった(アクセスログも!) "NB[PO3FETIJGU쎏쎅 શҠߦ
Slide 38
Slide 38 text
-つまりアクセスログとアプリケーションのデータ を join 出来る -例えば 神奈川県に住んでいる 20代女性が昨日一 番見ていたレシピのタイトルとかが簡単に取れる શ썽쎅쏑썗쏉썣ू쎕쎢 썿썛썝썪썿
Slide 39
Slide 39 text
-ディレクターも活用 -AB テストなどでもユーザーセグメント作ったり -もちろんプライバシーへの配慮なども取り組んで いる શ썽쎅쏑썗쏉썣ू쎕쎢 썿썛썝썪썿
Slide 40
Slide 40 text
쎕썿쎘
Slide 41
Slide 41 text
-この一年もドンドン進歩していった -もちろん今年も更に加速していきます!! 쎕썿쎘
Slide 42
Slide 42 text
We are hiring!