このチュートリアルでは、Rアプリケーションを実行してFunction Computeを開発する方法を学びます。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
#背景
まず、Alibaba CloudのFunction Computeがありますが、これはイベント駆動型のサービスで、ユーザーはサーバーの健全性を管理したり、その他の要因を考慮することなくコードを書いたりアップロードしたりすることができます。Function Computeは、ユーザーのコードを実行するために必要なコンピューティングリソースの量を準備し、自動的にスケーリングします。ユーザーは、コードを実行するために必要なリソースのみを支払うことになります。
次に、サーバーレスアプリケーションのためのデプロイメントツールであるFunがあります。これは、Function Compute、API Gateway、Log Serviceなどのリソースを管理するのに役立ちます。Funを使用して、template.yml
ファイルに指定したリソースを記述することで、リソースの開発、ビルド、デプロイを行うことができます。
注意: この記事で説明したテクニックは、Fun 2.10.1 以降に適用されます。
#ツール
このチュートリアルでは、Rアプリケーションを実行して関数計算を開発する方法について説明します。このチュートリアルで概説されているプロジェクトはmacOS上で開発されていますが、LinuxやWindowsと互換性のあるプラットフォームに依存しないツールも含まれています。この例に進む前に、Docker、Fun、Fcliが正しくインストールされ、最新バージョンにアップデートされ、適切に設定されていることを確認してください。これらのツールのダウンロード、アップデート、設定は、ここにリンクされているページの指示とリソースで行うことができます。
FunとFcliはローカル環境をシミュレートするためにDockerに依存しています。MacOSユーザーは、これらのツールをインストールするためにhomebrewを使用することができます。
brew cask install docker
brew tap vangie/formula
brew install fun
brew install fcli
Windows と Linux ユーザーは、これらのツールのインストール方法については、Installation を参照してください。インストール後、最初に fun config
を実行して設定を初期化することを忘れないでください。
注意: 既にFunをインストールしている場合は、バージョン2.10.1以上であることを確認してください。
$ fun --version
2.10.1
#R アプリケーションの実行
まずはプロジェクトを初期化します。fun init
コマンドを使って、このテンプレートプロジェクトをローカル環境に簡単に初期化することができます。
fun init vangie/rlang-example
そして、以下のような内容のindex.py
のテストコードを使ってローカルテストを行います。
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
def handler(event, context):
pandas2ri.activate()
return str(robjects.r('paste0("1 + 1 = ", 1 + 1)'))
前述のコードは、rpy2
をインポートし、R言語で単純な加算操作を行うことで動作します。fun local
コマンドを使用して、ローカルで機能をテストすることができます。このステップを実行するには、ローカル環境にDockerが正しくインストールされている必要があります。
$ fun local invoke onePlusOne
skip pulling image aliyunfc/runtime-python3.6:1.4.0...
['1 + 1 = 2']
RequestId: 6e1f2402-9443-4392-9f6a-d87b4f79887a Billed Duration: 7543 ms Memory Size: 1998 MB Max Memory Used: 123 MB
そして、fun deploy
コマンドを使ってアプリケーションをデプロイします。
$ fun deploy
using region: cn-shanghai
using accountId: ***********4733
using accessKeyId: ***********KbBS
using timeout: 60
Waiting for service rlang to be deployed...
Waiting for function onePlusOne to be deployed...
Waiting for packaging function onePlusOne code...
package function onePlusOne code done
function onePlusOne deploy success
service rlang deploy success
そして、以下のコマンドでアプリケーションを実行します。
$ fcli function invoke -s rlang -f onePlusOne
['1 + 1 = 2']
#R言語のコンパイル
コンパイル済みのR言語環境、rpy2
ライブラリ、関連するapt依存ファイルは、.funディレクトリの下に置かれています。通常、自分でコンパイルする必要はありません。私自身の経験では、コンパイルには毎回30分程度かかります。既存のR言語のコンパイルオプションがビジネスの要件を満たすことができない場合は、コンパイルとインストール方法の完全なリストを提供するfun.ymlファイルを見ることができます。それに応じていくつかの調整を行い、fun install
コマンドを使ってインストールを完了させることができます。
#参考文献
1、ソースからRを構築する
2、Rソース
3、rpy2に関するドキュメント
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