青山真也氏と草間一人氏に、クラウドネイティブに関してじっくり語ってもらった対談の内容を、4回に分けて掲載している本連載。今回は第3回として、「結局、クラウドネイティブで何をすればいいのか」をテーマとした部分をお届けする。
本連載では、2019年7月の「Cloud Native Days Tokyo 2019」でCo-chairを務めた草間一人氏と青山真也氏に、クラウドネイティブに関してじっくり語ってもらった対談の内容を、4回に分けて掲載している。第1回は「クラウドネイティブは、どう誤解されているか」、第2回は「CNCFのCloud Native Trail Mapを、クラウドネイティブ活動の指針としてどう考えるか」についてお届けした。今回は第3回として、「結局、クラウドネイティブで何を目指せばいいのか」をテーマとした部分をお届けする。
――結局、「クラウドネイティブ」で、具体的に何を目指し、何をやればいいのでしょうか。
草間 私は、組織と個人で、それぞれやるべきことがあると思っています。
まず、組織に関してですが」、先ほどもお話ししたように、クラウドネイティブとは、自分たちでソフトウェアを作っていって初めて必要性が出てくるものなので、今まで外注一辺倒だったところは、内製化から始めていくべきだと思います。
内製化を進め、ソフトウェアの規模が大きくなってくると、そのうちマイクロサービスアーキテクチャを検討することになるでしょう。この段階においては、特に組織形態について考えを巡らせる必要があります。
マイクロサービスの考え方は、「ソフトウェアアーキクチャとしてスケールするようにする」ことと、「組織をスケールさせる」ことが、半々を占めています。単にソフトウェアを細分化するという話ではないんですね。
「コンウェイの法則」では、ソフトウェアのアーキテクチャは組織の構造を反映するとされています。従来ながらの大企業にあるような、サイロ化された組織が作るソフトウェアはスケールしないアーキテクチャになってしまいがちなんです。
マイクロサービス的なことをやるのであれば、それを逆手に取った「逆コンウェイの法則」に取り組むべきです。あるべきソフトウェアアーキテクチャのため、それに即した組織を作っていくという考え方です。つまり、より大きな組織としての柔軟性、意思決定の速さが求められます。
そのためには、ソフトウェアのアーキテクチャを分かっている人たちが、組織の上のほうに登り、意思決定において強い権限を担っていかなければなりません。大きな話にはなりますが、それくらいやらないと、クラウドネイティブになっていかないんですよ。一番のネックはそこではないでしょうか。
――一般企業のデジタルトランスフォーメーションの文脈でそれを考えると、実現は非常に困難なのではないでしょうか?
草間 確かに困難ですが、分からない人たちが分かるようにするほうが難しいと思います。分からない人たち、分かろうとしない人たちが意思決定に参加している時点でうまくいきません。分かっている人たちが力を持たないと、組織は変わりません。
草間 これまでは組織の話でしたが、次に個人の話をします。
個人の話に関しては、かなりシンプルだと思っています。先ほど青山さんも言っていましたが、いろいろなプロダクトや考え方が出てきているので、一個人、一エンジニアとして「まずは試そうよ」と提案したいです。以前は、新しいソフトウェアや仕組みを試すのは大変でした。しかし、クラウドネイティブ、特にKubernetes周りのプロダクトは、元々自動化するためのものなので、とても簡単にインストールができたりします。試すコストが飛躍的に下がっているということです。
試すという行為のハードルが下がったおかげで、とりあえず面白そうなものは全て試すというやり方が成立するようになってきていると思います。
青山 草間さんが言うように、新しいソフトウェアを試すのはとても簡単になりました。オープンソースソフトウェア(OSS)は誰でも即座にダウンロードして動かせます。ドキュメントを見ながら、半日から1日で概要を習得できるものも多いです。これで、良さそうかどうか、感触をつかむことができます。次に、プロダクション(本番環境)で本当に使えるものなのかを確認することになります。クラウドネイティブは全て最終的には自動化につながるものだと思っています。自動化が本当に動くかさえ検証できれば、プロダクションで使っていくことができます。
「個人として何をやっていくべきか」という点ですが、「自動化する」「何かを簡単にやれるようにする」ということを、いつも意識してやっていくのが大事だと思います。
今までは何かを作った後、運用でカバーするということが多かったと思いますが、そうでなく、最初にできるだけ自動化の仕組みを作り込むべきだと思います。ビジネスロジックを形にするアプリケーションについては、速く開発して速く修正していくという考え方が大事ですが、もう少し下のレイヤーで、運用が発生するようなところは、しっかりと自動化していく必要があります。
草間 アプリケーション/サービス関連のコストには、時間、人、計算機、費用などのコストなどがありますが。クラウドネイティブの世界では、時間的なコスト、人的なコストをとことん考えるマインドセットを持っておいた方がいいと思います。
計算機の世界は、先ほども言いましたように、ミリ秒の世界になっています。これに比べ、人が意思決定を下す何分、何時間、何日という時間はとても長いものです。ですから、いかにして自動化して速くしていくかを、とにかく考えるべきです。
一方、IT環境に関するコストはそれほど重要ではありません。時間を縮めていけば自然に減っていくものです。ところが大きな企業では、まだこうしたコストを気にしすぎる傾向があります。何かを試しにやろうとするだけで、やれ「見積もりを出せ」とか「予算をとれ」とか、言われてしまう。見積もりを作っている時間のほうがよほど大きなコストであることに気づいていません。ですから、個人としては、部署や組織レベルでの調整を考えるよりも、個人としていろいろ試していくことが重要だと思っています。
――先ほど青山さんからパブリッククラウドを使っていれば、70%くらいクラウドネイティブになっていることもあり得るというお話がありました。パブリッククラウドを使うということと、クラウドネイティブとの関係はどういうものだと思いますか?
具体的には2つの質問をさせてください。第1の質問は、サイバーエージェントのようにリソースと実力のあるところはプライベートクラウドでクラウドネイティブに向けた仕組みを作り、運用できると思いますが、多くの企業、特に一般企業の場合、自前で運用するよりもパブリッククラウドのホステッドサービスを使いこなすことを考えた方が、結果として近道になるのではないか、ということです。第2の質問は、特定パブリッククラウドの独自サービスを使うことは、人によってはロックインだと言うわけですが、これをクラウドネイティブとの関係でどう考えるかということです。
青山 まず、現在のインフラ層には、IaaS(Infrastructure as a Service)を提供する低レイヤーのインフラ層と、そのIaaSを使って仮想マシン(VM)やKubernetes上にサービスを展開する高レイヤーのインフラ層の2種類があると思います。
Copyright © ITmedia, Inc. All Rights Reserved.