29
Jenkinsはじめました Yahoo! JAPANのCI+CD ヤフー株式会社 石川 真幸 2013年12月20日

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

  • Upload
    yahoo

  • View
    5.632

  • Download
    2

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

ヤフー株式会社 石川 真幸

2013年12月20日

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

本日のアジェンダ

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

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

• 現状について

• ここまでの道のり

• トラブル事例と課題

• まとめ

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

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

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

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

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

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

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

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

・・広告掲載枠

・・自然検索結果

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

www.yahoo.example.jp

激安!スーツケース

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

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

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

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

スマートフォンで、

「Yahoo!天気」

を見ていると・・・

PC・タブレットで、

「Yahoo!ニュース」

を見ていると・・・

モバイルで、

「Yahoo!知恵袋」

を見ていると・・・

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

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

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

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

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

現状について

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

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

Yahoo!プロモーション広告の規模感

最近では、夏の甲子園決勝がお昼に実施

日本中の人がYahoo! JAPANをみてくれていた!?

とてつもないリクエスト

それを支えるサーバ群

ミッドタウンのフロア半分くらいの開発者

詳しく言えず、すみません。m(_ _)m Copyright (C) 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

7

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

CI+CDの現状

Ops2名+Jenkinsさんで運用

プロモーション広告配信は、

9割くらいのコンポーネントをCI+CD化して

運用を最適化

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

+ +

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

広告配信CIモデル

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

Jenkins Master

Jenkins Slave

パッケージ リポジトリ

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

開発者 (開発環境)

deploy deploy

push Web hook

result mail

構成管理ツール

(社内)

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

ビルド ユニットテスト

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

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

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

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

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

ここまでの道のり

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

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

ボトムアップ

数名の有志による活動

組織化

後のエバンジェリスト達

生産性、安全性を強く訴えつつ、

テクニカルサポート

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

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

統一したパイプライン

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

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

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

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

パイプライン

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

コミット

パッケージ アセンブリ

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

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

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

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

デプロイ(prod)

コンポーネント

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

最後は・・・

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

CI+CDを実現できた。

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

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

結果

Jenkinsのジョブから、

1Clickでデプロイを実現

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

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

トラブル事例と課題

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

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

トラブル事例①GitHub

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

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

GitHubEnterpriseに負荷集中

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

負荷原因はあります。

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

トラブル課題対応①GitHub

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

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

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

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

トラブル事例②Slaveサーバ

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

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

結局お金の力なのか…

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

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

トラブル対応②slaveサーバ

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

Jcloudsプラグイン

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

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

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

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

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

トラブル対応②slaveサーバ

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

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

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

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

その他の課題

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

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

• テストコード

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

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

• 他の部への伝承や教育

• etc.

課題はまだまだ山積み!

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

まとめ

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

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

まとめ

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

Jenkinsを使って、

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

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

まとめ

エバンジェリスト‘s

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

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

まとめ

ルールや議論はほどほどで、

まずはやってみること!

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

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

We are hiring!

http://hr.yahoo.co.jp/career/01/0112.html

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

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

ご清聴ありがとうございました!

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