出力を入力へ

プログラミングに関する自分が考えた事を中心にまとめます

Jenkins ユーザ・カンファレンス 東京 2018 に参加しました

作成・公開が遅くなったけど,3週間前に開催されたJenkinsユーザカンファレンスの参加記録です.

Jenkinsの公式ユーザカンファレンスとして3年に1度開催されている Jenkins ユーザ・カンファレンス東京2018に参加しました. 3連休中日の9/23(日)に開催でしたが,約300名規模が参加するなど非常に盛況でした.

聴講セッション

基調講演 (CloudBees, Inc. 川口耕介さん)

ソフトウェア開発・CI/CDの重要性といった全体の話から Jenkinsのユーザ拡大,CloudBeesの取り組みといった現状についての紹介. その後Jenkinsの最近の新機能として以下の5つを中心に説明があった:

  • ビルドフローを設定ファイルとして記述してリポジトリに保存する Jenkins Pipeline
  • デフォルト設定とプラグインをパッケージ化して5分でJenkinsを使えるようにする Jenkins Evergreen
  • Jenkins自体の設定をファイルとして記述し履歴管理を可能にする Configuration as Code
  • JenkinsがSPOFになることを回避するため,成果物等をS3に保存するなど分散実行する Cloud Native Jenkins
  • Kubernetesと連携し,簡単にかつ学習コスト少なくKubernetesの恩恵を受けられるようにする Jenkins X

既に利用しているPipelineや情報としては知っているJenkins Xもあるが, 知らない機能やJenkinsが現在も大きく変化しようとしていること, その方向性を知ることができたのはよかった. 新機能についてはリリースされたばかりのものもあるので実際に評価して確かめていきたい.

Accelerate with Jenkins X (James Rawlings さん)

クラウドネイティブな開発を簡単に実現するため, 簡単には利用できないKubernetesをJenkins Xを通して簡単に利用できるようにする, というJenkins Xのミッションとそのデモの紹介.

デモでは実際にコマンドからGitHub上にリポジトリを構築したり,Kubernetesクラスタを構築したり, パイプラインを生成してビルド・デプロイを実施したりできる.

デモを見るまではCI環境として利用するKubernetesを構築することが Jenkins Xの内容だと理解していたが,説明やデモを見て Kubernetesは完全に隠蔽してその上で動かすアプリを提供するものだと理解した.

Jenkinsおじさんの育て方 (ビズリーチSREチームマネージャー 阪本稔さん)

slides.com

今後もCIの重要性が増す中で,開発を支援しトラブル対応可能な人材を育てるために SRE本を参考に教育カリキュラムを構築・実践してきた内容の紹介.

内容はJenkinsをターゲットにはしているけど,SRE本および教育方針がメインテーマに感じた. CI/CDの歴史やJenkinsの基礎知識は問題ないにしても, 既存ジョブの知識やトラブルシューティングtipsはどう教えるのか難しいのではと感じた. ジョブやパイプラインにどのようなものがあるのかという設計指針や プロジェクトやJenkinsバージョン等によって異なるトラブルシューティングtipsは そう簡単には教育資料としてまとめられる気がしない.

AWSとJenkinsを活用して1年間で約500回商用デプロイした話とKubernetes活用 (NTTデータAgileプロフェッショナルセンタ主任 高見将則 さん)

speakerdeck.com

実際のWebサービス開発においてJenkinsを導入した事例における, 導入の話や,パイプラインの設計およびトラブル対応の紹介.

発表時間の割に重要な情報が多い印象を受けた(当時は発表自体はすぐ終わり質疑に多くの時間が割かれた). パイプラインとしてブランチビルド,リリースビルド,デプロイの3種類を定義していることは, 確かに自分も似たような構成を取ってはいるが,きちんと名前付けして整理されていない. パイプラインの設計は暗黙知化されているので,設計指針とすれば複数開発プロジェクトに展開できる知見だと感じた.

開発が始まってからの導入が難しいので事前または初期に導入すべし,というのはその通りだけど それに必要となる教育(特に他社ベンダへの展開)をどうしたのかが気になった. 最近ではJenkinsだけでなくCIは当然の知識としてあるのかもしれないけど 自社の場合はまだCIとは何か,CIの必要性といったことを上司含めて説得する必要があるので 特に課題が具体化されていない初期でどのように説得するのかは悩ましいところ. (課題が具現化された状況では導入は遅く,具現化される前は軽視されて取り合ってくれない).

課題なんかもよくあるテーマだと感じた. 特にスローテストまわりはプロジェクトや開発フェーズによって いろいろな要因があるので何度も悩まされる課題という印象. こういった課題への対処こそきちんと知見として共有していく必要がある.

LT: Jenkinsを簡単運用ツールとして活用して非エンジニアに喜ばれた話 (morihayaさん)

www.slideshare.net

定型的なSQLクエリの管理にJenkinsを利用したという話. 非エンジニアとは言うが運用チームの話なのである程度技術背景もあるし 導入もそこまで大変ではないかな,という印象.

Jenkinsを利用することでレビューや認証認可を強制する,というのは納得感のある話. むしろ非エンジニアだと少しリッチでGUIのあるcron程度で十分なので Jenkinsだと機能過多になる,という話の方が多いのでそういった話かと勘違いしていた.

話を聞く限りではまさにJenkinsがバッチリとはまるケースの印象. 問題はこういった仕組みを導入するとJenkinsインフラの管理もこちらの仕事にされるところだろうか. 責任分担をどうしたのかが気になる.

LT: Jenkins World 2018の参加報告 (Masayoshi Sakamotoさん)

Jenkins World 2018のホットトピックであった * as Code, DockerのCI/CD, DevSecOpsの紹介と 特に気になったセッションの紹介.

いずれのテーマもまさに今注目の内容なので Jenkins Worldのような場で話を聞けるのは羨しく思う. 特にDevSecOptまわりは,考え方としては知っていても実感できていないので 非常に気になるところ. コンテナCI/CDも自分の環境でやっと形になったところなので, 段階的にでも導入するという話を聞いて自分が取り組んでいることに 確信が持てたのでよかった.

LT: Jenkinsで運用業務の改善をしてみて気づいたこと (Yoshitaka Shirakoさん)

www.slideshare.net

Jenkinsの自動化により効率化やコード化による品質向上を実現したが 自動化が目的化してしまい本当に必要な業務効率化には至らなかったという話.

自動化による業務改善自体は上手くいっているが 上司をまきこめなかったので最適化はできなかったという話だろうか. 似たような話に自動化を進めた結果,自動化した中身がブラックボックス化 してしまうという話だと思ったので,ここまでできているのなら上出来では?とも考えてしまう.

これは改善の目的をどこに置くかという話で, いわゆるアジャイルにおけるふりかえりを踏まえた 課題の明確化や継続的な改善に取り組まないと 中途半端な状況で改善が止まってしまう.

自分もかなり悩んだ状況なので参考に頑張りたい.

LT: JenkinsとCodeBuildとCloudBuildと私 (Shoji Shirotori さん)

www.slideshare.net

Jenkinsの管理や権限設計の改善のために CodeBuildやCloud Buildの利用比較を行った話.

気にはなっていたけど検討できていない内容だったので参考になる話ではある. ただし,Cloud Buildはともかく, CodeBuildはCodePipelineなど複数サービスを組合せてパイプラインを構築することが 前提となっている様子なのでもう少し検討したいところ.

Jenkinsのすべてを置き換えるのか,一部を置き換えるのか, パイプラインの方針などによって異なるので 必要な機能に応じて自分でもいろいろ比較検討してみたいところ. 最近だとAzure DevOpsも比較対象に加えたい.