Upload
hideaki-tokida
View
734
Download
0
Embed Size (px)
Citation preview
OpenWhiskServerlessへの期待
IBM Cloud Community 勉強会 -サーバレス特集 OpenWhisk -
資料は後⽇公開(Slideshare)いたします。本資料内でのスペック・サービス内容の表記については2016/10/3現在の資料を参考にしております。内容について誤りがないように努めておりますが実際のご利⽤の際にはご確認の上実施下さい。
自己紹介
� 常田秀明 (Tokida Hideaki) � Facebook: hideaki.tokida� Twitter: @tokida
� 主な仕事
� 所属)日本情報通信株式会社
� お客様、社内における新しい技術や考え方の啓蒙活動, Bluemix/WatsonAPIのAPL開発支援
� 最近の活動
� 日本SoftLayerユーザ会コアメンバ� 日本Bluemixユーザ会コアメンバ� 雑誌、Webサイトの寄稿
Community 活動
� SoftLayer , Bluemix関連の執筆やセミナーなどを実施しています
� 宣伝
� Software Design 2016-11月号(10/18発売)
� 新人のときに知っておきたかった「クラウドコンピューティングのしくみ」(AWS・Azure・SoftLayer・SalesForce・さくらインターネット)
最近はOpenWhisk!!
� OpenWhisk概要 -日本情報通信クラウドインフォメーションサイト� http://niccloud.niandc.ne.jp/?p=1933
� オープンソースのサーバレス実行環境「OpenWhisk」の概要とアプリケーションの作成 -CodeZine� http://codezine.jp/article/detail/9623
� About OpenWhisk / 2回ほど発表した資料� http://www.slideshare.net/hideakitokida/about-openwhisk� http://slides.com/hideakitokida/openwisk#
Agenda
� 今日勉強して欲しいこと
� 話すこと、離さないこと
� 世の中で行われているサーバレスの仕組み
� システムインテグレータとしての期待
� Serverless on Bluemix -今できるサーバレス環境の作り方
今日勉強してほしい事
� 今日の「IBM Cloud Commuity」に来て頂いている方々の技術的なバックグラウンドとしてAWSのLambdaベースのサーバレスを知らない人(≒サーバレスをあまり知らない)を想定して書いています。
� そんな人に、なぜ今「サーバレス」なのか、そしてIBMのOpenWhiskはどんな位置付けのサービス(ソフトウェア)であるのかを理解してもらう。
話すこと、話さないこと
� 話すこと
1. サーバレスの現状
2. サーバレスはどういうものなのか
� 話さないこと
1. Microserversの話
2. 今すぐサーバレスで儲ける方法
3. OpenWhiskの技術的な深い話・仕組み
世の中のサーバレス事情
世界的にイベントも開催中 ServerlessConf
Serverlessって?
� 必要なシステムを構成する上で、「いわゆる仮想サーバ」を利用しないアーキテクチャ
� 仮想サーバが担っていた機能は、SaaSを上手に使って目的を果たす。
� 仮想サーバで実施していいた「ユーザ処理」が有る場合には、Function as a Serviceを利用して「処理」だけを登録して実行するサービスを活用してシステムを作る。
AWS Lambda ≒ Serverlessと言っても言い過ぎではない
� 主に、AWSのLambdaベースのサーバレスの仕組みを「サーバレス」と呼ぶことが多い� 「サーバレス」という言葉自体は、ベンダーにとらわれるものではないが現在最も実装されて動いているのはAWS Lambdaが主流であることは疑いの余地はない
� Serverlessを実現するためのノウハウが溜まってきている
� クラウドプロバイダーの各社は、相次いで「サーバレス」の仕組みを発表している
� Azure Functions , Google Functions , OpenWhisk
従来のサーバ利用からサーバレス環境の比較
EC2の処理をAWS Lambdaで制御する
http://www.slideshare.net/mitocgroup/microservices-architecture-for-web-applications-using-aws-lambda-and-more
従来のサーバ利用からサーバレス環境の比較
EC2の処理を各種サービスで制御する
http://www.slideshare.net/mitocgroup/microservices-architecture-for-web-applications-using-aws-lambda-and-more
ServerlessのFrameworkも登場
システムからみる
Compute と Service の密接続具合
BearmetalServer Virtual
ServerDocker
PaaSServerless
ServiceServiceDocker
(MiddleWare)
VM(MiddleWare)
BM(Middle Ware)
専用プロトコル 専用プロトコル 専用プロトコル REST(API) ServiceのEvent連携
システムからみる
Compute と Service の密接続具合
� 各サービス群の状態の変化を継起にしてServerlessのFunctionを起動する等サービス群と深く密接に繋がる
� 見方によってはある種「Service」自体を拡張しているかのように作っていく
� またServerlessの仕組みとして、シンプルな単機能を実装する場合にはマイクロサービスとしてServerlessを構築していく事が望ましい。
Serverless
Service
ServiceのEvent連携
システムインテグレータとしての期待
コントール可能な範囲Cost費用
Operation運用
従来か
らの互換性
Bluemixサービス連携
Agility速度
Standard標準
Portability可搬性
Security安全
Performance性能
Reliability信頼HW OS Bin
Lib Code
SoftLayer ✓ ✓ ✓ ✓ ☓ ☓ ◎ N/A ☓ ◎ ☓ ◎ ◎ ◎
OpenStackVM ✓ ✓ ✓ △ △ ◎ ☓ △ ◯ △ ◯ ◯ ◯
Docker ✓ ✓ ◯ ◯ ◯ ◯ ◯ △ ◎ △ ◎ △
CloudFoundry (✓) ✓ ◯ ◯ △ ◎ ◎ △ ◯ △ △ △
OpenWhisk ✓ ◎ ◎ ☓ △ ◎ ☓ ◯ △ △ △
IBM Cloud サービスに於ける serverlessの位置付け
サーバレスを実現する世界
� 管理不要
� 設定不要、管理不要、高い可用性
� 生産性
� コードに集中、素早い導入、市場投入の時間短縮
� 拡張性
� 自動化、スケールアップ・ダウン
Serverlessにおける責任分界点
データ
コード
ランタイム
ミドルウェア
OS
仮想化
サーバー
ストレージ
ネットワーキング
IaaS
Paa
S
SaaS
/Ser
verle
ss
データセンター/ネットワーク事業者
ハードウェア機器・インフラ構築SIer
アプリケーションディベロッパー
クラウド事業者
インフラ構築SIer
アプリケーションディベロッパー
クラウド事業者
アプリケーションディベロッパー
オンプレミスIaaSPaaS
クラウド事業者
アプリケーションディベロッパー
Serverless
SI/システム運用から見て
� 構築する範囲が圧倒的に少ない
� 場合によっては、None-Codeで設定のみで完結する
� マネージドサービスの範囲が飛躍的に上がり運用自体が不要
� サービスの異常検知等をモニタリングしておく程度となり、急なスパイクにも自動的に対応
� コストの軽減
� 適所で利用することにより既存クラウドアーキテクチャに比べて飛躍的に軽減する可能性がある
Serverlessによる変化
� 強制的に、ステートレスで拡張性の有る設計が必須
� これまで、”クラウドネイティブ”と言ってはいたもの結局従来どおりのアーキテクチャになっているケースなどが多かったと思いますが変えざるを得ない
� マイクロサービスアーキテクチャ化の促進
� AWS LambdaやOpenWhiskなどは全てFunction as a Serv iceをであり、小さい作業を実施することに向いている傾向がある。その為必然的に機能別に分解したマイクロサービスの形態を取る
� 変化に強いシステムを作ることが出来る
� 試験手法の変化が必要
� 結合試験などを事前にすることが難しい、その一方でマイクロサービス化することにより変更による影響範囲を小さくすることが出来る。
� 障害発生時のSPOFを考慮� 特定のサービス(Function)が停止することで全体への提供がない様に設計が必要。常にリカバリープランをアプリケーションのSLA等を基準に検討する。
適材適所
� Serverlessの仕組みは優れていますがすべてのことが出来るわけではありません。銀の弾丸は無いよ。
� 適材適所で有効な部分に使っていきましょう。
OpenWhisk
OpenWhiskとは
� OpenWhiskは、OSSで提供されるサーバサイドアプリケーションプラットフォームです。
� つまり、Bluemix上だけでなくオンプレミスや他のクラウドの上で動かすこともが可能です。
� インフラストラクチャを選ばないため非常に可搬性に優れています、このことは弾力性の高いシステムを作ることが出来ます。
� またCoreな技術は非常によく使われているOpenSourceが利用されています。
OpenWhiskの特徴
� OpenWhsikは、2つの側面を持っています。
� Backend as a Services
� Function as a Services
Backend as a Serviceとしての側面
� iOSのモバイルアプリケーションに向けてSDKが公開されています。
� モバイルの世界ではクライアント側で多くの処理を行いサービスと連携して動作する 2-way アーキテクチャが出てきています。(先日のserverless confでも出ていましたが、クライアント10万台x100台のサーバではクライアント側がパワーがありすぎる)
クライアント側で処理をする
Function as a Serviceとしての側面
� 単機能なサービスを複数作り、それらをAPIで接続して利用する事を想定します。
� 各機能はストレートレスな処理を行います。
� サービスに必要なリソースについて利用者は特に意識すること無くスケールアウトが行なえます。
� OpenWhiskでは、標準でREST APIのエンドポイントURLが付与されます。
Serverlessアーキテクチャで考える
� 従来からのシステム構築(とくにオンプレミス環境を含む)はまだまだ存在します。
� そういった中でも大切なことは「クラウドで産まれた技術」をオンプレミス環境でも活用していくこと、だと思います。
� OpenWhiskはオンプレミスでも強調するため既存のシステムの中にFunction as a Serv iceを組み込んでいくことが可能です。
� サーバレスを前提するということは、ステートレスなプログラムが必要です。またAPIで連携することも時には必要になります。OpenWhiskだけではAPIの制御は不十分になるため必要に応じてAPI Connect + OpenWhiskの構成を取る必要があります。
マルチプラットフォーム
� OpenWhiskはOSSで提供されているため様々なプラットフォームで実行が可能です。
� 完全にマネージドサービスで提供されるBluemix上でも、AWSやAzure上でも同じ仕組みを実行することが可能です(ポータビリティが必要なシステムでもサーバレスアーキテクチャでシステムを作ることが可能です)
オンプレミス 各種クラウドフルマネージドサービス(Bluemix)
1st Stepのアイディア
従来通りのサーバ上でのアプリケーション
処理1
処理2
処理3
処理4
小さい処理を取り出してOpenWhsik上に実装してゆく
REST
システムからみる
Compute と Service の密接続具合
SoftLayerOpenStack
VMDocker
CloudFoundry
OpenWhisk
ServiceServiceDocker
(MiddleWare)
VM(MiddleWare)
BM(Middle Ware)
専用プロトコル 専用プロトコル 専用プロトコル REST(API) ServiceのEvent連携
連携サービスが不十分
IBM Cloud でのserverlessの課題
� 現在の IBM Cloud ( SoftLayer , Bluemix )の課題� OpenWhiskと密接続を行う事ができるサービスが少なすぎる
� つまり「サービス」→「OpenWhisk」→「サービス」→「OpenWhisk」の流れが簡単に作れない。
service Service
Feed: GithubWebHook
Githubでどのような時にWebHookを起動するかはGithubでの設定で行う
WebHookを受信するようなFeedを作ることで自動処理を実現することが可能
https://github.com/openwhisk/openwhisk-catalog/blob/master/packages/github/webhook.js
汎用的なサービスとの連携方法
まずはWebHook-Feedから
Serverless on Bluemix
� Bluemixで利用できる(と思う)サービス群の紹介� Serverlessな仕組みを作るとすると主にはFunctionを記述する
� ストレージ部分は既存のサービスを利用する
� 可能な限り利用できる機能は既存のサービスを利用し最低限のFunctionのみを記述する
例えば、このようなRESTで制御出来るAPIと連携する
動きを見てみよう(1)IBM Demo Applicationの仕組み
Data upload Invoke <image flames>
Invoke
分析結果
(1)Movieをフレーム画像に分解
(2) フレーム画像を分析し結果をCloudantへ格納
https://github.com/IBM-Bluemix/openwhisk-darkvisionapp
http://www.slideshare.net/ServerlessConf/frederic-lavigne-and-stephen-fink-serverless-video-processing-with-ibm-bluemix-openwhisk?qid=ac9c2114-7ef7-48af-a907-50788a540b76&v=&b=&from_search=10
動きを見てみよう(2) Watson IoTのイベントを受信して動かす
wsk package get --summary /[email protected]_dev/mqttpackage/[email protected]_dev/mqtt
Feed:mqttMQTT
IoT Platformにてデータを受信しMQTTで配信する
WebHookを受信するようなFeedを作ることで自動処理を実現することが可能
Provider
MQTT用の受信・Feed配信を行うためのプロバイダーをDockerコンテナ上で構成
https://github.com/jthomas/openwhisk_mqtt_feed
まとめ
� クラウドサービスの世界では、Function as a Service (Serverless )は選択しの1つとして確実に存在しています。
� 適切に構築することで自身のアプリケーションをまるでフルマネージドのサービスのように運用することが出来ます。
� OpenWhiskを利用することで、オンプレミスでもクラウドでも同じアーキテクチャでサーバレスな環境を構築することが出来ます。
� まずは、身近な1つの機能から移行しては如何でしょうか
Photo by Umi-no-Kyoto Organization Committee is licensed under CC BY 4.0 International