by shigemk2

当面は技術的なことしか書かない

YahooがJenkinsをはじめました。 #jenkinsstudy

f:id:shigemk2:20131220194541p:plain

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

Yahoo プロモーション広告 (テキストや画像をwebで配信する クリック)

いわゆるweb広告

現状について

今年の夏の甲子園の時期にアクセスが激増

CI+CDの現状

Oops2名と執事

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

CIモデル

GitHub Enterprise

Jenkins Slave

Jenins Master

リポジトリ(Stagingでの検証 本番での展開)

周辺構成

Master 3 vs Slave 10

ジョブ 300くらい

所要時間 30秒ー1時間

プラグイン git/github coverity rundeck

デプロイツール Fabric/Capistrano/Rundeck(検証段階)

ここまでの道程

有志によるボトムアップ

組織化とエバンジェリスト

生産性と安定性を訴える

独自のビルド実行スクリプトにより統一されたデプロイメントパイプラインを実現

継続的デリバリー

コミット コンポーネント

パッケージ アセンブリ

デプロイ スモークテスト

デプロイ 機能テスト

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

デプロイ 運用テスト

デプロイ 本番

ワンクリックデプロイを実現する!!

管理職の理解や強力なサポートもあってCIやCDを実現できた!!

Jenkinsのジョブから1Clickでデプロイを実現できた。

数千数百 数時間から数日へ 運用に人は必要なくなった

トラブル事例

1 SCMポーリングにより、GitHubEnterpriseに負荷が集中

Polling must die!!

pollingをやめてweb hookを有効に

2 稟議を通すのが結構大変

  • 仮想かんきょうを有効活用しよう
  • Jclousプラグイン
  • (セキュリティの面から一部ソースコードを改修してごにょごにょ)

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

ビルドが終わったら仮想サーバも削除するからシンプルでリソースを節約できる

細かな問題

  • 細かいフロー
  • ジョブ数の増加(新しく追加だけされてるから執事が無双へ)
  • テストコード
  • もっと高度なデプロイに挑戦(インフラとか)
  • 全社的にはまだまだ普及できていない
  • 他の部への伝承や教育

まとめ

Jenkinsを使って CI CDを実現するために必要なこと

  1. エバンジェリストたち(重要性を理解し、周囲を巻き込む)
  2. ルールや議論はほどほどで、まずは(ゆるめで)やってみること

序々にやっていくこと。勉強会をやるにしても株主総会や重要な取引先との プレゼンじゃないので、ゆるくやること。