クラウドベースとオンプレミスのエンタープライズアプリケーション開発を簡易にする目的で設計された、オープンソースプロジェクトのKymaが先日、最初のメジャーリリースを公開した。数多くのコンポーネントを提供することにより、既存のアプリケーションや新しいアプリケーションをKubernetesに接続し、Kubernetes Service Catalog経由で公開するための作業が容易になる。監視、ロギング、イベンティング、トレース、認証といった機能のサポートも、アウト・オブ・ボックスで提供する。
KymaはSAPのオープンソースコントリビューションだ。Webサイトには、"クラウドネイティブの世界において、エンタープライズアプリケーションを接続し、拡張するための、フレキシブルかつ簡単な方法"と説明されている。KymaはKubernetes上で動作し、Application Connector、Serverless、Service Catalogなど、既存のエンタープライズアプリケーションをイベント駆動型アーキテクチャに接続するためのコンポーネントを数多く提供する。
Application Connectorを使用すれば、アプリケーションをKymaに接続し、Kubernetes Service Catalog経由でAPIとイベントを公開できるようになる。Kymaは、外部システムと自身の間の接続をセキュアなものにすると同時に、その接続を監視し、トレースする機能を提供する。
Serverlessコンポーネントを使用すれば、JavaScriptとNode.jsを使用してアプリケーションに拡張機能を追加することができる。この機能コードは、外部システムからのAPI呼び出しやイベントによってトリガされる。さらにKymaでは、これらの機能から統合システムに対して、安全にコールバックする機能も提供している。これらレス機能は、イベントのプロバイダとコンシューマという疎結合を提供するコアアプリケーションとは独立して、拡張や変更を行うことができる。ServerlessはKubelessフレームワーク上に構築されており、ラムダ関数をKubernetesの上にデプロイすることが可能だ。
Service Catalogは、登録済みのサービスブローカを通じて、利用可能なすべてのサービスをリストアップする。リストの中には、接続されたアプリケーションと、AzureやAWSやGoogle Cloudなどのクラウドプロバイダサービスの両方が含まれている。Service CatalogはOpen Service Broker標準を実装しているので、内部と外部の両方のサービスを統合して使用することが可能である。
これらのコンポーネントに加えて、CNCFポートフォリオからいくつかのプロジェクトを選択して、Kymaに統合する。この中には、監視およびアラート用のPrometheusとGrafana、ロギング用のLoki、イベント用のKnativeとNATS、サービスメッシュのIstio、トレース用のJaeger、dexによる認証サポートなどが含まれている。これらのツールは、Kymaによって最新の状態に保たれている。更新は、カスタムインストーラまたはHelmチャートを使って、Kymaをアップデートするだけでよい。
Kymaがサービスを提供したいと考える重要なユースケースのひとつは、これまで新しいアプリケーション向きだと思われてきた機能を、モノリシックなエンタープライズアプリケーションでも活用できるようにすることだ。Application Connecterを経由して、エンタープライズアプリケーションをKymaに接続することにより、Kyma Event Busへのイベント送信を開始できる。さらに、認証されたパイプラインをセットアップして、登録したアプリケーションにコールバックすることも可能だ。
本記事の執筆時点では、アプリケーションとKymaの間は、同期通信と非同期通信の選択が可能である。同期通信については、現時点では、REST(OpenAPI仕様を使用)とOData(Entity Data Model仕様を使用)がサポートされている。非同期通信は、AsyncAPI仕様に基づいてイベントを登録することで提供される。モノリシックアプリケーションをKymaに接続する方法については、詳細なデモンストレーションが公開されている。
Kymaはオープンソースであり、カスタムインストーラまたはHelmチャート経由でインストール可能だ。コア開発チームは、Kubernetesの採用するコミュニティアプローチに倣って特別利益団体(speial interest group)内で活動しており、ミーティングは公式に記録されている。コントリビューションに関心のある読者は、TwitterまたはSlack経由でチームに連絡を取ることができる。