クラウドはDev、コンテナはOpsに影響する
牛尾:クラウドの話も出ましたが、コンテナ技術はどうでしょう。DevOpsにどう影響していますか?
前佛雅人氏
前佛:クラウドは、DevOpsを進めるきっかけの1つですね。クラウドのところはインフラの話が中心で、Devの部分に大きく影響する。一方でコンテナはOpsの方、運用者にとって影響が大きいです。
コンテナ技術によって、運用に最適な環境を作るのに時間をかけずにすむようになりました。以前は、いい運用環境を作るためにさまざまなものをインストールするところから始めましたが、それがけっこう手間で、インストールするだけで満足してしまう。本来は入れた運用ツールなどを使いこなしてこそなのですが、ツールを入れて運用手順書を作ったら終わりという。それでは運用の環境は改善しないですよね。それがコンテナを使えばインストールに手間がなくなり、ツールを使いこなすことに時間を使えるようになります。
高添:仮想化技術でもやれなくはないのですが、Dockerコマンド1つでできるのは大きなメリットですね。あとはその利点をいかにOps側が理解するかで差が出てくると思います。
バイナリがデリバリできることがコンテナの利点
吉羽:Devの立場から見ても、Dockerはいいですよ。Dockerに1回入れれば、パイプライン化が簡単にできる。アプリケーションのポータビリティ性が向上するのは、Dockerの大きなメリットだと思っています。
高添:MSでも「Windows Container」を開発中で、Dockerコマンドで使えるものが登場する予定です。
吉羽:Dockerコマンド使えるのはいいですね。インターフェースを揃えるのはベンダーにとって重要です。開発者がインターフェースの違いをいろいろ憶えるのは大変ですから。出入り口のところは同じほうが、使う際にはメリットは大きいです。
牛尾:ソフトウェアをいろいろなところで動かそうとすると、ライブラリの依存関係が問題になります。コンテナは、バイナリをデリバリできるのでその問題を解決しやすくなる。とはいえ、そのバイナリのサイズをいかに小さくするかは問題です。
前佛:そういう意味では「Go言語」はいいですよ。バイナリは手軽に扱えることが多くて。
高添:小さいことはいいことですよね。Windowsでもマイクロサーバ化の方向性があり、今後はGoなども動くようになります。1つの方針としては、インストールするのではなくバイナリをコピーして動くようにします。
前佛:運用のところでも、さまざまなツールを使いたいんです。ツール使うには、そのための知識がいる。例えば、クラスタの管理をしたければ「ZooKeeper」を使えばいいのですが、でもZooKeeperを使うとなるとJavaの知識がいるので、いつの間にかJavaの勉強をしている。本当はクラスタの管理がしたかったのに、なぜかJavaの勉強している。これはなんだかちょっと違う、と思うことがよくあります。
吉羽:それについて、私はちょっと違う意見です。Opsの人もある程度はコードを書けたほうがいいと思いますよ。
牛尾:そうだとすると、DevOps を実践したいエンジニアにおすすめの言語はなにかありますか?
吉羽:オープンソースの世界にいるならばRubyでしょう。Rubyを抑えておけば、だいたいのツールはカバーできる。
高添:MSの世界だと.NETになりますが、OSにどっぷり依存する言語を使うのはやめましょうという風潮がありますね。.NET も事前にインストールしておく必要がなくなってきていますし、運用もシンプルになります。