27
Jenkinsを導入する 本当の理由を考えてみた @kakakikikeke Jenkins User Conference 2015

Jenkinsを導入する本当の理由を考えてみた

Embed Size (px)

Citation preview

Jenkinsを導入する 本当の理由を考えてみた

@kakakikikeke Jenkins User Conference 2015

About me

• @kakakikikeke

• Jenkins歴 3年

• インフラ

• クラウド

Agenda

• どうやってJenkinsを使っているか

• 問題点と解決案

• Emotional

どうやってJenkinsを 使っているか

• デプロイ 55%

• バッチ 30%

• テスト 10%

• サービス起動 5%

デプロイ

• Jenkins -> Capistrano

• ビルドの内容は簡潔に

• デプロイの内容をgitで管理したかった

• 並列化することで時間を短縮

テスト• Jenkins -> API (testNG)

• $ mvn clean test-compile test

• Jenkins -> UI (Selenium)

• $ mvn clean test-compile test

• VNC + firefox

バッチ• cronの代わり

• ログ転送

• モニタリング

• Jenkins + serverspec

• SPEC_OPTS=“-fd”

サービス起動

• 各種daemonの起動、停止

• # service httpd start

• サービスの起動、停止もCapistranoを使用

結局使っているのは ボクだけだった

なぜJenkinsを導入したのか

• 自動化

• Human Errorの防止

• Operationの簡易化

Operationの簡易化

• 複雑な手順をUIから操作できるようにした

• これができることがJenkinsの大きなメリットの1つ(なんじゃないかと思う)

• これができるとDeveloperがOpsの仕事をできるようになる(と思う)

それでも分からない人にはハードルが高い

聞いてみた• 他の人が作成したジョブを実行したことがあるか

• -> ある

• けど、結局ジョブが何をしているのか理解(学習)してから実行した

• 訳の分からないジョブを実行するのは心配

少しでも自分以外の人がJenkinsで気軽にOperationできるように努力してみる

手順書を書く• Jenkinsを操作するための手順書

• ここを押して、この名前のジョブのこのボタンを押すみたいな

• もともとOpsするのに手順書は書いていた

• Markdown + Jekyll

• 主にやったことは手順の「置き換え」

READMEを書く• 基本はジョブの説明を活用する

• が内容が複雑、書くことがいっぱいある場合はwikiに書いてURLで飛ばす

• ジョブが多ければおおいほど重要性を感じる

• 1年以上使われない謎のジョブが存在している

• 自分でもどんなジョブだったか忘れちゃった

目grep

• 色分け

• viewを使って主要なジョブをはじめに見せる

• 見た目大事

service

stg

dev

どうしてこんなことをしているのだろう

Jenkinsを導入する 本当の目的とは違うのでは

SPOF• Single Point of Failure、単一障害点

• 自分がSPOFになってはいけない

• 仕事ができない、退社

• デプロイ、障害対応できない

• 自分がいなくても皆がOperationできる環境を作る

JenkinsのOps• 機能やインフラのエンハンスがあった場合にOpsツールもエンハンスする(ことがある)

• 自分しかエンハンスできないツールだと結局廃墟と化す

• 辛い、もったいない

• エンハンスの証跡を極力残す(git log)

Jenkinsが死んだ• JenkinsがOpsに密結合しないようにする

• (最悪)JenkinsがなくてもOperationできるようにしておく必要がある

• 手順書 ⇔ Jenkins の代替

• Jenkins自体もSPOFにならないようにする

気づいたこと 考えたこと

💡

• OpsもDevの一種

• 知らないと何もできない

• ドキュメントや証跡を残そう

• markdown > wiki

啓蒙活動• 使ってもらうようにする

• 他のツールに比べハードルは低い(と思う)

• 学習してもらう

• 勉強会

• 社内ポスト「こんなジョブ作りましたー」

結果 こうなるといいな

理想

• だれでもOpsできる

• 時間ができる

• シンプルが一番、複雑なことは極力しない

ギャップ• やっぱり自分がやっている

• フェードアウトできる準備はできた

• 新人教育

• 成熟したOpsをやりたがらない

• 新規ツールの導入とシンプル差のギャップ

• キーワード:分散ビルド、Jenkins Cluster、Docker