新しい IBM Cloud Code Engine とそのメリットをご紹介します
2020年9月、IBM Cloud Code Engineを発表しました(参考:IBM Cloud Code Engine のベータ版がリリース)。IBM Cloud Code Engine は、すべてのクラウド・ネイティブ・ワークロードをホスティングするための最新のプラットフォームです。IBM Cloud Code Engine は、開発者中心のユーザー・エクスペリエンスで、Web アプリケーション、サーバーレス機能、バッチ・ジョブのホスティングなどすべてをサポートするように設計されています。これが何を意味するのかを探ってみましょう。
クラウド・コンピューティングの目的
まず、クラウド・コンピューティング革命の最大のポイントの1つは、ユーザー・エクスペリエンスの簡素化であったことを思い出してみましょう。クラウドコンピューティングは、セルフ・サービス・モデルや、基盤となるインフラストラクチャーの複雑さを抽象化するというアイデアにより、私たちの生活を楽にし、最終的には生産性を向上させることをめざしていました。その目的は果たして実現したのでしょうか?
この質問に答えるには、ワークロードをホスティングする方法を選択する際に、人々が考える必要のあるすべての意思決定を検討する価値があるかもしれません:
- Cloud Foundry のようなプラットフォームの使いやすさを求めるか?
- Kubernetesの柔軟性とパワーを求めるか?
- サーバーレス・コンピューティングのようなダイナミックな機能に興味があるか?
- ワークロードが従来の HTTP Web用のモデルに適合しない場合はどうすればいいか?
それぞれの決定には、それぞれの利点とコスト伴っています。機能が豊富なものもあれば、複雑さを伴うものもありますが、ユーザー・エクスペリエンスがシンプルなものは機能が制限されていることが多いです。また、プラットフォームの所有者が行った実装の仕様に基づいてさらに制約があるものもあります。さらに、業界ではモノリス・アプリケーションをマイクロサービスに分割することを推奨しているため、これらのコンポーネントのすべてが同じプラットフォーム上でホスティングされていない可能性もあります。したがって、異なるタイプのホスティング・プラットフォームに分散されいる場合、どれだけ簡単に統合できるでしょうか?
そして、これらの懸念のほかに、管理の課題もあります。選択されたプラットフォームの種類ごとに、おそらく非常に異なるCI/CDワークフローを定義する必要があるでしょう。これらの選択の中で、インフラストラクチャーを管理するために多大な時間とリソースを必要とするものはどれでしょうか?これらの選択に基づいて、利用中のアプリケーションのうちどのようなアーキテクチャーやデザインの選択を変更する必要があるのでしょうか?
結局、「クラウドコンピューティングの目的」はまだ本当に達成されたとは言えないのではないでしょうか。多くの点で、人々はこれらの選択をしなければならないことに慣れてしまい、それに伴うコストを背負って生きてきました。しかしIBM Cloud Code Engineがあれば、すべて変わるでしょう。
IBM Cloud Code Engine: 本来の目的へ
もし、このような選択をする必要がなかったとしたらどうでしょう。その代わり、ホスティング環境にワークロードを与え、本当に必要な場合に限り、ワークロードが必要とするランタイム特性を指定することができるとしたらどうでしょう。ホスティング環境をどうやって利用するかに時間を費やすのではなく、必要なセマンティクスを要求し、プラットフォームがそれを実行する方法を考え出してくれるとしたらどうでしょう。一言で言えば、それこそがIBM Cloud Code Engine の目指すところであり、開発者をインフラストラクチャーのスペシャリストではなく、開発者本来の業務に戻すことにあります。
IBM Code Engineは、すべてのクラウド・ネイティブ・ワークロードをホスティングするためのIBMのプラットフォームです。PaaS、CaaS、サーバーレス、バッチ・ワークロードに必要なすべての機能を1つのプラットフォームに統合しています。また、すべての機能を管理されたパブリック・ホスティング環境で提供します。つまり、すべてのインフラストラクチャーとその管理を心配する必要はありません。さらに、IBM Code Engineは “従量課金“モデルを採用しているため、実際に使用したインフラストラクチャー・ リソースに対してのみ支払いいただくことができます。
では、Code Engineが提供するものについて説明しながら、この意味を探っていきましょう:
- オープン・ソースで構築: IBM Cloud Code Engineは、最も人気のあるクラウド・ネイティブのオープンソース技術、たとえはKubernetes, Knative, Istio, Tektonなどを利用しています。IBM Cloud Code Engine は独自の簡素化されたユーザー・エクスペリエンスを導入していますが、どうしても UX を回避する必要がある場合は、それが可能なのです。Kubernetesのデータ・モデルの複雑さに対応したい場合は、既存の展開スクリプトはCode Engine上でも動作するはずです。
- シンプルな展開モデル: Kubernetesはそのシンプルさゆえにあらゆるコンテナの中でも優位性をもっています。しかし、Kubernetesが提供するすべての機能を備えているからといって、システムのユーザーがすべてのユース・ケースでその複雑さを管理しなければならないわけではありません。そこで、前項で述べたように、IBM Cloud Code Engineはシンプルなケースを最小限の労力で解決できるようにすることを目的とした、シンプルなユーザー・エクスペリエンスを開発しました。より高度な機能を使用することを選択して初めて、より洗練されたオプションに触れることができます。ほとんどの機能はそのまま利用できますが、IBM Cloud Code Engineとの違いは、プラットフォームが提供しているからというだけではなく、自分の専門的なニーズに基づいて、特定の機能を表示するタイミングを選択できるようになっている点にあります。
- 自動スケーリング機能と同時実行管理機能: IBM Cloud Code Engine では、対象となる負荷に基づいてアプリケーションを自動スケーリングする機能があります。つまり、アプリケーションに送信されるトラフィックが増えると、IBM Cloud Code Engine は自動的にスケールアップし、フローが減少すると再びスケールダウンします。ゼロになることもあります。ただし、これは利用者が調節可能です。シンプルな設定ノブを使って、IBM Cloud Code Engine にアプリのスケーリングの強さや弱さ、さらにはどのくらいの速さでスケーリングするかを指示することができます。一度に 1 つのリクエストしか処理できないのか、それとも何百ものリクエストを処理できるのか、も指定できます。ワークロードに応じて複雑なコンポーネントをインストールする必要はなく、フラグを設定するだけで IBM Cloud Code Engine が処理してくれます。
- ソースからイメージまで: コンテナ・イメージを作成することがワークフローの一部になっている人もいますが、そうでない人にとっては面倒な作業に過ぎないかもしれません。IBM Cloud Code Engine では、アプリの展開方法を選択することができます。既存のコンテナ・イメージを IBM Cloud Code Engine に指定することもできますが、ソース・コードを直接(Git repo 経由で)提供することもでき、コンテナ・ イメージの構築と管理は IBM Cloud Code Engine が代行します。IBM Cloud Foundryに慣れている人は、ご安心ください。
- バッチ・ワークロード: 多くのワークロードは HTTP ベースまたはイベント・ベースのもので、入ってくる HTTP リクエスト・メッセージに反応しますが、そうでないものもあります。例えば、バッチ・ジョブは通常の HTTP リクエストを経由してトリガーされないことが多く、その代わりに手動プロセスや時間ベースのトリガーによって開始されます。処理が終了すると、別のトリガーを待つのではなく、単にシャットダウンします。このようなタスクは、しばしば Run-to-completion タスクと呼ばれています。IBM Cloud Code Engineはこれらのタスクもサポートしています。
- IBM Cloud Servicesとの統合: IBM Cloud Code Engineはホスティング型の提供なので、IBM Watson やIBM Db2など、IBMが提供するすべてのサービスにクラウドからアクセスできます。これらのサービスとの統合は、IBM Cloud Code Engineの他の機能と同様にシームレスで簡単です。
- セキュリティー機能の組込み: どのようなワークロードにおいてもセキュリティーは重要です。そのため、余分な設定を必要とせずに、自動的にSSL保護が組み込まれています。IBM Cloud Code Engineは、SSL証明書の作成と配備を自動的に管理します。
全ての機能を統合
IBM Cloud Code Engine は上記のような素晴らしい機能をシンプルなUXでまとめています。Kubernetes の使用に慣れている人は、ぜひ上記の機能をすべて有効にするにはどれだけの時間と学習が必要か想像してみてください。しかし、IBM Cloud Code Engineを使用すると、数分でインターネット上で利用可能な自動スケーリングされた完全に安全なワークロードを持つことができます。
さらに詳しいことは
IBM Cloud Code Enginのご利用を実際にご検討いただくのに役立つ情報へのリンクをいくつか紹介します: