DevOpsで大事なのはマインドセットや考え方だ
牛尾氏と寺田氏による「そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!」と名付けられたセッションは、「Are you Ready?」という牛尾氏によるコール&レスポンスにより始まった。3度目の牛尾氏のコールには、ほぼ満席の参加者から「イエーイ!」という大きなレスポンスが起こり、開始早々にもかかわらず、会場は熱い空気に満たされた。
牛尾氏と寺田氏はマイクロソフトの社員ながら、「Windowsのことはよくわかっていない」と明かす。寺田氏は「私はUNIXとJavaの人。本社にもフィードバック済みだが、Windowsのターミナルでコマンドの使い勝手が良くなれば、Windowsも使いたい」とも語った。さらには「OSSからのスパイである」と牛尾氏は語り、会場の笑いを誘った。そのため、プレゼンテーションの操作もMacで行っていた。「とにかく今日はエンタテインメント性に溢れた面白いデモを見て、ほくそ笑んで帰ってほしい」と牛尾氏は熱く会場に語りかけた。
デモに入る前に、まずDevOpsの簡単な説明が牛尾氏により行われた。DevOpsはビジネス・DEV(開発)・OPS(運用)が協力してソフトウェアのライフスタイルを改善し、ビジネスの価値の創出を改善する活動である。したがって「ツールを入れればDevOpsです、とよくツールベンダーは言うが、それは全てウソ、そんなものではない」と牛尾氏は注意を促す。DevOpsのゴールは3ステップあり、リードタイムを短縮(1way)、本番環境/ユーザからのフィードバック(2way)、継続的な実験と学び(3way)を実現することだ牛尾氏は説明する(参考:『本番環境の「聖域化」を再考する - DevOps の「リードタイムの短縮」の次に来るもの』(メソッド屋のブログ))。いずれにしてもDevOpsでは、技術はもちろん、人々のマインドセット、プラクティス等の考え方が重要だと牛尾氏は強調する。
つまり「開発と運用のライフサイクルを見える化し、無駄がないかをまず考え、その上で、1日に10回デプロイできるほどリードタイムを短縮するためにはどうすべきかということを考える。これらを熟考した上で、初めてツールを選択し利用することになる」と牛尾氏は語った。
現在、マイクロソフトでもDevOpsの考え方を整理しているとのことだ。DevOpsのプラクティスの例としては、Infrastructure as Code(IaC)、継続的インテグレーション、自動テスト、継続的デプロイなどがあるという。寺田氏が「実際にDevOpsを会社の中で実践している方」と会場に問いかけたところ、手を挙げた人はまだ少なかった。
ここからはデモ時間。まずは牛尾氏による「Kanban(かんばん)」のデモ。かんばんというプラクティスのポイントは、「見ようとしなくても目に飛び込んでくるようにすること」と牛尾氏は語る。つまり共有フォルダに情報が置いてあるだけでは意味がないというのである。「このプラクティスを実践するときは常に大きなディスプレイに写して見られるようにする。目に入ってくるという状況を作ることだ」と牛尾氏は重ねて強調した。
かんばん型タスク管理ツールの中で牛尾氏が最近気に入っているのが、「Visual Studio Team Services(VSTS)」だという。それ以外なら「Pivotal Trackerが好み」らしい。牛尾氏によると使い勝手はとても快適だそうだ。ただ惜しむらくはGitHubとの連携がなされていないこと。「そこが改善されると嬉しい」と牛尾氏は言う。
さらに横道にそれてVSTSの面白い機能として、タスクの進捗確認ツール(タイマー)を紹介。「作業に使った時間を自分で把握するのに便利に使える。ただ、マネージャーにバレると評価に使われることもあるので、それは全力で阻止しないといけない」と紹介すると、会場には大きな笑いが起こった。
Dockerを用いたCI~CDまでのDevOpsを実現する仕組み
続いて寺田氏は、Java開発者という立場から、VSTS、Jenkins、DockerおよびDocker Cloudを用いてデモを実施。寺田氏の構成は図の通り「Javaの開発環境にNetBeans。ソースコード管理はGitやGitHub、そしてCI(継続的インテグレーション)ツールにJenkinsという、Javaエンジニアにとってはごく一般的な構成を採用した」と寺田氏は紹介。
続けて「CIだけではなく、CD(継続的デリバリー)まで紹介したい」と語り、Dockerを利用してビルド、テスト、デプロイまでを自動で行うデモを開始した。ローカルの統合開発環境でビルド・テストをした後、VSTSにあるGitリポジトリへソースコードをプッシュする。プッシュされたことをJenkinsが検知し、Jenkins上でビルド・テストを行い共に成功した際に、成果物を含むDockerのイメージを生成。生成したDockerイメージはDocker Hubへプッシュし、Docker Cloudでイメージが更新されたことを検知し、Microsoft AzureのDocker Machine上に公開するという流れである。「最近リリースされたDocker Cloudは便利に使えるので、ぜひ試してほしい」と寺田氏は語る。
Docker CloudはDocker Hub Registryと密に統合しており、単体のDockerコンテナの作成のほか、Dockerコンポーズのような複数コンテナの構成、さらには複数のDocker Machineを組み合わせたような構成も可能で、可用性を向上させることができる。「Docker Hubに存在するイメージの更新をトリガーに、稼働中のコンテナを自動的に再起動して更新するなど非常に便利に使える」と寺田氏は紹介した。
「今紹介したのはCI~CDまでの一つのやり方。DevOpsはいろんなやり方があり、みなさんの会社に応じたやり方を検討してほしい」と語った。ちなみに今回のデモ環境はすべてAzure上に構築したとのこと。
ここで牛尾氏は「ビルドシステムにVSTSを使わなかった理由はいけていなかったから?」という質問をした。寺田氏も「あくまでもJava開発者として慣れていた構成を選んだだけ。VSTSは.NET系だとVSTSがマッチするはず」と答えた。
継続的デリバリーの実現はRelease Managementで
続いて行われたのが、牛尾氏によるリリースマネジメントのデモ。「CIを回していてもそれだけでデプロイするのは怖い。より安全になるような環境を作らないといけない」と牛尾氏は語る。その一つの手法として最近注目を集めているのが、CDを支援する仕組みを便利に作れる、VSTSのRelease Managementである。Release Managementはテストから運用までのあらゆる環境を通して配置を自動化することにより、リリースサイクルの反復可能性、可視性、および効率性を向上するというソリューションだ。「負荷テストを実施し、本番デプロイでリリースをかけ、承認してもらうと、クラウドベースのロードテストも結果も見られるようになる」と牛尾氏は説明する。「承認者にメールを飛ばすことができるのか」という寺田氏の質問には「もちろんできる」と牛尾氏が回答。
またVSTSに搭載されたマイクロソフトらしい面白い機能として、負荷テストの結果をエクセルに出力できる機能を紹介。すると寺田氏も「上長へのレポートに便利」とあいづちをうつ。それを受けた牛尾氏は「この辺はさすがマイクロソフト」と評価した。いずれにしても「このような形で安全なリリースマネジメントの自動化の仕組みを作っていくことこれからは重要になる」と強く語る。さらに「今後VSTSとChefとかDockerが連携するようになる」と牛尾氏は付け加えた。
さらに牛尾氏はデプロイをより安心して行えるよう、サーバの内容を変更する際、既存のサーバに手を加えるのではなく、新規に作り直して切り替えるという「Blue Green Deployment」についても紹介した。その仕組みを構成するAzureのWeb Appsについて、「これは本当に便利に使えるPaaSだ」と言い切る。ただ、Java開発者の場合は「TomcatやJDKなどバージョンを最新するなど、気をつけて使ってほしい」と寺田氏は注意を促すことも忘れなかった。
エンタテインメント性に富んだデモのクライマックスは、寺田氏によるレゴマインドストームと「Azure IoT Hub」を組み合わせたデモ。マインドストームに超音波センサーを搭載し、障害物との距離を測定。障害物に近づくと走行スピードを落とし、ワーニング情報をIoTハブに送信するというデモが行われた。
「DevOpsの多くはコンソールを眺めるだけなので地味。それを地味じゃなくしてみよう」と牛尾氏は語り、本セッションを締めくくるべく「Dockercraft」の紹介デモを実施。DockercraftはMinecraft上でDockerコンテナのステータスが可視化できるというツールだ。その画面を見せ、Minecraft上のDockerコンテナの中に入ると、コンテナ停止レバーやコンテナ削除パネルが配備されており、それを操作してDockerコンテナを管理するのである。「こういったDockerの管理方法もあるということを紹介したかった」最後まで会場の笑いを誘う牛尾氏。最後に「みなさん楽しんでいただけたでしょうか」と呼びかけ、牛尾氏、寺田氏によるセッションは終了した。
お知らせ
お問い合わせ
日本マイクロソフト株式会社
- TEL: 03-4332-5300 (大代表)
- コーポレートサイト