3分ではじめるWebtask

セクションナイン吉田真吾@yoshidashingo)です。

各社FaaSプラットフォームを提供していますが、Auth0という認証SaaSの別プロダクトであるWebtaskの話をServerlessconf Londonで聞いているところなので聞きながら試してみてます。

Getting Started

  • Webtaskのサイトにアクセスします。

https://webtask.iowebtask.io

  • GithubやFacebookなどでログイン(アカウント作成)します。

  • wtクライアントをインストールします

$ npm install wt-cli -g

ちなみにこのクライアントはオープンソースで開発されています。

github.com

  • 環境の初期化をします
$ wt init <作成したアカウントのメールアドレス(https://webtask.io/cliにあらかじめ表示されています)>

Please enter the verification code we sent to <メールアドレス> below.
Verification code:

メールアドレスに6桁の確認コードが届いているので入力して環境の初期化をします。

  • サンプルコードを試す
$ echo "module.exports = function (cb) {cb(null, 'Hello');}" > hello.js
$ wt create hello.js

Webtask created

You can access your webtask at the following url:

https://xxxxxxxxxxxxxxxxxxxx.run.webtask.io/hello?webtask_no_cache=1

こんな表示が出るのでURLにアクセスすると、コードが実行されて画面に表示されますね。

f:id:yoshidashingo:20161027215119p:plain

  • ちょっとコードを編集してみましょう。
$ wt edit hello

と入力するとブラウザ上がエディタが起動してコードが編集可能になります。

f:id:yoshidashingo:20161027215525p:plain

コードを以下のように編集して実行すると、

var view = (function view() {/*
    <html>
    <head>
      <title>Welcome to Webtasks</title>
    </head>
    <body>
      <h1>Hello, <%= name %></h1>
    </body>
    </html>
*/}).toString().match(/[^]*\/\*([^]*)\*\/\s*\}$/)[1];

module.exports = function (context, req, res) {
  console.log('hoge');
  res.writeHead(200, { 'Content-Type': 'text/html' });
  res.end(require('ejs').render(view, {
      name: context.data.name || 'Anonymous'
  }));
}

HTMLをレスポンスして f:id:yoshidashingo:20161027221115p:plain

ログ出力されるコードが簡単に実行できました。 f:id:yoshidashingo:20161027220957p:plain

実行環境について

Webtaskの実行環境も他のFaaSと同様にコンテナベースでできており、Dockerをベースにしているそうです。(かつ常に実行環境が裏で事前にプロビジョニングされておりウォーミングされている)

その他のアクション

セッション内ではデモとしてSlackを使ったChatOpsが披露されていました。

それ以外にもGitHubのリポジトリにサンプルがたくさん入っており、Webtaskにホストしているコードをスケジュール実行する方法や、認証後のJWTの内容を自分でカスタマイズする方法などがあり、結構有用かもしれないと思っているところです。

去年のブログの答え合わせとかServerlessconf LondonでのAWS IoTの話とか雑記

セクションナイン吉田真吾@yoshidashingo)です。

この記事はSORACOM1周年記念リレーブログの10/17分です。 blog.soracom.jp

昨日からServerlessconf Londonに来ています。

朝日が昇る時間が遅いので朝7時のラッシュアワーでもまだ幻想的な感じです。

気になっていたFabricですが人気がまったくなくてすっかりサビれた感じでこりゃ復活はないなといった印象。

さて、去年、こんなエントリーを書きました。 今年は残念ながら SORACOM Air がつながる場所にいないので、こちらの答え合わせといくつかよもやま話をしたいと思います。最初に言っておくとあまりオチはないです。

yoshidashingo.hatenablog.com

答え合わせ

海外から日本への渡航者向けプリペイドSIM

私が予想するなんかより早く事業として着手していたんでしょう、SORACOMのリリース後ほどなくリリースされたeConnect JapanさんのJapan Prepaid SIM、30日間から使え、独自のアプリでサービスの開始や停止などコントロールできて非常に便利なSIMです。

www.econnectjapan.com

音楽ストリーミングサービス専用SIM

SORACOMとは関係ないですが、LINEモバイルが月額500円でLINEのトラフィックをノーカウントにするという話が上がりましたがLINEミュージックは対象外ということで、インターネットの中立性の話や、そもそもストリーミングをカウントしないというのはなかなか事業として成立しないという背景があるかもしれません。

