AWS Lambda に代表されるサーバレスコンピューティングが話題になっています、サーバレスコンピューティングのメリットは、インフラの管理が不要、コストが安いなどが語られています。しかしインフラが管理・運用能力がある私にとっては、コストの安いサーバーが提供されている現状では大きなメリットに感じられませんでした。
ところが最近、SORACOM LTE-M Button powered by AWS(LTE-M Button) というセルラー通信でAWSに繋がるデバイスを買って AWS Lambdaを使い簡単なシステムを作った事で、サーバレスコンピューティング価値が理解できたように思えます。
今回の実験システム
今回作ったシステムは次にように動きます
- SORACOM LTE-M Button のボタンを押すとセルラー通信を使い、AWS IoT 1-Click に接続されます
- AWS IoT 1-Clickに登録された Lambda のコードが起動され、メッセージを Apple Push Notificationサービスに送信
- Apple Push Notificationサービス(APNs)がiPhone/iPadにプッシュ通知を送信
- プッシュ通知を受け取るiOSアプリが起動されプッシュ通知を表示
今回作ったのは、2. と 4. ですが、プッシュ通知を受け取るiOSアプリは非常に簡単なものなので今回は省略し、 AWS Lambdaの説明をします。
AWS Lambdaは Node.js(JavaScript)、Python、Java, C# で書かれたコードを実行できます。今回は慣れている Node.js(JavaScript) を使いました、Apple Push Notificationサービスとの通信は Node.js モジュール node-apnを使いました。Lambdaでは各言語のライブラリー(モジュール)が使えるので、ライブラリーが充実した言語を使うと手短にコードが書けます。
Lambdaのコードは以下のように短いものです、
- 前半 10〜25行目は、受け取ったボタン情報(通常、ダブルクリック、長押し)と時間に応じてiOSの送られるメッセージを組み立ています
- 後半 27〜41行目は、Apple Push Notificationサービスへのメッセージ送信です
サーバレスコンピューティングの真価
IoT(Internet of Things)時代になり色々なデバイスがインターネットに繋がる時代になりました、デバイスによっては頻繁に情報を送信するデバイスもあると思いますが、1日に数回しか送信しないデバイスもあると思います。
1日に数回しか送信しないデバイスのためにサーバーを用意しプログラムを動かすにはコスト的に難しいかもしれません。しかし AWS Lambdaのようなサーバレスコンピューティングプラットフォームを使えばそのようなサービスも手軽に作れます。
従来のサーバーありきで情報を集中処理するのではなく、複数のLambdaのようなものを連携してゆるやかな結合のシステムを構築する事も可能になるのかしません。 またバラバラなシステム・サービスを接着する糊のように使い、システムを統合するような使い方もあるかもしれません。