Deisについて寺田さんに聞いてみた

セクションナイン吉田真吾@yoshidashingo)です。

来週のMasterCloudで寺田さんに話してもらうので、Deisについて話を聞いてみました。

https://deis.comdeis.com

--- 吉田です、今日はよろしくお願いします。はじめに簡単に自己紹介していただいてもよいですか?

吉田さん、今日はどうぞ宜しくお願いします。私は 2015 年に日本マイクロソフト株式会社に入社し、マイクロソフトでも継続して Java on Azure をはじめとし、OSS 製品を Azure 上で扱うための啓蒙活動をしています。

Javaとのかかわりについて

--- まずはJavaの話からちょっと進めたいですが、私は昔から寺田さんをJavaのエキスパートとして認知しています。多くの人もそうだと思いますが、寺田さんのJavaとのかかわりやキャリアはどう始まり、今はどう関わっているのでしょうか?

Javaを研究した大学・大学院時代

大学時代に初めて Java (タンブリング Duke) に出会い、そのとき衝撃を受けた事を、今でも昨日の事のように覚えています。本格的に Java プログラミングをするようになったのは JDK 1.1 が出た大学院時代からでした。大学院では、Java に関するテスト技法に関する研究を行っていましたが、特に、産業技術総合研究所の一杉裕志さんが作成した、EPP という「Java の拡張プリプロセッサ」を使い、テストカバレージ・ツールを作りました。

サンへのあこがれで転職

卒業後は、2年半ほど日本企業で Java 関連の開発に携わりました。しかし、大学時代から憧れ企業であり、Java の本家本元でもあるサン・マイクロシステムズは、当時はとても魅力的な企業で、働いてみたいと思うようになり、転職を決意しました。

サンで、サポートや Java コンサル、プリセールス等を経験したのち、Java EE & GlassFish のエバンジェリスト活動をはじめました。オラクルによる会社の買収により Java SE も含めた啓蒙活動を日本全国で開始するようになりました。

日本2人目の Java チャンピオン

日本マイクロソフトへ転職したのち、日本における 2人目の Java チャンピオンになりました。オラクル時代は、Java SE/Java EE など標準 Java に対する言語使用やライブラリについて啓蒙をしていましたが、現在は Java を利用する側、特にクラウド・プラットフォームで Java アプリケーションを有効活用するための情報をお届けしています。今でも Java は大好きですし、私の青春です!!

Write Once, Run Anywhere ≒ Build, Ship, and Run Any App, Anywhere ??

--- アプリをコンテナでデプロイするというのが急速に一般化し、Mastodonブームに象徴されるようにDockerイメージやComposeファイルで配布するのが普通になってきました。最近思ったのが、これってそもそもJavaの思想にあったWrite Once, Run Anywhere と一緒だなーと思ってたんですが、どう思いますか?

まず、この思想はとても素晴らしいもので、私もそう思います。

JVM (Java Virtual Machine)は、Java のクラス・ファイル・フォーマットに従ったクラス・ファイルを実行するための環境です。任意の環境 (Windows, Linux, Mac など) でコンパイルされた Java クラス・ファイルを、任意 JVM 上で実行する事ができます。これが、いわゆる Write Once, Run Anywhere (一度書いたコードがどこでも動く)の所以です。

しかし、実際には各 OS 用の JVM に差異があるため、当初の思想とは異なり Write Once, Run Anywhere が実現できない部分もあるのが事実です。また、サーバ・サイドも同様に、実行環境 (アプリケーション・サーバ製品) の差がプログラムに影響を及ぼすことがありました。

製品の差だけではありません。本番環境でアプリケーション・サーバのクラスタ環境を構築するにしても、とても注意が必要でした。手動で OS や JDK、アプリケーション・サーバなどをインストールし、環境設定するのはミスがつきものです。私も、昔みずからデータ・センターに行き、インストールや環境設定を行いましたが、私が設計した環境ですら、みずからコマンドを打ち間違えをしたという経験もあります。つまり、サーバ・サイドで全く同じ環境を構築するのはかつてはとても困難でした。

Docker だけではありませんが、Infrastructure as Code を実現することで、環境構築・設定をテキスト (コード) で管理し、操作ミスなく環境構築できるようになったのは、とても素晴らしい進化だと思います。

さらに、ハイパーバイザー型の仮想化に対し、Docker を中心とするコンテナ技術は、より素早く、軽量に環境を構築したりスケールすることができるようになり、今後ますます注視しなければならないと思っています。

しかし一方で、Docker 単体で本番環境にたえるシステムを構築することは非常に難しいため、Docker を支えるオーケストレーション・ツールが必要になってきます。現在、Docker Swarm, DC/OS, Kubernetes などがその候補としてあげられますが、現在は、Kubernetes の利用が増えているように思います。

DEISの話

Kubernetesの機能は良いが扱いづらい

--- DEISというDockerベースのPaaS基盤ソフトウェアについて話していただけるとのことですが、ひさびさにサイトを見たら、Deis, Inc. | The Kubernetes CompanyとHPに記載されていました。Workflow(PaaS)やSteward(Service Broker)というプロジェクトからでしょうか。Kubernetes上で基盤を運用していく利点はどういう部分にあるんでしょうか。