https://mobile.line.me/pdf/linemobile_countfree.pdf

DJプレイのリアルタイム共有サービス

これはまだIoT的な分野で出てきてませんが、SpotifyなどでDJプレイできるターンテーブルがすでに販売されてるので、セットトップボックスを設置してプレイリストをシンクロさせることで、音声を拾わなくてもDJプレイをお茶の間でリアルタイムに再現するラジオチャンネルみたいなのはできそうですが、ないですね。この際ちょっと作ってみようかな。

ソーシャル自爆ボタン

これはネタなのでアレですが、そもそも大手SNSにおいては本人死亡時に家族の申し立てで設定変更ができる追悼アカウントというのもあるそうです。ただ、自分の知り合いでもいくつかすでに訃報に触れてはいますが、特に追悼アカウントが運用されている感じはないですね。今後に期待です。

https://nanapi.com/ja/128783nanapi.com

今後

さて、先日こんな記事が出ていました。

jp.techcrunch.com

SORACOM vConnec CoreをKDDIに開放し、KDDIが事業主体となってSORACOM Airと同様のサービスを提供するというものです。 すでにKDDIは自社が回線プラットフォームとしてMVNE/MVNOに提供していることから、vConnec Coreを使う意味を考えると、Beam以降のサービスを提供(するんじゃないかという仮定に基いて書きますが)することこそが価値だと思いますし、でなければ回線プラットフォームがSORACOMと組んだメリットが見いだせません。

SIMを組み込んだデバイスからKDDI網の内側を通してセキュアな環境でデータ収集やデバイスへの通信が行えるというのがひとつの売りになっていくんじゃないかと思います。

Building better IoT Applications without Servers

ゆうべたまたまスピーカーディナーの前にAWSのテクニカルエバンジェリストのIanとTrek10のJaredと居合わせたのでちょっと呑んで、今日も午前中からServerlessconf LondonのセッションでIanがIoTの話をしていたのでその話をリポートして締めたいと思います。

IoTのデバイスについての雑感

  • CPUパワーが弱い、バッテリーをたくさん積めない。

IoTの課題

  • デバイスへのアプリケーションのデプロイ
  • セキュリティ
  • デバイスとの接続は低電力で行わなければいけないし使われる場所の電波がよいとは限らず、実際不安定であることがよくある。
  • デバイスの認証/認可
  • デバイスの登録
  • 予測的な分析、可視化

AWS IoTでの解決方法

上記のすべての課題を解決するためにAWSが展開しているのがAWS IoTです。

  • レジストリにデバイスのメタデータを格納することでデバイスの登録管理ができます。
  • デバイスのアプリケーションにSDKを埋め込むことでTLSで暗号化されたデータ通信が可能です。
  • サーバー側から端末にアップデートのトリガを送るときなどもDevice Shadowを使うことでデバイスの電源状態を気にせず非同期にコマンドを送信することができます。

ということで、IoTプラットフォームはAWS IoTのようなプラットフォームに乗ると便利ということで、あとは回線事業者だからこそ提供できる網の内部を通してインターネットを経由しないでデバイスとサービス側のアプリケーションをつなげる仕組み、まさにSORACOMが提供している部分を活用していくことが重要なアプローチですね(一例でいえば端末で暗号化せずにMQTTでSORACOMに投げて暗号化した状態でSORACOMからサーバーアプリケーションに投げるというのは上手い例だと思います。)

AWS IoTボタンを使ったちょっと面白いプロジェクト

セッションの最後にAWS IoTボタンを使った実例がいくつか紹介されたので掲載しておきます。

  • Ping Pong Showdown

www.hackster.io

  • A Slack-powered doorbell

www.andrewmcgill.me

  • Emergency Sweet Green Ordering

www.andrewmcgill.me

  • Nerding Out With the Amazon IoT Button

medium.com

www.slideshare.net

先週のAWS関連ブログ 10/11(月)〜10/23(日) - AuroraやElastiCache for Redisアップデート、JAWS Festa東海道など

セクションナイン吉田真吾@yoshidashingo)です。

