組織文化を変えるDevOps文化を学ぶトレーニングに参加 @シンガポール

こんにちは。Red Hatの森(@mosuke5) です。
先日シンガポールオフィスにてRed Hatの新しい試みの1つである、DevOps文化を学ぶトレーニングに参加してきたので、そのレポートです。一緒に行った鈴木(@tomoya_su)とともに本ブログを書いています。

1. DevOps文化を学ぶ?

みなさんはRed Hatにどんなイメージを持っていますか?おそらく多くの人はRedHat Eterprise Linuxの印象が強いのではないかと思います。もちろん、今でもRedHat Enterprise Linuxは大きな事業の柱ですが、最近ではOpenShiftをはじめコンテナ技術に関する製品に注力していますし、また製品だけではなくてそれを「うまく使いこなせるようになるためのDevOps文化を育む」ためのトレーニングやビジネスを行っています。
その最たる例として、Open Innovation Labsというがあります。これは、Red Hatのコンサルタントやエンジニア、対象分野の専門家とともに一定期間(標準的なものだと4〜12週間)ともにプロジェクトを進めていくタイプのサービスです。アジャイル開発やDevOps導入の方法論を学び、実践しながら、プロトタイピングしていくといったことを行います。最近ですと日本でもふくおかフィナンシャルグループ様での事例などがてきています。

今回は、プロジェクト型として大規模に行うものではなくて、DevOps文化を学ぶための5日間のトレーニングコース「DevOps Culture and Practice Enablement」をシンガポールで受講してきました。 こちらは上で紹介したOpen Innovation labsが実際のプロジェクトベースなものに対して、数日間の一般的な「トレーニング」として提供するものです。日本でも提供を企画しており、提供するにあたっての体験として参加してきました。

開催情報

  • 期間:2019年7月22日〜26日
  • 場所:Red Hatシンガポールオフィス
  • 参加者:日本、中国、韓国、インド、シンガポールなどアジアのリージョンのRed Hat社員20人程度。ロールはコンサルタントやテクニカルトレーナーなど。

www.redhat.com

学んだ内容については、後述するのですが、このトレーニングの面白いところは、アジャイルなカルチャーを学ぶトレーニングをアジャイルなカルチャーで実行して学ぶというメタ的な視点で学ぶことにありました。それでは実際にどんなことを体験してきたのかみていきましょう。

f:id:mosuke5:20190809121642j:plain
Fun with DevOps

2. どのようなトレーニングか

2.1 全体

このトレーニングは DevOpsのチーム作りや顧客志向などのプラクティスを体験するワークショップと TDDやCICDなどの技術的なプラクティスを実践する技術演習に大きく分かれています。 初日にチーム分けをして、5日間そのチームでプラクティスに取り組みます。

f:id:mosuke5:20190723100233j:plain
ワークショップ

実施されたトレーニングルームは、DevOps文化を体験する専用の部屋でした。 広い部屋でしたが講師を含めて30名近い人数がいたので、ちょうど良い大きさでした。 また、壁や窓が広く使える点とホワイトボードがいたるところにあるなど、DevOpsを体験するための環境としてとても工夫されている空間でした。

f:id:mosuke5:20190809133410p:plain
クラスルーム

2.2 プラクティス編

本トレーニングでは、基本的にワークショップ形式が中心となって進められていきます。 DevOpsのプラクティスの概要について説明をうけて、そのプラクティスを同じチームのメンバーと一緒にワークショップで取り組みます。
どのようなプラクティスを体験したかというと、例えば下記のようなものです。

  • 最高のチームを作るプラクティス
    • 「社会契約」
    • 「チーム感情の評価」
  • 顧客を深く理解するプラクティス
    • 「ユーザーストーリーマッピング」
    • 「共感マッピング」
  • システム・プロセスを深く理解するプラクティス
    • 「イベントストーミング」
    • 「バリューストリームマッピング」

上は例なので他にもOpenPracticeLibraryにあるようなプラクティスを実際に体験しました。 ちなみに、OpenPracticeLibraryはRedHatがDevOpsで役立つプラクティスについて公開しているサイトです。

openpracticelibrary.com

余談ではありますが、下記サイトにてOpenPracticeLibraryにあるプラクティスを日本語で紹介する取り組みも進めています。
https://tomosuzu.com/practices/

知識としてプラクティスを理解するだけではなく、 プラクティスを実際に体験するということはとても重要です。 プラクティスの方法を学ぶだけであれば、おそらく5日間もかからないと思いますし、 書籍や上記のサイトを見るだけでも学べます。

