新しい IBM Developer JP サイトへようこそ!サイトのデザインが一新され、旧 developerWorks のコンテンツも統合されました。 詳細はこちら

IBM Developer Blog

IBM Developer サイトで最新の出来事をフォローし、情報を入手しましょう。

コンテナーをベースとしたクラウド・ネイティブの開発はそれほど困難ではないはずです。IBM 社員たちが開発した新しいオープンソース・プロジェクトがアプリケーションの設計、作成、デプロイをこれまでよりも簡単にしています。


開発者としての目標は、優れたコードを作成してビジネス問題を解決することです。効率的に作業することは開発者として重要な部分ですが、チームの中で効率的に働くとなると、頭で考える以外のことも必要になってきます。すばやく作業して優れたアプリケーションを作成するためには、正しいツールとテクノロジーが必要です。

何らかのプラットフォームに新しいツールとフレームワークを統合する際に問題となるのは、ビジネス問題を解決するという主要なタスクがおろそかになってしまうことでしょう。Kubernetes は開発者たちの間でよく使われるようになっていますが、Kubernetes 単独では完全な開発プラットフォームとは言えません。

アーキテクト、運用部門、開発者のニーズのすべてを 1 つのコンテナー・ベースの開発プラットフォームで満たすにはどうすればよいでしょうか?自分でそうしたプラットフォームを構築することもできますが、それには時間とリソース、そして現在のチームにはない可能性のある知識が必要になります。

そこで注目したいのが、IBM の新しいオープンソース・ベースのプロジェクト、IBM Cloud Pak for Applications (ICPA) です。ICPA は Kubernetes ベースの Red Hat OpenShift プラットフォームにオープンソース・プロジェクトの Kabanero を統合し、企業が Kubernetes および Knative 対応のアプリケーションをすばやく簡単に開発、デプロイできるようにしています。

このブログ記事では、ICPA の基礎となっているオープンソース・ソフトウェアと、ICPA で対処できる一般的な開発の問題について詳しく見ていきます。

問題の詳細

多くの場合、チームが Kubernetes を採用する目的は、開発とデプロイを簡素化し、コンテナー化のあらゆるメリットを活用することです。けれども、チームがコンテナー環境に伴う複雑さを考慮していないことはよくあります。Kubernetes はサーバー・インフラストラクチャー上でのコンテナー配置の管理、コンテナーへの作業のルーティング、障害発生後のコンテナーの再起動といった点では力を発揮しますが、Kubernetes 単独では、クラウド・ネイティブのアプリケーションの作成に取り組む開発者とアーキテクトを十分にサポートできません。

開発チーム用のプラットフォームを構築するのは大仕事です。一連の適切なオープンソース・プロジェクトの選択と統合から、IDE とビルド・ツール、パイプライン、ソース管理、セキュリティー・スキャンとテストに至るまで、あらゆることを考慮しなければなりません。さらにアップデートとセキュリティー・フィックスを追加するとなると、その開発にかかりきりになることになります。私たちは、チームの開発者全員の生産性を上げるために、こうした問題を解決するとともに複雑さを軽減することを目標としなければなりません。 この目標を達成するためには、どのような手法をとればよいでしょうか?

まず始めに、ある程度の一貫性が役立つという点を認識しましょう。一貫したツール一式を使用すると、チームが効率的に知識を築き上げて共有するのに役立ちます。また、デリバリー・プロセスに一貫性がもたらされて、全員がプロセスを理解できるようになります。さらに一貫したプロセスは人間が誤りを犯すリスクを軽減します。自動化が成功をもたらします。

組織の部門間とチーム内でのコラボレーションを強化することは、生産性を上げるための基本です。アーキテクトと開発者は、それぞれのテクノロジーに関する意思決定事項を取り込み、その情報をチーム外部の関係者と共有する一貫したメカニズムを必要とします。

多くのチームにとって、この方向へと進む際の第一歩となるのはコンテナーの使用であり、コンテナーには必然的に Kubernetes の使用が伴います。ただし、コンテナーがもたらす自由と柔軟性により、多数のコンテナーが作成されるという結果に至ることもよくあります。過剰な数の選択肢は、複雑さ、一貫性のなさ、非効率性につながります。

瞬時にプロトタイプから本番アプリへ

Kabanero はハイブリッド・クラウドにデプロイするコンテナー・ベースのアプリケーションを作成するというタスクを単純化します。Kabanero は OKD (Red Hat OpenShift の上流となるプロジェクト) を使用して、Kubernetes ベースの堅牢で実証された基盤を提供します。 この基盤の枠内で、継続的インテグレーション/継続的デリバリー (CI/CD) パイプラインを作り上げるために必須のインフラストラクチャー、そしてロギング、モニタリング、サービスメッシュ、Knative サーバーレス機能などの不可欠のサービスを追加します。ここまでは順調とは言え、Kabanero を差別化する要因は何でしょうか?

