Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

オープンソースのサーバレス実行環境「OpenWhisk」の概要とアプリケーションの作成

IBM Bluemix User Group(BMXUG)リレー寄稿 第2回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

 IBM Bluemixは、PaaS(Platform as a Service)として皆さんに最強の開発環境を提供します。Bluemixの特徴として、開発基盤だけではなく、100を超えるサービス「IBM Watson、ランタイム、IoT、Storage(DB)、アナリティクス、モバイル」など、豊富な開発環境やAPIがシンプルな形で提供されており、より素早くアプリケーションを構築&運用することが可能です。「IBM Bluemix User Group(BMXUG)リレー寄稿」では、コミュニティの皆さんが最近もっとも注目しているBluemixのサービスを、順番に紹介していきます。今回はサーバレスな環境を提供する「OpenWhisk」を取り上げます。

目次

OpenWhiskとは

 最初に「OpenWhisk」の説明をしたいと思います。最近「サーバレス」という言葉を聞いたことがあるでしょうか? CodeZineの読者の方であれば、すでにクラウドサービスの中にもいろいろな種類があることをご存知だと思います。

 最もポピュラーなクラウドサービスの提供形態はIaaSと呼ばれるOSを自身で管理できる環境が提供されます。代表的なサービスはAWSのEC2ですね。それ以外にもPaaSと呼ばれる利用者はプログラム実行環境(bin/lib/コンピュータリソース)を選択してアプリケーションを動かすことができるものもあります。代表的なサービスは、SalseforceやGoogleAppsそして今回ご紹介するBluemixがあります。

 そのような状況の中で、さまざまなサービスを拡張する、または繋げるようなかたちでAWSがLambdaを発表しました。Lambdaはコードだけを管理しコードを実行するサーバについては何も考慮することなく実行することができる環境です。コードだけを管理するという概念的にはPaaSと同様ですがPaaSは実行する環境のリソースについては利用者が定義(例えばCPUは1core、メモリは512MByteなど)するのが一般的です。それに対してサーバレスの環境ではそう言った計算リソースは利用者は管理しません。シンプルにソースコードが実行されるのを期待されます。そしてスケーラブルに動作することが期待されサービスによっては実行回数などでコストが発生するという仕組みです。最近ではこのような仕組みを「サーバレス」と表現します。「サーバレス」がどのようなものであるかは、martinfowler.comでも解説されています 。この中ではサーバレスは「Function as a Service」であると定義されています。今回紹介するOpenWhiskもまたLambdaと同様にサーバレスを実現する環境であると言えるでしょう。

 さて、OpenWhiskは、前出のAWS Lambda、GCP Cloud Functions、Azure Functionsと並ぶサーバレスを実現する環境であり、IBMが始めたオープンソースソフトウェアのプロジェクトです。このプロジェクトは現在GitHub上で開発されています。各社のサーバレスがプロプライエタリな製品(サービス)であることに対し、オープンソースソフトウェア(OSS)であるのは一つの特徴です。OpenWhiskはソフトウェアとしての側面ではサーバソフトウェアです。OSSで提供されているため、ユーザはサーバを用意し環境を作ることができます。IBMのBluemixでは、サービスとしてOpenWhiskも提供しています。そのためBluemixのOpenWhiskを使えば今すぐにサーバレスのプログラムを利用してみることができます。

 実際の開発に関して利用できる言語についても順次拡張しており、JavaScript(Node.js)、Swift(Kitura)、Python、Javaなどが利用できて、変わり種としてDockerもサポートしています。これらの言語で小さい処理を簡単に動かす環境に向いています。いくつもの処理をつなぎあわせて使うことができる「Sequence(Chain)」と呼ばれる機能なども用意されており、UNIXのパイプライクに使うこともできます。

作るアプリケーションの概要

 OpenWhiskには覚えるべき概念がありますが、ここでは作りたいアプリケーションから説明をしたいと思います。今回、単純ではありますが実用的な天気予報を教えてくれる仕組みを作りたいと思います。私は普段チャットツールのSlackを利用しているので、毎朝Slackのメッセージとして、この天気予報を受け取るようにします。

  1. 特定の時間(毎朝7:00) に実行する
  2. 天気予報を取得しSlackにメッセージを通知する

 この2つの処理を行うことで実装を行いたいと思います。OpenWhisk的に図示すると以下のような図になります。具体的な説明は順次説明をしていきます。

 今回は、OSSではなくBluemix上のOpenWhiskを利用することを前提とします。OSSの場合には若干異なるものがあるのでご注意ください。また開発に際しては、Webブラウザを利用する方法とCliを利用する方法があります。基本的にはWebブラウザで実施しますが、本稿ではCliも利用してます。Cliの導入方法については説明を省かせていただきますが、コンソール画面上に表示される方法で特に問題なく利用できるかと思います。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 常田 秀明(Bluemix User Group)(トキダ ヒデアキ)

    日本情報通信(株) クラウドエバンジェリスト。 ネットワーク、監視プロダクトのエンジニアを経験したのちシステムの設計、運用、保守のPMを経て近年クラウドを推進する立場で活動をしています。主にお客様の導入支援、クラウドの啓蒙活動、コミュニティ活動に従事。

バックナンバー

連載:IBM Bluemix User Group(BMXUG)リレー寄稿
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5