Jenkinsはじめました - Yahoo! JAPANのCI+CD -

Post on 15-Jan-2015

5.626 views 2 download

description

先日行われた第8回Jenkins勉強会にてプロモーション広告の継続的インテグレーション(以下、CI)/継続的デリバリー(以下、CD)に 関する取り組みについて紹介させていただきました。 タイトルは「Jenkinsはじめました」になっていますが、諸事情でタイトル通知後に少し内容を変更したため、 「はじめました」というよりは「結構使ってきました」というほうがしっくりくるかもしれません。

Transcript of Jenkinsはじめました - Yahoo! JAPANのCI+CD -

Jenkinsはじめました Yahoo! JAPANのCI+CD

ヤフー株式会社 石川 真幸

2013年12月20日

本日のアジェンダ

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 2

• Yahoo!プロモーション広告とは

• 現状について

• ここまでの道のり

• トラブル事例と課題

• まとめ

Yahoo!プロモーション広告とは

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 3

Yahoo!プロモーション広告とは

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 4

検索連動型広告「スポンサードサーチ」とは

画面はサンプルです。実際の表示は異なることがあります。

・・広告掲載枠

・・自然検索結果

ハードキャリーが5000円から!安いけどおしゃれな全6色・サイズ有

www.yahoo.example.jp

激安!スーツケース

Yahoo!プロモーション広告とは

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 5

※ 広告の掲載位置は、ウェブサイトによって予告なく変更になる場合があります。画像はサンプルです。実際の表示とは異なることがあります。 ※ YDNは、クリック課金型広告です。

スマートフォンで、

「Yahoo!天気」

を見ていると・・・

PC・タブレットで、

「Yahoo!ニュース」

を見ていると・・・

モバイルで、

「Yahoo!知恵袋」

を見ていると・・・

YDNは画像広告 も表示可能!

YDNの広告 掲載箇所や表示本数はペ

ージによって変動 YDNの広告

Yahoo!ディスプレイアドネットワーク(YDN)とは

現状について

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モデル

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 9

Jenkins Master

Jenkins Slave

パッケージ リポジトリ

ステージング環境 本番環境

開発者 (開発環境)

deploy deploy

push Web hook

result mail

構成管理ツール

(社内)

結合テスト デプロイテスト

ビルド ユニットテスト

コードカバレッジ 静的解析

パッケージ作成 パッケージ登録

Jenkinsおよび周辺構成

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 10

• Master:3台構成

• Slave:Master毎に約10台

• ジョブ数:約300

• 所要時間:30秒~1時間以上と様々

• プラグイン:

git/github、coverity、rundeckなど

• デプロイツール:

Fabric/Capistrano/Rundeck

ここまでの道のり

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. 無断引用・転載禁止

独自のビルド実行スクリプトにより、

統一されたデプロイメントパイプラインを実現

パイプライン

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 14

コミット

パッケージ アセンブリ

デプロイ(int) スモークテスト

デプロイ(qa) 機能テスト

デプロイ(perf) パフォーマンステスト

デプロイ(stage) 運用テスト

デプロイ(prod)

コンポーネント

最後は・・・

管理職の理解や強力なサポートもあって、

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

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18

JenkinsとGitHubEnterpriseの連携に SCMポーリングを使ってた…

GitHubEnterpriseに負荷集中

※実際はポーリング以外にも

負荷原因はあります。

トラブル課題対応①GitHub

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19

Polling must die! Web Hookを有効活用しよう!

※ビルド間隔によっては有効ではありません。

トラブル事例②Slaveサーバ

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 20

予算のある部署はslaveサーバの調達も簡単 しかし稟議通すのが結構大変な場合も…

結局お金の力なのか…

http://www.flickr.com/photos/68751915@N05/6355836713/sizes/l/

トラブル対応②slaveサーバ

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 21

Jcloudsプラグイン

仮想環境を有効活用しよう!

JCloudsライブラリを用いてOpenStackやCloudStackなど各種仮想化ツールとJenkinsの連携を行うためのプラグイン

※社内のセキュリティルールに合わせるため、

一部ソースコードを改修して使用。

トラブル対応②slaveサーバ

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 22

OpenStackベースの社内PaaSと連携 →物理サーバ不要

ビルド終了で仮想サーバも自動削除 →クラウド側のリソースも節約

その他の課題

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 23

• 細かいフロー(リリース、ジョブ数増加)

• テストコード

• もっと高度なデプロイに挑戦

• 全社的にはまだまだ普及できていない

• 他の部への伝承や教育

• etc.

課題はまだまだ山積み!

まとめ

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 24

まとめ

Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 25

Jenkinsを使って、

CI+CDを実現するために大切な2つのこと

まとめ

エバンジェリスト‘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