314 Views
December 27, 13
スライド概要
先日行われた第8回Jenkins勉強会にてプロモーション広告の継続的インテグレーション(以下、CI)/継続的デリバリー(以下、CD)に 関する取り組みについて紹介させていただきました。 タイトルは「Jenkinsはじめました」になっていますが、諸事情でタイトル通知後に少し内容を変更したため、 「はじめました」というよりは「結構使ってきました」というほうがしっくりくるかもしれません。
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
Jenkinsはじめました Yahoo! JAPANのCI+CD ヤフー株式会社 石川 真幸 2013年12月20日
本日のアジェンダ • • • • • Yahoo!プロモーション広告とは 現状について ここまでの道のり トラブル事例と課題 まとめ Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 2
Yahoo!プロモーション広告とは Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 3
Yahoo!プロモーション広告とは 検索連動型広告「スポンサードサーチ」とは ・・広告掲載枠 ・・自然検索結果 激安!スーツケース ハードキャリーが5000円から!安いけどおしゃれな全6色・サイズ有 www.yahoo.example.jp 画面はサンプルです。実際の表示は異なることがあります。 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 4
Yahoo!プロモーション広告とは Yahoo!ディスプレイアドネットワーク(YDN)とは PC・タブレットで、 「Yahoo!ニュース」 を見ていると・・・ YDNの広告 スマートフォンで、 「Yahoo!天気」 を見ていると・・・ YDNは画像広告 も表示可能! ※ YDNの広告 ※ 広告の掲載位置は、ウェブサイトによって予告なく変更になる場合があります。画像はサンプルです。実際の表示とは異なることがあります。 ※ YDNは、クリック課金型広告です。 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 モバイルで、 「Yahoo!知恵袋」 を見ていると・・・ 掲載箇所や表示本数はペ ージによって変動 5
現状について Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 6
Yahoo!プロモーション広告の規模感 最近では、夏の甲子園決勝がお昼に実施 日本中の人がYahoo! JAPANをみてくれて いた!? とてつもないリクエスト それを支えるサーバ群 ミッドタウンのフロア半分くらいの開発者 詳しく言えず、すみません。m(_ _)m Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 7
CI+CDの現状 Ops2名+Jenkinsさんで運用 プロモーション広告配信は、 9割くらいのコンポーネントをCI+CD化して 運用を最適化 + + Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 8
広告配信CIモデル (社内) push Web hook result mail 開発者 (開発環境) deploy 結合テスト デプロイテスト 構成管理 ツール ステージング環境 Jenkins Slave ビルド ユニットテスト コードカバレッジ 静的解析 パッケージ作成 Jenkins パッケージ登録 Master deploy 本番環境 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 パッケージ リポジトリ 9
Jenkinsおよび周辺構成 Master:3台構成 Slave:Master毎に約10台 ジョブ数:約300 所要時間:30秒~1時間以上と様々 プラグイン: git/github、coverity、rundeckなど • デプロイツール: Fabric/Capistrano/Rundeck • • • • • Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 10
ここまでの道のり Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 11
ボトムアップ 数名の有志による活動 組織化 後のエバンジェリスト達 生産性、安全性を強く訴えつつ、 テクニカルサポート Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 12
統一したパイプライン 独自のビルド実行スクリプトにより、 統一されたデプロイメントパイプラインを実現 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
パイプライン コミット コンポーネント パッケージ アセンブリ デプロイ(int) スモークテスト デプロイ(qa) 機能テスト デプロイ(perf) デプロイ(stage) パフォーマンステスト 運用テスト デプロイ(prod) Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 14
最後は・・・ 管理職の理解や強力なサポートもあって、 CI+CDを実現できた。 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 15
結果 Jenkinsのジョブから、 1Clickでデプロイを実現 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 16
トラブル事例と課題 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 17
トラブル事例①GitHub JenkinsとGitHubEnterpriseの連携に SCMポーリングを使ってた… GitHubEnterpriseに 負荷集中 ※実際はポーリング以外にも 負荷原因はあります。 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18
トラブル課題対応①GitHub Polling must die! Web Hookを有効活用しよう! ※ビルド間隔によっては有効ではありません。 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19
トラブル事例②Slaveサーバ 予算のある部署はslaveサーバの調達も簡単 しかし稟議通すのが結構大変な場合も… http://www.flickr.com/photos/68751915@N05/6355836713/sizes/l/ 結局お金の力なのか… Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 20
トラブル対応②slaveサーバ 仮想環境を有効活用しよう! Jcloudsプラグイン JCloudsライブラリを用いてOpenStackや CloudStackなど各種仮想化ツールとJenkinsの連 携を行うためのプラグイン ※社内のセキュリティルールに合わせるため、 一部ソースコードを改修して使用。 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 21
トラブル対応②slaveサーバ OpenStackベースの社内PaaSと連携 →物理サーバ不要 ビルド終了で仮想サーバも自動削除 →クラウド側のリソースも節約 Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 22
その他の課題 • • • • • • 細かいフロー(リリース、ジョブ数増加) テストコード もっと高度なデプロイに挑戦 全社的にはまだまだ普及できていない 他の部への伝承や教育 etc. 課題はまだまだ山積み! Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 23
まとめ Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 24
まとめ Jenkinsを使って、 CI+CDを実現するために大切な2つのこと Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 25
まとめ エバンジェリスト‘s Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 26
まとめ ルールや議論はほどほどで、 まずはやってみること! Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 27
We are hiring! http://hr.yahoo.co.jp/career/01/0112.html Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 28
ご清聴ありがとうございました! Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 29