LoginSignup
0
0

More than 3 years have passed since last update.

Rアプリケーションを実行してFunction Computeを開発する方法

Posted at

このチュートリアルでは、Rアプリケーションを実行してFunction Computeを開発する方法を学びます。

本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。

背景

まず、Alibaba CloudのFunction Computeがありますが、これはイベント駆動型のサービスで、ユーザーはサーバーの健全性を管理したり、その他の要因を考慮することなくコードを書いたりアップロードしたりすることができます。Function Computeは、ユーザーのコードを実行するために必要なコンピューティングリソースの量を準備し、自動的にスケーリングします。ユーザーは、コードを実行するために必要なリソースのみを支払うことになります。

次に、サーバーレスアプリケーションのためのデプロイメントツールであるFunがあります。これは、Function Compute、API GatewayLog Serviceなどのリソースを管理するのに役立ちます。Funを使用して、template.ymlファイルに指定したリソースを記述することで、リソースの開発、ビルド、デプロイを行うことができます。

注意: この記事で説明したテクニックは、Fun 2.10.1 以降に適用されます。

ツール

このチュートリアルでは、Rアプリケーションを実行して関数計算を開発する方法について説明します。このチュートリアルで概説されているプロジェクトはmacOS上で開発されていますが、LinuxやWindowsと互換性のあるプラットフォームに依存しないツールも含まれています。この例に進む前に、DockerFunFcliが正しくインストールされ、最新バージョンにアップデートされ、適切に設定されていることを確認してください。これらのツールのダウンロード、アップデート、設定は、ここにリンクされているページの指示とリソースで行うことができます。

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ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0