こんばんは、 @dz_ こと大平かづみです。
Prologue - はじめに
ファーストタッチばかりですけど、今度は Bluemix OpenWhisk を触ってみます!
Windows 環境から使いたいので、Vagrant で環境を作ってみました。
Bluemix OpenWhisk とは
まず、OpenWhisk とは、オープンソースのイベント駆動型のプラットフォームです。About IBM® Bluemix® OpenWhisk を要約してみましょう。
要約
REST API やトリガーからのイベントキックにより、アクションが実行されます。アクションは、NodeJS や Swift で書くことができます。また、Docker のコンテナをデプロイすることも可能です。
トリガーは、OpenWhisk API や CLI、iOS SDK からもキックすることができます。また、アクションはチェーンで連結することができます。
フィードやアクションに紐づけることができるパッケージには、追加のサービスやプロバイダと結合させることができます。たとえば、Cloudant change feed を使うと、Cloudant データベースで起こったイベントを起点にしてトリガーを発動することができます。また、パッケージにアクションを構成すると、再利用可能なロジックとしてイベント駆動だけでなくAPI実行からも利用できます。
トリガーが発動しない限りコードは実行されず、その間は課金されません。トリガーの発動に応じて課金されるため、同様の用途で仮想マシンやコンテナを長時間稼働させておいた場合のコストのオーバーヘッドを抑えることができます。
開発者はコードを書くことに集中でき、サーバーやストレージ、ネットワークなどインフラストラクチャのモニタリングやパッチ対応、セキュリティ対応の心配をする必要はなくなります。
ユースケース
- アプリケーションをマイクロサービスとして分解する際に利用
- モバイルのバックエンド
- データ処理
- IoT
大まかな流れ
さて、実際に OpenWhisk を触る環境を作ってみます。OpenWhisk はまだGUIがないため、CLIの環境を用意します。
- Vagrant 環境の準備
- OpenWhisk のセットアップ
手順
Vagrant 環境の準備
OpenWhisk CLI は、Python 2.7 以上で動作し、インストールには pip
を利用します。そこで、以下のようなスクリプトで Vagrant 環境を構築しました。なお、 Vagrant 事態の環境構築については割愛します。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provision :shell, path: "provision.sh"
end
#!/usr/bin/env bash
apt-get update
apt-get install -y git
# install pip
TMP_PIP=/tmp/pip
if [ ! -e "${TMP_PIP}" ]; then
mkdir $TMP_PIP
fi
wget "https://bootstrap.pypa.io/get-pip.py" -P $TMP_PIP
python $TMP_PIP/get-pip.py
rm -rf $TMP_PIP
# install OpenWhisk CLI
pip install --upgrade https://new-console.ng.bluemix.net/openwhisk/cli/download
上記のファイルを準備し、Vagrant を立ち上げ、SSHログインしておきましょう。
vagrant up
vagrant ssh
OpenWhisk のセットアップ
次に、OpenWhisk のセットアップを行います。
Bluemix にログインして、OpenWhisk のコンソール を開きます。
「Configure CLI」をクリックすると、環境構築の手順が表示されます。
-
1
の CLI インストールは、上記 Vagrant で実行済みです。 -
2
では、環境をアカウントの名前空間に紐づけ、認証を行います。画面上のコマンドをコピーし、先ほど立ち上げた vagrant 環境で実行しましょう。認証されればOKです。 -
3
は動作確認のコマンドです。これもコピー&ペーストして実行し、Hello
が返ればOKです。
実行の状況は、コンソールの「Dashboard」で確認することができます。
これでデプロイ環境はできましたね。
Epilogue - おわりに
上記は簡単な動作確認までですが、アクションや、トリガー、パッケージなどについてはもう少し理化してから触りたいので、次回の記事にしたためます。
なお、作成した Vagrantfile はとても簡単なものですが、一応、こちら dzeyelid/vagrant-env-openwhisk に置きました。