Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
ksukenobe1
Explorer
2,080
このブログは、SAP Advent Calendar 2020 の12月17日分の記事として執筆しています。

 

はじめに


このブログでは、Kyma Environment でサーバレス開発をする方法を共有します。現在 SAP Cloud Platform には、以下 3 つの環境があります。

  • Cloud Foundry Environment

  • ABAP Environment

  • Kyma Environment


Kyma Environment は、フルマネージドな Kubernetes ベースのランタイムを提供します。これにより、私たちはマイクロサービスとサーバレスの両方を使用して拡張開発をすることができます。

サーバレスとは、アプリケーションのインフラをクラウドプロバイダが管理するアーキテクチャのことです。サーバの管理をすることなく、柔軟なスケーラビリティと高可用を実現することができます。また、ステートレスでイベントドリブンなロジックを実装したい場合には、高い費用対効果が期待できます。需要に応じたダイナミックなリソース割当を行うことができるため、アイドル状態時のコストは発生しません。

Kyma は、AWS や Azure、GCP のようなクラウドプロバイダと同様に、Function as a Service (FaaS) を提供します。このブログでは、非常にシンプルな関数を Kyma Environment にデプロイして、API エンドポイントを公開します。

では、早速やってみましょう。

 

開発手順


1. Kyma 環境の有効化


SAP Cloud Platform のトライアル環境にログインして、Kyma 環境を有効化します。利用可能になるまで、1 時間〜2 時間ほどかかります。


Enable Kyma


Entitlements が設定されていないと、Kyma 環境の有効化ができません。ボタンが表示されない場合は、以下の設定を確認します。


Set Entitlements



2. ロールの割当


Kyma のコンソール UI にアクセスするためのロールを作成して、ユーザに割当ます。今回は、Kyma ランタイムトライアルで提供されるすべての機能にアクセスできる管理者ロールを作成します。

最初に、ロールコレクションを作成します。


Create Role Collection


作成したロールコレクションに KymaRuntimeNamespaceAdmin ロールを追加します。続いて、ロールコレクションを割り当てるユーザを指定します。


Edit Role Collection



3. Kyma コンソール UI を開く


Link to Dashboard をクリックして、Kyma コンソールにアクセスします。


Go to Kyma Console UI



Kyma Console UI


Kubernetes のコマンドラインツールである kubectl を利用することもできます。その場合は、右上のユーザアイコン > Get Kubeconfig をクリックして、クラスタにアクセスするための設定ファイルをダウンロードします。

Kubeconfig には有効期限があり、有効期限が切れたら再ダウンロードする必要があります。


Get Kubeconfig



4. Namespace の作成


新しい Namespace を作成します。


Add New Namespace



5. Function の作成


作成した Namespace を選択して、Development > Functions をクリックします。


Click Functions


Create Function をクリックして、Function を作成します。


Create Function


Runtime は、以下がサポートされています。

  • Node.js 12

  • Node.js 10

  • Python 3.8


Source Type は Inline editor と Git Repository から選択することができます。

初期状態のソースコードはこちらです。main 関数がエントリポイントで、event と context パラメータを受けつけます。


Inline Editor


実際の開発では、依存パッケージを必要とすることが多いです。Dependencies タブから、package.json / requirements.txt を書くことができます。


Dependencies


また、Resources タブでは Scaling Options や Runtime Profile、Build Job Profile などが設定できます。あらかじめ用意されたプリセットから選択するか、カスタムで独自のサイズを指定することもできます。


Resources



6. API エンドポイントの設定


クラスタ内の関数にアクセスするためには、{function-name}.{namespace}.svc.cluster.local エンドポイントを使用します。クラスタ外に関数を公開するためには、API Rules を構成する必要があります。

Configuration タブ > API Rules > Expose Function をクリックします。


Expose Function


今回は、次のような設定としました。認証方式は、OAuth2 や JWT を構成することができます。


Create API Rule


API Rule が作成されました。ステータスが OK になっていることを確認します。


API Rule Status



7. API のテスト


では、実際にエンドポイントにアクセスします。ステータスコード 200 で、Hello World! が表示されました。


Test with Postman


 

なぜ Kyma なのか


関数を作成して、API として公開しました。非常に簡単に出来ることが分かりましたが、同時にある疑問が湧いてきました。なぜ SAP Cloud Platform, Kyma Runtime なのか、ということです。直接 Kubernetes を使ってもいいですし、FaaS で言えば SAP Cloud Platform Functions があります。マイクロサービスで言えば Cloud Foundry 環境でも同じことができるはずです。そこで、Kyma の存在意義について少し考えてみます。

Kubernetes は、コンテナの運用管理と自動化を目的に設計されたオープンソースのプラットフォームです。コンテナのライフサイクルを管理するための多くのコンポーネントが提供されていますが、アプリケーション固有の目的に応じて必要なコンポーネントを選択し使いこなすためには、専門的な知見や高いスキルが必要になります。オープンソースコミュニティでは、多様なニーズに対応するために、多くのプロジェクトが開発されてきました。このように、柔軟性があり自由度が高いことはメリットとも言えますが、その一方で、どのプロジェクトを使えばよいのか、選択が困難になる場合があります。また、運用面を考慮すると、継続的な調査や学習も必須になるでしょう。

Kyma は、モノシリックなソフトウェアの拡張や統合を簡単に実現するために必要なプロジェクトの集合体で構成されています。マイクロサービスアーキテクチャ、イベント、認証、ログ / 監視などに対応しています。今回は使用しませんでしたが、サービスカタログでは、オープンサービスブレーカーを使用して、様々なクラウドサービス、アプリケーションと接続することができます。Kyma に含まれるこれらのプロジェクトは、オープンソースコミュニティによって継続的にメンテナンスや修正が行われます。統合するアプリケーションやシステム、依存関係を気にすることなく、統一された方法で実装できることは、エンジニアにとって非常に喜ばしいことです。


Kyma Components



Service Catalog - Services



Service Catalog - Add-Ons


つまり Kyma は、オープンでシンプルな、クラウド拡張 / 統合のための共通プラットフォームです。Kubernetes を強く意識することなく、プラットフォームとして各機能を使うことができます。サーバレスもコンテナも、ひとつのランタイムでメッシュ化されるのも特徴的です。SAP Cloud Platform Functions でも、Cloud Foundry 環境でも、確かに同じことはできると思います。しかし、サーバレスとマイクロサービスをひとつのランタイムで開発でき、統一された手法でオープンかつセキュアに、クラウドネイティブ開発ができる Kyma は、使えば使うほど、よりメリットを感じることができそうです。

さて、Kyma はオープンソースプロジェクトなので、オープンソースバージョンをインストールして独自に環境を用意することもできます。ただし、私たちが本来やりたいことはもっとシンプルなはずです。特別な利用がない限りは、SAP Cloud Platform, Kyma Runtime で問題ありません。既存のサービスを柔軟に組み合わせながら、素早くクラウドネイティブに開発したい。そんな時には、Kyma を検討してみてはいかがでしょうか。

 

参考情報


Kyma
Labels in this area