この後すぐに特定の開発ツールを詳しく見ていきますが、まずは、Kabanero が IDE 拡張機能で利用する一貫した一連のコンテナー・ベースの生成物を基に、アプリケーションを定義、管理、構築する際のアプローチを統一する仕組みを調べる必要があります。

Kabanero では「コレクション」という概念を導入しています。コレクションは、言語、ランタイム、フレームワークの選択肢を 1 つにまとめたものです。コレクションにはインフラストラクチャー・バインディングが付随していて、これらのバインディングを使用してコレクションを Kabanero 基盤に接続できます。コレクションにより、開発者とアーキテクトが協力して行う決定を収集する一貫したアプローチが可能になります。一連の事前定義されたコレクションによって、基盤となるインフラストラクチャーとの統合を、当て推量なしに行うことができます。

コレクションを構成するコンポーネントのうち、極めて重要なのは Appsody スタックです。

Appsody とこれに関連付けられているコマンド・ライン・ツール (CLI) は、コンテナー・ベースのアプリケーションを作成する際の基本的なビルディング・ブロックになります。Appsody スタックは共通のコードとサービスと併せて、ランタイムとフレームワークをコンテナー内で結合します。例えば、Java MicroProfile スタックには事前定義されたヘルス・エンドポイントと指標エンドポイントが含まれているため、何もしなくても、このスタックで作成されたすべてのアプリケーションには共通の機能が備わります。

開発者はスタックを導入して、簡単に新しいクラウド・ネイティブのアプリの構築を開始できます。Appsody は事前定義されたスタックを使用して、アプリのコンテナー・イメージを継続的に再ビルドします。したがって、アプリは常に最新のスタックを基に作成され、本番環境で実行されているかのように自動的にコンテナー内でテストできる状態になります。

パイプラインの自動化と IDE の統合によって、アプリを構築する時間が短縮されます

Kabanero インフラストラクチャーには GitHub が統合されているため、コードをコミットすると、自動化された CI/CD パイプラインがトリガーされます。このパイプライン・インフラストラクチャーは Kabanero コレクションの一部として事前定義された統合ポイントを使用し、最新バージョンの Appsody スタックに照らし合わせてアプリケーション・コードをビルドします。

アプリでは共通スタックが使用されていることから、開発者はアプリケーションが開発環境での場合と同じく本番環境でも動作することに確信を持てます。共通スタックにより一貫性が強化されるとともに、コードが本番環境に到達したときに問題が起こるリスクが軽減されます。夜中に待機して呼び出されたくないとしたら、これは重要な点です!

Kabanero は Kubernetes ベースのインフラストラクチャーというだけではありません。このプロジェクトは、よく使われている Eclipse や VSCode などの IDE に統合される開発者向けツールに端を発しています。Eclipse Codewind プロジェクトは、開発者が初めからコンテナー内のクラウド・ネイティブのマイクロサービスと関数ベースのアプリケーションを構築できるよう支援することを目的としています。このプロジェクトが提供する、Appsody スタックを認識する拡張機能により、事前定義されたスタックを使用してアプリケーションの構築を開始し、Codewind の自動化されたコンテナー・ビルドを IDE 内で直接利用できます。Eclipse Codewind のパフォーマンス・ダッシュボードを使用すれば、開発サイクルの初期の段階から新しいアプリやサービスのパフォーマンス特性をすぐに理解できます。

オープンソースから開始して、必要に応じてサポートを追加できます

Kabanero、Appsody、Codewind も、Kabanero の基盤を作り上げる他のインフラストラクチャー・コンポーネントも、すべてオープンソースです。これらのテクノロジーを組み合わせれば、チームはインフラストラクチャーに関する決定に専念するのではなく、ビジネス問題に集中しやすくなります。

やがてチームにサポートが必要になったら、その時点で IBM Cloud Pak for Applications を介してサポートを利用できます。IBM Cloud Pak for Applications はさまざまなオープンソース・プロジェクトを統合し、セキュリティーで保護して認証することで、単一のソリューションでアプリケーションをクラウド・ネイティブ・モデルにリファクタリングできるようにしています。ICPA を使用すると、既存のアプリケーションを最小限の変更でより効率的な Kubernetes ベースの運用モデルに移行できます。その後は、開発者が実際のビジネス・ニーズを解決する優れたコードの作成に再び取り組めます。

詳細を確認するには