自転車がどういうもので、どうやって乗るのかを知識として知ってはいても、 実際に自転車に乗ってみると乗れないのと一緒で、 プラクティスも知識として知っていても使いこなすことは非常に難しいものです。 実際に体験し、どういうものか、どういうメリットがあるのかを体で感じることが大切です。

このトレーニングでは、各プラクティスの紹介時に簡単な問題が用意されており、 その問題をチームで取り組むことでプラクティスを簡単にではありますが体験できます。 この点がこのトレーニングの最大のメリットのひとつであり、 自分自身の成長はもちろん、組織にDevOpsの文化を取り入れていくためにもとても大事なことです。

また、簡単な体験だけではなく、実際の仕事でそのプラクティスがどう生かされているのかを実際のプロジェクトを元に紹介してもらえます。 講師の方々は、いくつものDevOpsのプロジェクト(Open Innovation Labs)を実施してきたコンサルタントがほとんどです。 ◯◯社のプロジェクトでは、このプラクティスをこうやって使っていて、こんな効果があった などのように実例を元に説明をしていただけたので、トレーニングだからうまくいくのではないかという疑念を払拭でき、説得力がありました。

2.3 技術編

DevOpsのカルチャーを学ぶトレーニングですが、技術もその重要な要素です。DevOpsを行うにあたって特に「自動化」や「テスト」は欠かせないポイントです。アジャイルの開発プロセスでは、仮説と検証を繰り返しながらサービスに必要な機能やそのありかたを探っていきます。リリース作業やテストの作業が自動化されていないことには、早いサイクルで仮説検証を行っていくことができなくなってしまうため非常に重要なトピックです。

環境概要

今回のトレーニングではOpenShift(Red Hatの提供するKubernetesディストリビューション)が用意されており、その上に開発・CICDを行うのに必要なGitlabやJenkins、Docker Imageレジストリなどを構築して使っていきました。さらに、実際にシンプルなサンプルアプリケーションを利用して、CICDやTDDなどを体験していくものとなります。サンプルアプリケーションはTODOアプリなのですが、フロントエンドはVue.js、APIサイドはNode.js+mongoDBで動くという構成でした。

以下は、今回実際に触ってみた全体像になります。

f:id:mosuke5:20190809122355p:plain
全体構成

重要なポイント

技術編では資料に沿って手順をこなしていけば完成はするのですが、いくつか重要なポイントがありました。独断ではあるのですがいくつかピックアップしてまとめてみます。

1. Ansibleを使って、OpenShiftの設定のセットアップを自動化すること

OpenShiftそのもののデプロイではなく、利用するネームスペースや共通で使うJenkinsなどのコンポーネントの立ち上げをAnsibleで行いました。Configuration as Codeと呼んでいましたが、他のチームでの構築や再構築が可能なようにするために自動化をしていきました。ツールは何でもいいのですが、再現可能にして環境を複製したり設定の反映の自動化ができるようになることが重要でした。

2. Jenkinsでビルド、テスト、リリースなどを自動化するパイプラインを作ること

基本的なCI/CDですが、アジャイル開発での仮説と検証をすばやく行えるようにするためにJenkinsを利用したビルド、テスト、リリースなどの作業を行いました。 こちらを行うことで、提携の作業をなくして、より開発やチームでのワークを増やすことができます。

3. サンプルアプリケーションで実践すること

サンプルのアプリはシンプルではありますが、Front-endアプリケーション(Vue.js)とAPIアプリケーション(Node.js)に別れた構成になっていていました。それぞれでの役割を意識しながら、環境を作っていくことが非常に重要です。パイプラインの作成だけでなく、TDDやE2Eテスト、非機能要件のチェックなどの体験をすることができました。

4. わからないことはペアで助け合いながらすすめること

本トレーニングには必ずしもOpenShiftやCICDに長けたエンジニアだけではなく、プロジェクトマネージャ職など様々な人達が参加していました。わからない部分はチーム内でお互いに助け合いながらすすめていきます。これも、多様性を重視したクロスファンクショナルなチームでものごとをすすめるための重要な要素でした。

3. まとめ

DevOpsのカルチャーを学ぶトレーニング、ということで、ただ単によくある手法や技術を学ぶだけでなく、実際にチームを組んで実践していくというを体験してきました。頭だけでの理解ではなく、そのカルチャーの中に5日間身をおいて活動する楽しさがありました。ツールやプロダクトだけでなく、それを使いこなしていく最高のチーム・効率的な開発プロセスを学んでみたい方は多いはずです。日本での提供がいつになるかはまだ未定ですが、検討と準備をしている最中ですので、進捗あり次第またご報告させていただければと思います。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。