どうも、「君の名は。」をすでに6回見てるんですが、そろそろ一緒に語れる方がいればミートアップしたいです。

それでは今週も行ってみましょう。

AWS公式

1. Amazon EC2 で Windows Server 2016 を実行

  • EC2でWindows Server 2016が実行可能になった。
  • 2016ではNano Server/Windowsコンテナ/Docker/SQL Server 2016などが対応している。
  • 2016年末までにECSにWindowsコンテナを追加する予定

リンク:Amazon EC2 で Windows Server 2016 を実行 | Amazon Web Services ブログ

2. Amazon Auroraアップデート – ストアードプロシジャーからLambda Functionの呼び出しと S3からのデータ読み込みに対応 –

  • Auroraのストアドプロシージャ(データベースに発生するINSERT/UPDATE/DELETEなどのイベントをトリガとして動作するコンパイル済み関数)からLambdaファンクションの実行が可能になった。
    • 自分のストアドプロシージャ内からmysql_lambda_asyncプロシジャーを呼び出すことで実行される
    • mysql_lambda_asyncプロシジャーからは非同期実行される
    • 以下未確認
      • (1)Auroraのストアドプロシージャの実行契機はトランザクションコミット後か?
      • (2)mysql.lambda_asyncじゃなくて同期待ちする方法はあるんだろうか
  • S3からのデータインポートをサポートした
    • テキスト形式:MySQLのLOAD DATA INFILEとほぼ同様のオプションが利用できる「LOAD DATA FROM S3」コマンドを利用
    • XML形式:LOAD XML from S3コマンド

リンク:Amazon Auroraアップデート – ストアードプロシジャーからLambda Functionの呼び出しと S3からのデータ読み込みに対応 – | Amazon Web Services ブログ docs.aws.amazon.com docs.aws.amazon.com

3. Amazon ElastiCache for Redisアップデート – Sharded Clusterの追加やエンジンバージョンを更新 –

  • ElastiCache for Redisに以下のアップデート
    • Sharded Clusterがサポートされ、クラスタモードを有効にして作成されたクラスタは1クラスタ内最大15シャードまで作成でき、3.5TiBまでインメモリに格納でき、Read Replicaを作成することで秒間最大 2000万読込み/450万書込みの性の追うを発揮する
  • コンソールでインスタンスを選択する際に、メモリ量/ネットワークインタフェース/時間あたり価格が表示されて、選択しやすくなった
  • Redis3.2に対応し、Enforced Write Consistency/SPOP with COUNT/Bitfields機能が使えるようになった
  • Geo系のデータに対応し、これらを簡単に扱えるようになった

リンク:Amazon ElastiCache for Redisアップデート – Sharded Clusterの追加やエンジンバージョンを更新 – | Amazon Web Services ブログ

4. 現在進行中 – VMware Cloud on AWS

  • オンプレで使っているVMwareテクノロジー(ESXiやvSAN、NSX)をAWSのハードウェア上でマネージドサービスとして実行可能に
  • vMotionでオンプレからの移行、データセンター統合でAWSへの移行なども可能になる予定

リンク:現在進行中 – VMware Cloud on AWS | Amazon Web Services ブログ リンク:https://aws.amazon.com/vmware/

AWS関連

JAWS Festa東海道が10/22(土)に名古屋工業大学で開催されました。

特に打合せもなかったのですがなんか「JAWS-UG on ASCII.jp」にも関わっていることですしなんかやれってことでまずはランチタイムに少しLTしました。

www.slideshare.net

5. サーバーレスの話

  • メインは夕方の25分セッションでした、私からはサーバーレスの基本的な話で、後半の丹羽さんがパフォチューの話をしようという感じで。

www.slideshare.net

6. サーバレスアーキテクチャのパフォーマンスチューニング

  • アーキテクチャを構成する要素ごとにどのようなパフォーマンス(特にレスポンスタイム)の特性があるか、レスポンスタイムを削れるかやってみた記録

speakerdeck.com

7. Inside of awspec -AWSをテストする方法。そしてその中のはなし-

  • awspecの作者から、AWSをテストするツールを開発するうえでの知見の共有、最近どんなPRもらったか、AWSへの要望など

speakerdeck.com

ということで今週は短めですがここらへんで。