Kubernetes は Docker を支える基盤として、オーケストレーションやスケジューリングに関してはよく実装されており、必要十分な機能を提供しているように思えます。

しかし、私は開発者側の人間です。開発者側の視点で考えると k8s は少し低レベルの操作が必要で (YAML)、扱いづらさを感じるのも事実です。従来のように、アプリケーションを開発し、開発した実行ファイルをインフラ担当に渡し、インフラ側で本番環境を作るというような場合であれば、k8s 単体でインフラ担当者が管理するのもよいかもしれません。

Deisでアプリケーションのライフサイクルを管理する

しかし今の世の中は、早急なアプリケーションのリリースが求められています。開発者もよりすばやく、簡単にアプリケーションを検証したり環境構築をする必要があります。その際、実行ファイルを手渡しではなく、継続的デリバリーとして、デプロイの自動化を試みる必要もでてまいります。さらに、変化に強いシステムを構築する必要があります。

DEIS は開発者側の視点で、ソースコードや、Dockerfile、もしくは Docker イメージから直接実行環境を構築できるほか、ログ管理の容易化、アプリケーションのバージョニングやロールバックなども容易にできるようになります。さらに「12 Factor App」の基盤としても利用することができます。
(Heroku をご存知の方にわかりやすくいうと、Heroku のような事が k8s 上でできるようになったと思っていただければ、分かりやすいかと思います。)

ご興味ある方は、ぜひ私が作成した「DEIS on Kubernetes (k8s) on Azure Container Service Hands on Lab」をどうぞお試しください。

インフラ担当者は、今まで同様 kubernetes のコマンドを利用することもできますし、Helm というツールを利用する事で、より簡単に OSS 関連製品のインストールや運用管理ができるようになります。そして開発者はより簡単に k8s を扱えるようになるため、ソースコードのビルドから実行までが、一連の流れ(ワークフロー)として簡単に扱えるようになります。

そんなにたくさんPaaS持ってどうするのMSさん?

--- オープン系PaaSが世間にはたくさんありますし、MSさんは最近Cloud Foundry Foundationにも参加したり、OpenShift もあります。そんな中でDEISの特徴というのはどういうものでしょうか?

たしかに、今オープン系の PaaS は色々な選択肢があり、それぞれとても良い製品ですし、それぞれ一長一短があります。前提として、マイクロソフトは、クラウド基盤の提供者として、お客様がお望みの環境に対して継続的に投資をおこない提供します。

以降は、私のまったくの私見になりますが、製品比較の際、オープン・ソース版と、サポートのある製品版で、考え方を変える必要があると思っています。製品版の Pivotal Cloud Foundry もしくは Red Hat の OpenShift Container Platform に関しては、それぞれ各社より技術サポートを受ける事ができます。また、必要に応じ各社、もしくは各社のパートナー企業などから、構築技術支援、開発技術支援を受けることもできるでしょう。

一方で、DEIS は現時点で Managed なサービスではないため、Azure の場合、Azure Container Service 上で自身で環境を構築する必要があります。これは、Cloud Foundry, OpenShift のオープン・ソース版を利用するのと同様で、トラブル対応を含む運用・管理に対して、ご自身で対応が必要になります。

今後の事はまだ未定ですが、今年 4 月に Microsoft が DEIS を買収したこともあり、Microsoft Azure Container Service との親和性がより高まることも期待されます。また、Microsoft の中で k8s に精通した開発者、技術者が増えたことは、今後のマイクロソフトにとって、よい材料かと思っています。

コミュニティとのかかわりについて

--- DEISにしても寺田さんの今までの経歴においてもそうですが、非常にコミュニティに力を注いできた印象を受けます。端的に、コミュニティって良いですか?

はい、もちろん、そのように思います。

業界の最新トレンドや技術的なノウハウ、そしてエンジニアとしての成長やキャリアまで含めて、コミュニティに参加して得られるメリットは数多くあると思います。

日本には、とても優秀な方が数多くいらっしゃいます。そして、その優秀な方々が、ご自身のやってきた事や、技術的なノウハウ、成功体験などをコミュニティで共有してくださっています。 その中で、自分に足りないもの、自分がしなければならない事がわかってくるのではないかと思います。

幅広い世界を見て欲しい

また、会社の枠を超えて、素晴らしいエンジニアの方々と交流を持つことで、より幅広い世界が見えてくるようになるのではないかと思います。

そして日本の技術者の皆さまには、日本でだけでなく、もっと世界のコミュニティにも参加して、世界を視野にご活動・ご活躍いただきたいなと思っています。

--- ありがとうございました。当日のお話も楽しみにしています。

まとめ

複数のPaaS基盤をポートフォリオに持つMSの中でのDEISのセルフホスティングな位置づけなどや魅力、またk8s上での展開による優位性などがよくわかりました。さらに詳しい内容に興味がある方は来週のMasterCloudにぜひ参加してみてください。

mastercloud.connpass.com