ITコラム
クラウドネイティブとは何のことなのか?なぜそれがIT組織の変革につながると期待されるのか
2018年12月17日
カテゴリー ITコラム
記事をシェアする:
著者:新野 淳一氏
ITジャーナリスト/Publickeyブロガー。
一般社団法人クラウド利用促進機構(CUPA)総合アドバイザー。
日本デジタルライターズ協会 代表理事。
クラウドはアプリケーションの実行環境として確実にその重要性を高めてきています。そうしたなかで注目されるのが、「クラウドネイティブ」なアプリケーションです。
この「クラウドネイティブ」とは、具体的にどういうことを指すのでしょうか?
Kubernetesの開発をホストするなど、クラウドネイティブなアプリケーションのためのオープンソースソフトウェアの開発を進めている団体「Cloud Native Computing Foundation」(CNCF)は、クラウドネイティブの定義として「CNCF Cloud Native Definition v1.0」という文書を公開しています。前段部分を引用しましょう。
Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
クラウドネイティブなテクノロジーは、パブリッククラウドやプライベートクラウド、ハイブリッドクラウドといったモダンかつダイナミックな環境においてスケーラブルなアプリケーションの開発と実行を行う組織の力を強化するものです。
コンテナやサービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、宣言的なAPIなどがこうしたアプローチの例として挙げられます。
クラウドネイティブが具体的になにを指すかについてはいくつもの意見があると思いますが、クラウドネイティブに相当するのはコンテナを活用したマイクロサービスであると考えることは、おおむね広くコンセンサスを得ているように思います。
例えば、日本IBMでクラウドアーキテクトを務める樽澤広亨氏もクラウドネイティブなコンピューティングを実現する3つの技術要素としてコンテナやマイクロサービス指向を挙げています。
マイクロサービスの利点
クラウドネイティブのポイントであるマイクロサービスとは、アプリケーションが「サービス」(もしくは「マイクロサービス」)と呼ばれる独立したモジュールに分割されていて、サービスとサービスはそれぞれ独立したプロセスとしてネットワーク経由でAPIを通じて呼び出し合う疎結合の関係になっています。そしてそれらが互いに連携しながら動作することでアプリケーションとなる、という特徴を備えています。
マイクロサービスの利点は、サービスごとに独立して開発、テスト、運用が進められるため、アプリケーション全体を作り直すことなく部分ごとに迅速にアップデートを行えることが挙げられます。
要件の変化しやすいアプリケーションや、利用者からのフィードバックを迅速に取り込みたいアプリケーションなどでは、マイクロサービスは重要な選択肢といえるのです。
それ以外にもマイクロサービスの利点として、分散アプリケーションの構成になっているため負荷に対してスケーラブルな運用が容易なこと、障害が発生しても局所的に押さえ込みやすいことなどが挙げられます。
このマイクロサービスを支えるテクノロジーとしてコンテナがあり、Kubernetesに代表されるコンテナオーケストレーションがあり、Istioに代表されるサービスメッシュがあるわけです。
それらがマイクロサービスをどう支えるかというと、コンテナはサービスを実行する容れ物となります。そのサービスが多数集まってアプリケーションになるわけですが、Kubernetesはサービスに対してコンテナを割り当てたり、負荷に対してコンテナを増やしたり減らしたり、異常終了したコンテナを再起動するなどの処理を行うことでコンテナ群をクラスタとして管理してくれます。
そしてIstioは、サービス間の通信の管理や暗号化、ログの管理、サービスのアップデートを無停止で行うためのローリングアップデートなど、おもにアプリケーションのレベルでの運用を支援してくれるのです。
クラウドネイティブやマイクロサービスの文脈において、コンテナやKubernetesやIstioといったテクノロジーが注目される理由がここにあります。
マイクロサービスとコンウェイの法則の関係
マイクロサービスを支えるもうひとつ重要な要素があります。それを開発する組織です。
IT業界で広く知られる法則の1つに「コンウェイの法則」があります。コンウェイの法則とは、次のようなものです。
Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.
システム設計を行う組織は、その組織が持つコミュニケーション構造を模倣する設計をする。
要するに、ある組織が設計するソフトウェアの構造は、その組織構造そっくりになるというのです。例えば、3つの開発チームが協力して開発するソフトウェアなら全体が3つに分かれている、といった具合です。
もちろんこれは経験から導かれた経験則なのですが、マイクロサービスを開発する組織においてもこのコンウェイの法則は重要であるとの指摘は多くあります。
すなわち、組織構造がソフトウェアの構造に反映されるのであれば、ソフトウェアがサービスに分かれているときには逆にそれを開発する組織が、サービスに合わせて分割されているべきではないか、というわけです。
例えばマイクロサービスの提唱者として知られるマーチン・ファウラー氏は、マイクロサービスにおける組織へのアプローチは、開発チームがサービスごとに分割され、それぞれのチームが責任を持つクロスファンクショナルなものであると指摘しています。
また、マイクロサービスを採用し成功したことで知られるNetflixも、サービスに対する責任を持つ小規模なチームを多数組織しているといわれています。
つい先日、筆者は2018年12月4日と5日の2日間にわたって都内で行われたイベント「Japan Container Days V18.12」でパネルディスカッション「2020年のコンテナはどうなる?コンテナプラットフォームのこれまでとこれから」のモデレータを務めました。
このセッションの議論の中でも、実際にマイクロサービスに関わっている登壇者の方々から「マイクロサービスをちゃんと開発し運用するには、サービスごとに独立した権限を持ち自律的に動ける組織が必要だ」という指摘がありました。
こうして独立した権限と責任を持つチームが、そのチームにとって最良と思われる方法でサービスを開発し運営していくことで(そしてそのチームにおける開発手法にはおおむねアジャイル開発やDevOpsなどが採用されることで)、マイクロサービスには素早いサイクルでアプリケーションの改良を進めていける側面があるのです。
クラウドネイティブは組織を強化する、という意味は
とはいえ、すでにしっかりした組織構造ができあがっている既存の情報部門やシステムインテグレータなどにとって、ソフトウェアの構造にあわせて組織改編をし、それぞれのチームにさまざまな権限委譲を行うということを、すぐに実践することは難しいこともまた事実です。
それゆえに、マイクロサービスの採用と実現は、既存のIT組織よりも組織作りと製品作りを同時に行っているようなスタートアップ企業や一部の先進的なIT企業の取り組みの方が進んでいます。
しかしマーク・アンドリーセン氏が「Software is eating the world」と予言したように、あらゆるビジネスにおいてデジタル化やソフトウェア化が進む中で、スタートアップやネット企業だけでなく、金融や流通や製造やメディアやサービスなど既存の多くの企業にとっても優れたソフトウェアを開発し、活用していくことの重要さが増していきます。
いつかは、多くの企業もしくは情報部門やシステムインテグレータといったIT組織もマイクロサービスへの取り組みを検討する日がやってくるでしょう。いま、多くの企業がクラウドの導入を検討しているように。
そしてマイクロサービスへの取り組みをきっかけになんとか組織変革の高いハードルを越えて、従来のIT組織が改変されて責任と権限を持ち自律的に開発を進められるクロスファンクショナルなチームの集合体になっていくかもしれません。
責任と権限を持つクロスファンクショナルなチームは、アジャイル開発やDevOpsなどを実現する上でもよく言及される組織構造です。自律的に動けるチームが作られてうまく機能するようになることで、ビジネスに価値を提供できる、より優れたソフトウェアを迅速かつ柔軟に開発できるようになっていくと考えられているのです。
そうなれば、クラウド環境においてビジネスとアプリケーションの開発や運用などがこれまでよりもずっと密接に連携できるようになり、より早くたくさんの価値をお客様に届けられるようになることが期待できます。
この記事の最初の方で、CNCFによるクラウドネイティブの定義を紹介しました。あらためてそれを見直すと、クラウドネイティブなテクノロジーは組織を強化する(Cloud native technologies empower organizations)とあります。
それは技術的な先進性や機能による強化だけでなく、組織構造の変革を促すことでIT組織をさらに強化するという意味も込められているのかもしれません。
女性技術者がしなやかに活躍できる社会を目指して 〜IBMフェロー浅川智恵子さんインタビュー
ジェンダー・インクルージョン施策と日本の現状 2022年(令和4年)4⽉から改正⼥性活躍推進法が全⾯施⾏され、一般事業主⾏動計画の策定や情報公表の義務が、常時雇用する労働者数が301人以上の事業主から101人以上の事業主 […]
Qiskit Runtimeで動的回路を最大限に活用する
私たちは、有用な量子コンピューティングのための重要なマイルストーンを達成しました: IBM Quantum System One上で動的回路を実行できるようになったのです。 動的回路は、近い将来、量子優位性を実現するため […]
Qiskit Runtimeの新機能を解説 — お客様は実際にどのように使用しているか
量子コンピューターが価値を提供するとはどういうことでしょうか? 私たちは、価値を3つの要素から成る方程式であると考えます。つまりシステムは、「パフォーマンス」、「機能」を備えていること、「摩擦が無く」ビジネス・ワークフロ […]