ウィスキー好きが高じてとうとうスコットランドまで行ってしまった、プリンシパルエンジニアの松井です。
これまで SORACOM とクラウドを連携させるサービスとして、Beam や Funnel などを開発してきました。お客様にお話を聞いたり、サポートのお問い合わせなどを見ていると、Beam から API Gateway や Funnel から Kinesis、AWS IoT などを経由して、AWS Lambda を活用されているユースケースが少なくないと感じました。
しかし Beam を経由するには API Gateway を設定する必要がありますし、Funnel を経由した場合には Lambda のレスポンスを直接受け取れない、というジレンマがありました。
そこで開発したのが、本日リリースとなりました SORACOM Funk (以下 Funk) となります。
Funk とは何か
アイコンで表わされているように 雲 (クラウド)上に配置された プログラムコード (Function)をデバイスから簡単に呼び出せるようにする仕組みです。Beam や Funnel と同じく、認証や暗号化の処理は SORACOM のプラットフォーム上のクラウドにオフロードされるため、デバイスからは HTTP POST または TCPソケット・UDPパケットでの簡単な通信で、呼び出しを行うことができます。また、重要な事として、その処理の結果をデバイスが受け取る 事が可能です。
特に Lambda の呼び出しに関しては、AWS API での呼び出しとなりますので、AWS ネットワークに閉じた状態でインターネットへ API endpoint を晒すことなく Function を呼び出すことが可能となっています。そして AWS Lambda だけではなく、全く同じインターフェースで Azure Functions の Function App (HTTPトリガー)や、Google Cloud Functions も呼び出す事が出来ますので、デバイスのプログラムを変える事なく Function のホスト先クラウドを変える事が出来ます。
Unified Endpoint にも対応していますので、既にデバイス側からのデータ収集で Harvest や Funnel を使っているようなケースで、追加でビジネスロジックを実装したい、といったようなケースでも、簡単に処理を追加する事が出来ます。
ユースケースとしては、デバイス側で処理を行うのが困難なほど複雑な計算を行わなければいけないケース(MLの活用・時系列データを元にした予測など)や、デバイスが知らない情報を組み合わせて判断をする必要があるケース(例えば、デバイス上の温度センサー情報+外気温や天候のデータなどを複合して判断)、またはデバイス上で実行していた処理ををクラウドにオフロードする事でファームウェアを書き換える事なく処理の内容を変えるようなケース、で有用となります。
SORACOM LTE-Button powered by AWS では Beam + API Gateway (VPC endpoint) + Lambda という構成を取りましたが、これから設計を行うのであれば絶対に Funk を利用したいと思いますし、どこかの時点でそのように構成を変えるかもしれません(それが出来るのも、Unified Endpointのおかげと言えますね)。
この辺りの話は、本日開催 Discovery 2019 の B-1 セッションでもしようと思っています。
余談
こちらの画像は、2018/9/28 頃に社内向けに行ったプレゼンテーションのうちの1枚です。
ほとんど今回のリリース内容と変わらない内容となっています(この時点では開発環境で HTTP でしか動作していませんでしたが)。
またサービス名については、 Function
は時として Func
と略される事が多いですが、響きが同じなのと、16ビートのリズムに乗ってテンポよくレスポンスが返ってくるようなイメージで Funk
としました。そしてエントリーポイントの IP アドレスは … ぜひ調べてみてくださいね。