SlideShare a Scribd company logo
1 of 81
© SIOS Technology, Inc. All rights Reserved.
サーバーレスアーキテクチャで
働き方改革を推進
Work Style Reform
by Serverless Architecture
技術部
2018年11月16日
武井 宜行
サイオステクノロジー株式会社
© SIOS Technology, Inc. All rights Reserved.
About me
2
Internal Only
© SIOS Technology, Inc. All rights Reserved.
About me
3
Internal Only
about me
Noriyuki TAKEI
武井 宜行
Information
• サイオステクノロジー株式会社
• クラウドネイティブアプリケーション
• 千葉県在住
Favorites
• Azure
• Squash
• Sweets
blog
https://tech-lab.sios.jp/
© SIOS Technology, Inc. All rights Reserved.
What is Serverless Architecture?
4
Internal Only
© SIOS Technology, Inc. All rights Reserved.
What is Serverless Architecture?
5
Internal Only
アプリケーションを実行するための実行基盤で、以下の3つの特徴があります。
サーバーが不要!! 必要に応じてスケール!! 使った分だけ課金!!
What is Serverless?
© SIOS Technology, Inc. All rights Reserved.
What is Serverless Architecture?
6
Internal Only
サーバーが不要!!
before
• 仮想マシン作成
• OSインストール
• ミドルウェア(Apache
等)インストール
• 性能検証
• コーディング
after
ブラウザ上、もしくは専
用の開発環境でコードを
入力して保存するだ
け!!
アプリ開発の手間を大幅に削減!!
© SIOS Technology, Inc. All rights Reserved.
What is Serverless Architecture?
7
Internal Only
必要に応じてスケール!!
before
• 負荷テストツール用意
• テストシナリオ作成
• テスト実施
• チューニング
• 結果報告書作成
after
特別な設定は不要!!不
可に応じて無限にスケー
ル!!
負荷に応じて無限にスケールします。
© SIOS Technology, Inc. All rights Reserved.
What is Serverless Architecture?
8
Internal Only
使った分だけ課金!!
before
仮想マシンの場合、アプリ
ケーションが動いてなくて
も、仮想マシンが起動して
いる時間だけ課金が発生す
る。
after
アプリケーションが動い
た時間だけしか課金され
ないので、仮想マシンと
比べて料金が抑えられる。
使った分だけ課金します。
© SIOS Technology, Inc. All rights Reserved.
What is Serverless Architecture?
9
Internal Only
サーバーレスアーキテクチャは
システム開発における
大きな変革をもたらします。
© SIOS Technology, Inc. All rights Reserved.
What is Serverless Architecture?
10
Internal Only
Lift & Shift
オンプレミス環境
・・・
クラウド環境
・・・
物理マシン 仮想マシン
© SIOS Technology, Inc. All rights Reserved.
What is Serverless Architecture?
11
Internal Only
Cloud Native
オンプレミス環境
・・・
クラウド環境
物理マシン
API Management
Azure Functions
CosmosDB
© SIOS Technology, Inc. All rights Reserved.
What is Serverless Architecture?
12
Internal Only
Lift & Shift
Cloud
Native
オンプレミスの物理マシンを、そのままクラウド上の
仮想マシンに移行します。OS、ミドルウェア、アプ
リケーションをほぼそのままの形で移植します。
クラウド特有の機能を用いてアプリケーションを構成
します。サーバーレスなNoOps環境(パッチ当てやOS、
ミドルウェアのアップデート不要)などによるクラウ
ドの恩恵を十分享受できる方式です。
© SIOS Technology, Inc. All rights Reserved.
What is Serverless Architecture?
13
Internal Only
サーバーレスアーキテクチャはアプリケーションを
Cloud Nativeで開発するための新たな手法
今後はCloud Nativeなアプリケーションが
主流になる
システム設計は今までとは大きな発想の転換が
必要となる
© SIOS Technology, Inc. All rights Reserved.
The difference
between IaaS & PaaS & FaaS
14
Internal Only
© SIOS Technology, Inc. All rights Reserved.
The difference
between IaaS & PaaS & FaaS
15
Internal Only
OS(LinuxやWindows)
Runtime(JavaやPHPなどのアプリケーション実行環境)
Middleware(ApacheやTomcatなど)
Application Framework(SpringやCakePHPなど)
Application
Component群
Class
Method
public void hello() {
system.out.println(“Hello!!”);
}
IaaS
OSインストール済みの基盤
OSより上のレイヤー全てをシステ
ム管理者が管理
OSのセキュリティアップデートや、
ミドルウェア、アプリケーションフ
レームワークへの脆弱性対応なども、
当然システム管理者の責任
自由度は高く、どんな言語やミドル
ウェアでも実行可能
© SIOS Technology, Inc. All rights Reserved.
The difference
between IaaS & PaaS & FaaS
16
Internal Only
IaaSの開発イメージ
仮想マシンを作成する。
JavaやPHPなどのランタイムをインストールする。
ApacheやTomcatなどのミドルウェアをインストールする。
SpringやCakePHPなどのフレームワーク上でアプリケーションを開発する。
アプリケーションをビルドする。
ビルドしたアプリケーションをミドルウェア上にデプロイする。
© SIOS Technology, Inc. All rights Reserved.
The difference
between IaaS & PaaS & FaaS
17
Internal Only
OS(LinuxやWindows)
Runtime(JavaやPHPなどのアプリケーション実行環境)
Middleware(ApacheやTomcatなど)
Application Framework(SpringやCakePHPなど)
Application
Component群
Class
Method
public void hello() {
system.out.println(“Hello!!”);
}
PaaS
IaaSにおいて、システム管理者の
責任範囲であった「OS」
「Runtime」「Middleware」が、
パブリッククラウドの責任範囲
OSのセキュリティアップデートや、
ミドルウェアの脆弱性対応などは、
パブリッククラウド側で実施
アプリケーションフレームワーク
(SpringやCakePHP等)で脆弱性が
発覚した場合は、システム管理者の
責任
自由度はIaaSに比べると低く、パ
ブリッククラウド側で提供されてい
る言語のみを選択可能
© SIOS Technology, Inc. All rights Reserved.
The difference
between IaaS & PaaS & FaaS
18
Internal Only
PaaSの開発イメージ
SpringやCakePHPなどのフレームワーク上でアプリケーションを開発する。
アプリケーションをビルドする。
ビルドしたアプリケーションをミドルウェア上にデプロイする。
ZIPなどの形式で圧縮して、パブリッククラウドの管理画面からアップロードする。
© SIOS Technology, Inc. All rights Reserved.
The difference
between IaaS & PaaS & FaaS
19
Internal Only
OS(LinuxやWindows)
Runtime(JavaやPHPなどのアプリケーション実行環境)
Middleware(ApacheやTomcatなど)
Application Framework(SpringやCakePHPなど)
Application
Component群
Class
Method
public void hello() {
system.out.println(“Hello!!”);
}
サーバーレスアーキテクチャ
OSやランタイム、ミドルウェアは
もちろんのこと、アプリケーション
フレームワークさえも不要
実行するコードのみを記載すれば、
プログラムが実行出来る
OSのセキュリティアップデートや、
ミドルウェア、アプリケーションフ
レームワークへの脆弱性対応は不要
© SIOS Technology, Inc. All rights Reserved.
The difference
between IaaS & PaaS & FaaS
20
Internal Only
たったこれだけ!!
サーバーレスアーキテクチャの開発イメージ
パブリッククラウドのポータルにアクセスする。
コードを書く。
© SIOS Technology, Inc. All rights Reserved.
The difference
between IaaS & PaaS & FaaS
21
Internal Only
IaaS PaaS サーバーレスアーキテクチャ
並べてみると一目瞭然
IaaS→PaaS→サーバーレスアーキテクチャの
順に従って、管理範囲が少なくなります。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
22
Internal Only
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
23
Internal Only
サーバーレスアーキテクチャは
銀の弾丸ではありません。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
24
Internal Only
ステートレス
様々な制約
設計の難易度
移植性
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
25
Internal Only
IaaS PaaS サーバーレス
アーキテクチャ
保守性 △ ○ ◎
自由度 ◎ ○ △
開発工数 △ ○ ◎
費用 ○ ○ ◎
スケーラビリティ △ ○ ◎
移植性 ◎ ○ △
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
26
Internal Only
IaaS PaaS サーバーレスアーキテクチャ
保守性 △ ○ ◎
保守性
保守性とは、サービス開始後、アプリケーション正常稼働の維持のた
めに発生する作業の効率性を定めた指標です。
その作業は、 OSのセキュリティパッチ適用、アプリケーションフレー
ムワークやライブラリの脆弱性対応、バージョンアップ等、その作業
内容は多岐にわたり、しかも不定期に発生します。
サーバーレスアーキテクチャが有利!!
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
27
Internal Only
IaaS
OSのレイヤーからシステム管理者が面倒を見なけれ
ばならず、OSのセキィリティパッチやアプリケー
ションの脆弱性対応はシステム管理者自身が実施する
必要があります。
サーバーレス
アーキテクチャ
保守性
PaaS
アプリケーションのレイヤーより下位の層はパブリッ
ククラウドの責任範囲ですので、OS周りの対応は不
要ですが、アプリケーションのレイヤーのメンテナン
スは、必要です。
インフラのレイヤーは全て抽象化されます。つまり、
今までシステム管理者を煩わせていたセキュリティ
パッチ当てやライブラリのバージョンアップなどは一
切気にせず、コーディングのみに集中できます。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
28
Internal Only
自由度
システムを構築する際に選択するランタイム(開発言語)、ネットワー
ク構成、ストレージなどをどの程度自由に選択できるかという指標で
す。
IaaSが有利。
IaaS PaaS サーバーレスアーキテクチャ
自由度 ◎ ○ △
© SIOS Technology, Inc. All rights Reserved.
サーバーレスアーキテクチャの
メリット・デメリット
29
Internal Only
IaaS
開発言語は自由にインストール可能、接続するスト
レージのプロトコルもCIFS、NFS、WebDav、iSCSI
とオンプレミス上のサーバーとほぼ同じ自由度で構築
が可能です。
サーバーレス
アーキテクチャ
自由度
PaaS
システム管理者が扱えるのはランタイム(開発言語)よ
り上のレイヤーになりますので、IaaSほどの自由度
はありません。実行出来るランタイムは、パブリック
クラウドが提供するものに限られます。
ランタイムはある程度自由に選択は可能ですが、コー
ドの実行形態が「関数」という最小単位のため、フ
レームワークのメリットを活かした設計や、有用な外
部ライブラリを使った実装が出来ません。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
30
Internal Only
開発工数
アプリケーションを完成させるまでに必要な工数になります。この工
数にはインフラ周り(OSやミドルウェア、ランタイムのインストー
ル・セットアップ)も含みます。
サーバーレスアーキテクチャが圧倒的有利!!
IaaS PaaS サーバーレスアーキテクチャ
開発工数 △ ○ ◎
しかし、学習工数を軽視してはいけない。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
31
Internal Only
IaaS
ApacheやTomcatなどのミドルウェアの設計、構築、
フレームワークの選定、学習、性能検証など、開発に
は多岐にわたるタスクが必要となります。
サーバーレス
アーキテクチャ
開発工数
PaaS
IaaSほどではないにしても、フレームワークの選定
等、アプリケーションのレイヤーより上は、必要なタ
スクとなります。
サーバーレスアーキテクチャは「関数」と呼ばれる、
アプリケーションを実行する最小形態以外のレイヤー
はすべて抽象化されており、関数の中にコードを記述
するだけで、様々な処理を実行出来ます。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
32
Internal Only
学習工数を
考えなければならない
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
33
Internal Only
「ステートレス」という制約が
設計をややこしくする。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
34
Internal Only
ステートレスとは?
↓
サーバーが状態を持たないこと
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
35
Internal Only
アプリケーション
サーバー
Cookie保存ディレクトリ
Cookie名 値
sessid rjfm34od5
… …
セッションID 値
rjfm34od5 ntakei
… …HTTPリクエスト
リクエスト行 GET /messages HTTP/1.1
ヘッダ Cookie: sessid=rjfm34od5
メッセージボディ …
ステートレスでない場合
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
36
Internal Only
ステートレスでない場合 アプリケーション
サーバー
Cookie保存ディレクトリ
Cookie名 値
sessid rjfm34od5
… …
HTTPリクエスト
リクエスト行 GET /messages HTTP/1.1
ヘッダ Cookie: sessid=rjfm34od5
メッセージボディ …
アプリケーション
サーバー
セッションID 値
rjfm34od5 ntakei
… …
HTTPリクエスト
リクエスト行 GET /messages HTTP/1.1
ヘッダ Cookie: sessid=rjfm34od5
メッセージボディ …
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
37
Internal Only
アプリケーション
サーバー
Webストレージ
キー 値
token Skn3ls0…
… …
HTTPリクエスト
リクエスト行 GET /messages HTTP/1.1
ヘッダ Authorization: Bearer Skn3ls0…
メッセージボディ …
HTTPリクエスト
リクエスト行 GET /messages HTTP/1.1
ヘッダ Authorization: Bearer Skn3ls0…
メッセージボディ …
アプリケーション
サーバー
ステートレスの場合
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
38
Internal Only
JSON Web TokenやOpenID Connectなどの、クライアント側にス
テートを持つ認証方式にシフトする必要があります。
JSON Web TokenやOpenID Connectの学習、及びそれに付随する
アーキテクチャの習得が必要になります。
ステートレスであるということは、従来型のCookieを用いた認証は使
えません。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
39
Internal Only
費用
それぞれのサービスを稼働させるために必要な料金になります。
サーバーレスアーキテクチャが圧倒的有利!!
IaaS PaaS サーバーレスアーキテクチャ
費用 ○ ○ ◎
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
40
Internal Only
IaaS
アプリケーションが処理をしてようが、そうでなかろ
うが、仮想マシンが稼働している時間だけコストが発
生するので無駄が多い。
サーバーレス
アーキテクチャ
費用
PaaS
IaaSと同様です。
純粋に関数を実行した時間のみ課金されるので、非常
に無駄が少ないです。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
41
Internal Only
実際に費用を計算してみる
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
42
Internal Only
前提条件
単純にブラウザに「Hello World!!」と表示するプログラムを
300万回実行します。
リージョンは東日本とします。
時期は、2018年9月5日時点とします。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
43
Internal Only
IaaS
D2s_V3シリーズ(CPU2コア、メモリ8GB)を一ヶ月稼働させるとします。
合計:9,821円
仮想マシンは、時間単位の課金なので、どれだけハロワが実行されても、この料
金には変更はありません。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
44
Internal Only
サーバーレスアーキテクチャ
Azure Functionsの料金形態は少々複雑で、「リソース使用量」と「実行回数」に
よって算出した料金を足し合わせたものが最終的な料金となります。
<リソース使用量>
関数単体が消費するメモリ量に、関数の実行時間をかけ合わせ、それに一定の
レートをかけ合わせたものになります。
例えば、ハロワのAzure Functionsが一回の実行あたり128MBを消費し、1回あた
りの実行時間は2秒かかるとします。
2018年9月5日時点の東日本リージョンでは、1GBを消費する関数を1秒実行する
と、0.001792円の料金が発生します。
単位がGBなので、ハロワのAzure Functionsが一回の実行あたりに利用するメモ
リ128MBをGBに変換します。
128MB /1024MB = 0.125GB ・・・ ハロワ一回あたりのメモリ消費量
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
45
Internal Only
サーバーレスアーキテクチャ
0.125GB(ハロワ一回あたりのメモリ消費量) × 2秒(ハロワ一回あたりの実行時
間) × 300万回/月(ハロワ一月あたりの実行回数) = 750,0000GB秒 ・・・一月
でハロワが使用したメモリ量の合計
ただし、Azure Functionsには、嬉しいことに400,000GB秒/月の無料実行分がつ
いてきます。それを加味すると、その月で使用したメモリ量の合計は以下のとお
りになります。
750,0000GB秒 – 400,000GB秒 = 350,000GB秒・・・一月でハロワが使用し
たメモリ量の合計(無料実行分を引いたもの)
これに対して、先程ご説明もしましたが、1GBを消費する関数を1秒実行すると、
0.001792円の料金が発生します。つまり最終的な料金は以下になります。
350,000GB秒 × 0.001792円/GB秒 = 627.2円
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
46
Internal Only
サーバーレスアーキテクチャ
<実行回数>
こちらは単純に実行回数ごとに加算される料金になります。東日本リージョンで
は、2018年9月5日現在、100万回実行あたり22.40円です。300万回/月実行する
という今回の条件では料金は以下になります。
22.40円(100万回実行したときの料金) × 300万回/100万回 = 67.2円
リソース使用量と実行回数を合わせると、
694.4円
となります。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
47
Internal Only
9,821円
比較すると・・・
694.4円
IaaS
サーバーレス
アーキテクチャ
圧倒的にサーバーレスアーキテクチャの勝利!!
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
48
Internal Only
スケーラビリティ
スケールアウト(負荷に応じて、サーバーの台数を増やすことで処理能
力を向上させること)の柔軟性、つまり負荷に応じた必要な処理能力の
提供可否を示す指標となります。
サーバーレスアーキテクチャが圧倒的有利!!
IaaS PaaS サーバーレスアーキテクチャ
スケーラビリティ △ ○ ◎
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
49
Internal Only
IaaS
ロードバランサーの構築や、スケールアウトの設定な
どが必要の上、 スケールアウトするサーバーの台数
を10台と決めますと、どれだけ負荷が上がったとし
ても、10台以上はスケールアウトしません。
サーバーレス
アーキテクチャ
スケーラビリティ
PaaS
IaaSと同様です。 IaaSと比較しますと、スケールア
ウトの設定がある程度自動化されていることが多いで
すが、やはりスケールアウトするサーバーの台数に上
限があるのには変わりありません。
負荷に応じてほぼ無限にスケールアウトします。コン
テナ技術により、IaaSのように処理が発生していな
いときにもリソースを占有せず、効率的に使えるため
です。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
50
Internal Only
移植性
開発したアプリケーションを他のパブリッククラウドサービスやオン
プレミスに移行する際、どれだけ容易にそして確実に実施出来るかを
示す指標となります。
IaaSが圧倒的有利!!
IaaS PaaS サーバーレスアーキテクチャ
移植性 ◎ ○ △
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
51
Internal Only
IaaS
OSから上のレイヤーは全てシステム管理者が自由に
扱えますので、ネットワーク、ストレージ、ランタイ
ム、もちろんアプリケーションも全て、ほぼ忠実に移
植が可能です。
サーバーレス
アーキテクチャ
移植性
PaaS
IaaSと比べると、移行に制約が多くなります。例え
ば、移行先のパブリッククラウドサービスが提供する
PaaSに、移行元のアプリケーションが利用するラン
タイムが提供されてない場合などです。
サーバーレスアーキテクチャは、提供元クラウドベン
ダーの仕様に強く依存するため、他のクラウドベン
ダーへの移植はかなり困難です。
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
52
Internal Only
結局どんなときに
サーバーレスアーキテクチャを
使うの?
© SIOS Technology, Inc. All rights Reserved.
Advantages and disadvantages of
Serverless Architecture
53
Internal Only
予測できないような突発的なリクエストが
発生することがある
(イベントプロモーション時のWebサイトへのアクセス等)
セキュリティパッチ当てやライブラリの
バージョンアップなどの運用管理コストを
できるだけ減らしたい
パブリッククラウドのランニングコストを
できるだけ減らしたい
© SIOS Technology, Inc. All rights Reserved.
Usage Scenarios
54
Internal Only
© SIOS Technology, Inc. All rights Reserved.
Usage Scenarios
55
Internal Only
Single Page Application
OpenID Connect
Provider
API Management Azure
Functions
Azure App Service
CosmosDB
© SIOS Technology, Inc. All rights Reserved.
Usage Scenarios
56
Internal Only
Single Page Application
今まで3Tier(Web、App、DB)で構築されてたWeb
アプリケーションをサーバーレスアーキテクチャで
構築し、LessOps化を狙う。
目的
ビューはSPAを実現するJava Script Framework
「Angular」をBlob Storageに格納、認証基盤は
OpenID Connect,APIの認証は「API
Management」、アプリケーションロジックは
「Azure Functions」、データストアはNoSQLなDB
「CosmosDB」を使う。
実装
© SIOS Technology, Inc. All rights Reserved.
Usage Scenarios
57
Internal Only
スケーラブルなNoOpsバッチ基盤
Agent
ResponseQueue
RequestQueuepushRequest
Message
retrieveResponse
Message
Remote Service
retryTask
rollbackTask
State Store
Scheduler
Supervisor
・・・Azure Functions
・・・Azure Queue Storage
・・・Azure App Service WebJobs
・・・Cosmos DB
・・・Office365
© SIOS Technology, Inc. All rights Reserved.
Usage Scenarios
58
Internal Only
アプリケーション基盤にサーバーレスアーキテク
チャ、サービス間通信にキューを用いることにより、
NoOps化及びスケーラビリティの向上を狙う。
目的
アプリケーションロジックは「Azure Functions」、
キューは「Azure Queue Storage」、タスクの情報
を管理するために「CosmosDB」、リモートサービ
スへの通信処理に「App Service」を使う。
実装
スケーラブルなNoOpsバッチ基盤
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
59
Internal Only
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
60
Internal Only
What is Durable Functions?
FaaSのさらに先を行く新たなサーバーレスアーキテクチャ
Azure Functionsのオーケストレーションツールである。
あるAzure Functionsの結果を受け取って、
別のAzure Functionsを起動するといったことができる。
ワークフローやタイマー起動など
もっと複雑なこともできる!!
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
61
Internal Only
サーバーレスの限界
ステートレス
実行時間の制限
結果、複雑なアプリケーションを
作ることが出来ない
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
62
Internal Only
Durable Functionsが
解決!!
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
63
Internal Only
関数チェーン
nori
“Hello” + $x
Hello nori
$x + “. How are you?”
Hello nori.
How are
you?
関数チェーンは、特定の順序で関数のシーケンスを実行するパターンで
す。
sayHello関数 sayHowAreYou関数
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
64
Internal Only
関数チェーン(実装)
const df = require("durable-functions");
module.exports = df.orchestrator(function*(ctx) {
const x = yield ctx.df.callActivity(“sayHello”,”nori”);
const y = yield ctx.df.callActivity(“sayHowAreYou”, x);
return y;
});
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
65
Internal Only
ファンアウト/ファンイン
ファンアウト/ファンインは、複数の関数を並列に実行してすべてが完了
するまで待機するパターンです。
favoriteFruits関数
favorite
Vegetables関数
apple
tomato
I like an
tomat and
an apple
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
66
Internal Only
ファンアウト/ファンイン(実装)
const df = require("durable-functions");
module.exports = df.orchestrator(function* (ctx) {
const parallelTasks = [];
parallelTasks.push(ctx.df.callActivity("favoriteFruits"));
parallelTasks.push(ctx.df.callActivity("favoriteVegetables"));
const results = yield ctx.df.Task.all(parallelTasks);
ctx.log('I like an ' + results[0] + ' and an ' + results[1]);
});
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
67
Internal Only
人による操作
ある関数を実行してから、人による操作(承認行為など)などがなされてか
ら初めて次の関数を実行します。
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
68
Internal Only
人による操作(実装)
const df = require("durable-functions");
const moment = require('moment');
module.exports = df.orchestrator(function* (context) {
yield context.df.callActivity("gatherCode");
const expiration = moment.utc(context.df.currentUtcDateTime).add(90, 's');
const timeoutTask = context.df.createTimer(expiration.toDate());
const challengeResponseTask = context.df.waitForExternalEvent("Response");
const winner = yield context.df.Task.any([challengeResponseTask, timeoutTask]);
if (winner === challengeResponseTask) {
// Do Smething
}
});
© SIOS Technology, Inc. All rights Reserved.
Durable Functions
69
Internal Only
ユースケース(自動音声応答装置)
10桁のお得意様番号を
入力してください。
お得意様番号
お得意様番号
イベント送信
関数を起動
暗証番号を入
力して下さい。
Durable
Functions
イベント送信
関数を起動
メッセージ送信
① ③
④
⑤
⑥
⑦
⑧
暗証番号
②
⑨
暗証番号
⑩ ⑪
・・・
© SIOS Technology, Inc. All rights Reserved.
Alarm Clock by Durable Functions
70
Internal Only
© SIOS Technology, Inc. All rights Reserved.
Alarm Clock by Durable Functions
71
Internal Only
働き方改革
労働人口の減少に伴う経済力の低下が懸念されています。少ない労働
人工の中でも効率的に日本の経済を回す方法の模索が急務です。以下
の3つの視点で働き方が見直されています。
労働の
効率化
残業して長時間働くのではなく、労働の生産性を上げる
ことを目標とします。
労働の
多様化
ITやクラウドツールを活用し、オフィス以外で仕事が
できるようにします。テレワークとも呼ばれています。
労働の
一般化
労働市場に参加できる人を今まで以上に拡大します。
高齢者や育児中の女性などが労働しやすい環境を作り
ます。
© SIOS Technology, Inc. All rights Reserved.
Alarm Clock by Durable Functions
72
Internal Only
働き方改革
「働き方改革」により労働形態が多様化、出社時間もより自由になり
ます。日々変わる起床時間に対応した「確実に気持ちよく起きること
のできる」ことが必要となります。
そこで!!
サーバーレスアーキテクチャで目覚まし(二度寝
防止機能付き)を作りました。
© SIOS Technology, Inc. All rights Reserved.
Alarm Clock by Durable Functions
73
Internal Only
概要
指定した時刻になると、あらかじめ指定した電話番号に対して、10桁のコードを
プッシュ入力するようにアナウンスが流れる。
指定された10桁の番号をプッシュ入力する
正しい10桁のコードを入力すれば終わり。間違っていれば、一旦電話が切れて、
最初に戻り、再び10桁のコードをプッシュ入力するようにアナウンスが流れる。
© SIOS Technology, Inc. All rights Reserved.
Alarm Clock by Durable Functions
74
Internal Only
利用技術
Azure
Functions
Azureが提供するサーバーレスアーキテクチャであり、
オンデマンドでコードを実行でき、必要に応じてス
ケーリングするサービスです。
Durable
Functions
Azure Functionsのオーケストレーションサービスで
す。Azure Functionsの実行状態を管理し、ワークフ
ローのような処理を実現します。
Twilio
指定した電話番号にメッセージやSMSを送信したり、
ユーザーのプッシュ入力を受け取ってインタラクティ
ブな処理を行うクラウドAPIサービスです。
Open
JTalk
入力された日本語テキストに基づいて自由な音声を生
成するHMMテキスト音声合成システムです。電話で
流す音声メッセージの生成に使っています。
© SIOS Technology, Inc. All rights Reserved.
Alarm Clock by Durable Functions
75
Internal Only
シーケンス
Durable Functionsは、指定し
た時刻になると、メッセージ送
信関数を起動する。ここで、イ
ベントを受信するまで、
Durable Functionsは待機状態
となる。
Durable
Functions
③
メッセージ送信
関数
入力コード
送信関数
②
①
メッセージ送信関数は、
twilioに対して、指定し
た番号にメッセージを流
すよう、命令する。
twilioは以下のメッセー
ジを流す。
おはようございま
す!!次の指定した10
桁の番号を入力してね。
8395...
© SIOS Technology, Inc. All rights Reserved.
Alarm Clock by Durable Functions
76
Internal Only
シーケンス
Durable
Functions
①
メッセージ送信
関数
入力コード
送信関数
ユーザーは、メッセージ
で指定された10桁のコー
ドを入力する。
twilioは、ユーザーが入
力した10桁のコードを
クエリパラメータに付与
して、入力コードチェッ
ク関数をHTTPプロトコ
ルにて呼び出す。
②
入力したコード(1234...)
入力したコード(1234...)
© SIOS Technology, Inc. All rights Reserved.
Alarm Clock by Durable Functions
77
Internal Only
シーケンス
Durable
Functions
メッセージ送信
関数
入力コード
送信関数
入力コード送信関数は、入力したコード
とともに、Durable Functionsにイベン
ト(ユーザーのコード入力完了)を送信す
る。
入力したコード(1234...)
イベント
© SIOS Technology, Inc. All rights Reserved.
Alarm Clock by Durable Functions
78
Internal Only
シーケンス
Durable
Functions
メッセージ送信
関数
入力コード
送信関数
ユーザーが正しいコードを入力したかを
チェックする。もし間違っていれば、一
旦電話を切り、再度メッセージ送信関数
を起動し、ユーザーに電話をかけて、
コード入力のメッセージを送信する。
ユーザーが正しいコードを入力するまで、
延々とこのフローを繰り返す。
© SIOS Technology, Inc. All rights Reserved.
Serverless Architecture
79
本資料の内容は
以下のブログで公開しています。
技術ブログ「SIOS TECH.LAB」
https://tech-lab.sios.jp/
© SIOS Technology, Inc. All rights Reserved.
Serverless Architecture
80
■サーバーレスアーキテクチャ(Azure Functions)
多分わかりやすいサーバーレスアーキテクチャ入門
https://tech-lab.sios.jp/archives/10856
■JSON Web Token
JSON Web Tokenによる認証
https://tech-lab.sios.jp/archives/7576
■API Gateway
AzureのAPI Gateway(API Management)を用いてOpenID Connect Providerより発行
されたJWTを検証
https://tech-lab.sios.jp/archives/10606
■OpenID Connect
多分わかりやすいOpenID Connect
https://tech-lab.sios.jp/archives/8651
■Single Page Application
JavaScriptフレームワーク「Angular」による掲示板システム構築
https://tech-lab.sios.jp/archives/7553
関連ブログ
© SIOS Technology, Inc. All rights Reserved.
Serverless Architecture
81
Internal Only
ご清聴
ありがとう
ございました

More Related Content

What's hot

CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介OSSラボ株式会社
 
Alfresco day technical update
Alfresco day technical updateAlfresco day technical update
Alfresco day technical updateYoshi Aochi
 
20101112 tf web_hirookun_p
20101112 tf web_hirookun_p20101112 tf web_hirookun_p
20101112 tf web_hirookun_phirookun
 
Microservicesを実現するために、インフラエンジニアと開発者がすべきこと
Microservicesを実現するために、インフラエンジニアと開発者がすべきことMicroservicesを実現するために、インフラエンジニアと開発者がすべきこと
Microservicesを実現するために、インフラエンジニアと開発者がすべきことTakashi Abe
 
IBM Bluemix DevOps Services で Javaの Web アプリを開発する
IBM Bluemix DevOps Services で Javaの Web アプリを開発するIBM Bluemix DevOps Services で Javaの Web アプリを開発する
IBM Bluemix DevOps Services で Javaの Web アプリを開発するIppei SUZUKI
 
「今、ヨーロッパのオープンソースがアツい!」 クラウドの構成管理を自動化する基盤CMDBuild
「今、ヨーロッパのオープンソースがアツい!」クラウドの構成管理を自動化する基盤CMDBuild「今、ヨーロッパのオープンソースがアツい!」クラウドの構成管理を自動化する基盤CMDBuild
「今、ヨーロッパのオープンソースがアツい!」 クラウドの構成管理を自動化する基盤CMDBuildOSSラボ株式会社
 
Jbossとtomcatの性能を比べてみた
Jbossとtomcatの性能を比べてみたJbossとtomcatの性能を比べてみた
Jbossとtomcatの性能を比べてみたYuki Obara
 
企業のためのコンテンツプラットホーム Alfresco
企業のためのコンテンツプラットホーム Alfresco企業のためのコンテンツプラットホーム Alfresco
企業のためのコンテンツプラットホーム AlfrescoYoshi Aochi
 
.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談Kentaro Inomata
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説Daisuke Nishino
 
Open 棟梁 @ オープンソースカンファレンス 2015 Nagoya
Open 棟梁 @ オープンソースカンファレンス 2015 NagoyaOpen 棟梁 @ オープンソースカンファレンス 2015 Nagoya
Open 棟梁 @ オープンソースカンファレンス 2015 NagoyaDaisuke Nishino
 
Excelからのクラウドオーケストレーション
ExcelからのクラウドオーケストレーションExcelからのクラウドオーケストレーション
ExcelからのクラウドオーケストレーションOSSラボ株式会社
 
2.0~2.2~2.4~3.0 zabbixの進化を紐解く zabbix便利機能紹介-
2.0~2.2~2.4~3.0  zabbixの進化を紐解く  zabbix便利機能紹介-2.0~2.2~2.4~3.0  zabbixの進化を紐解く  zabbix便利機能紹介-
2.0~2.2~2.4~3.0 zabbixの進化を紐解く zabbix便利機能紹介-Daisuke Ikeda
 
System Center 2012, Endpoint Protectionの運用
System Center 2012, Endpoint Protectionの運用System Center 2012, Endpoint Protectionの運用
System Center 2012, Endpoint Protectionの運用Suguru Kunii
 
見せます! 半歩先のクラウド型アプリケーション開発
見せます! 半歩先のクラウド型アプリケーション開発見せます! 半歩先のクラウド型アプリケーション開発
見せます! 半歩先のクラウド型アプリケーション開発Tatsuki Manchu
 
Open棟梁 社会インフラシステム アーキテクチャの提案
Open棟梁 社会インフラシステム アーキテクチャの提案Open棟梁 社会インフラシステム アーキテクチャの提案
Open棟梁 社会インフラシステム アーキテクチャの提案Daisuke Nishino
 
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向SFDG ROOKIES
 

What's hot (20)

OpenQRM Intoroduction
OpenQRM IntoroductionOpenQRM Intoroduction
OpenQRM Intoroduction
 
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
 
Alfresco day technical update
Alfresco day technical updateAlfresco day technical update
Alfresco day technical update
 
20101112 tf web_hirookun_p
20101112 tf web_hirookun_p20101112 tf web_hirookun_p
20101112 tf web_hirookun_p
 
Microservicesを実現するために、インフラエンジニアと開発者がすべきこと
Microservicesを実現するために、インフラエンジニアと開発者がすべきことMicroservicesを実現するために、インフラエンジニアと開発者がすべきこと
Microservicesを実現するために、インフラエンジニアと開発者がすべきこと
 
IBM Bluemix DevOps Services で Javaの Web アプリを開発する
IBM Bluemix DevOps Services で Javaの Web アプリを開発するIBM Bluemix DevOps Services で Javaの Web アプリを開発する
IBM Bluemix DevOps Services で Javaの Web アプリを開発する
 
「今、ヨーロッパのオープンソースがアツい!」 クラウドの構成管理を自動化する基盤CMDBuild
「今、ヨーロッパのオープンソースがアツい!」クラウドの構成管理を自動化する基盤CMDBuild「今、ヨーロッパのオープンソースがアツい!」クラウドの構成管理を自動化する基盤CMDBuild
「今、ヨーロッパのオープンソースがアツい!」 クラウドの構成管理を自動化する基盤CMDBuild
 
Jbossとtomcatの性能を比べてみた
Jbossとtomcatの性能を比べてみたJbossとtomcatの性能を比べてみた
Jbossとtomcatの性能を比べてみた
 
企業のためのコンテンツプラットホーム Alfresco
企業のためのコンテンツプラットホーム Alfresco企業のためのコンテンツプラットホーム Alfresco
企業のためのコンテンツプラットホーム Alfresco
 
.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
Open 棟梁 @ オープンソースカンファレンス 2015 Nagoya
Open 棟梁 @ オープンソースカンファレンス 2015 NagoyaOpen 棟梁 @ オープンソースカンファレンス 2015 Nagoya
Open 棟梁 @ オープンソースカンファレンス 2015 Nagoya
 
Excelからのクラウドオーケストレーション
ExcelからのクラウドオーケストレーションExcelからのクラウドオーケストレーション
Excelからのクラウドオーケストレーション
 
2.0~2.2~2.4~3.0 zabbixの進化を紐解く zabbix便利機能紹介-
2.0~2.2~2.4~3.0  zabbixの進化を紐解く  zabbix便利機能紹介-2.0~2.2~2.4~3.0  zabbixの進化を紐解く  zabbix便利機能紹介-
2.0~2.2~2.4~3.0 zabbixの進化を紐解く zabbix便利機能紹介-
 
System Center 2012, Endpoint Protectionの運用
System Center 2012, Endpoint Protectionの運用System Center 2012, Endpoint Protectionの運用
System Center 2012, Endpoint Protectionの運用
 
Bluemixの基本を知る -全体像-
Bluemixの基本を知る -全体像-Bluemixの基本を知る -全体像-
Bluemixの基本を知る -全体像-
 
見せます! 半歩先のクラウド型アプリケーション開発
見せます! 半歩先のクラウド型アプリケーション開発見せます! 半歩先のクラウド型アプリケーション開発
見せます! 半歩先のクラウド型アプリケーション開発
 
CMDBuild Ready2Use紹介資料
CMDBuild Ready2Use紹介資料CMDBuild Ready2Use紹介資料
CMDBuild Ready2Use紹介資料
 
Open棟梁 社会インフラシステム アーキテクチャの提案
Open棟梁 社会インフラシステム アーキテクチャの提案Open棟梁 社会インフラシステム アーキテクチャの提案
Open棟梁 社会インフラシステム アーキテクチャの提案
 
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
 

Similar to サーバーレスアーキテクチャ(Azure Functions & Durable Functions)で働き方改革を推進

App service コトハジメ
App service コトハジメApp service コトハジメ
App service コトハジメTsubasa Yoshino
 
DBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - DelphixDBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - DelphixMasaya Ishikawa
 
ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1Satoshi Ueno
 
OpenWhisk Serverless への期待
OpenWhisk Serverless への期待OpenWhisk Serverless への期待
OpenWhisk Serverless への期待Hideaki Tokida
 
The Twelve Factorで実践するSaaS開発
The Twelve Factorで実践するSaaS開発The Twelve Factorで実践するSaaS開発
The Twelve Factorで実践するSaaS開発Atsushi Kojima
 
たった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とは
たった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とはたった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とは
たった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とはRina Owaki
 
楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由Rakuten Group, Inc.
 
インフラチームとCCoEの関係.pptx
インフラチームとCCoEの関係.pptxインフラチームとCCoEの関係.pptx
インフラチームとCCoEの関係.pptxssuser5c7ee4
 
Introduction to Visual Studio App Center
Introduction to Visual Studio App CenterIntroduction to Visual Studio App Center
Introduction to Visual Studio App CenterTakeshi Fujimoto
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops裕貴 荒井
 
Zabbixをもっと便利に!安全に!
Zabbixをもっと便利に!安全に!Zabbixをもっと便利に!安全に!
Zabbixをもっと便利に!安全に!Takashi Matsunaga
 
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...オラクルエンジニア通信
 
【XP祭り2010】 ライトニングトークス 「マイクロソフトとアジャイル
【XP祭り2010】 ライトニングトークス 「マイクロソフトとアジャイル【XP祭り2010】 ライトニングトークス 「マイクロソフトとアジャイル
【XP祭り2010】 ライトニングトークス 「マイクロソフトとアジャイル智治 長沢
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ真吾 吉田
 
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話しDevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話しAkira Nagata
 
Visual studio online and Agile
Visual studio online and AgileVisual studio online and Agile
Visual studio online and AgileKazushi Kamegawa
 
Essentials of container
Essentials of containerEssentials of container
Essentials of containerToru Makabe
 

Similar to サーバーレスアーキテクチャ(Azure Functions & Durable Functions)で働き方改革を推進 (20)

App service コトハジメ
App service コトハジメApp service コトハジメ
App service コトハジメ
 
DBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - DelphixDBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - Delphix
 
ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1
 
OpenWhisk Serverless への期待
OpenWhisk Serverless への期待OpenWhisk Serverless への期待
OpenWhisk Serverless への期待
 
The Twelve Factorで実践するSaaS開発
The Twelve Factorで実践するSaaS開発The Twelve Factorで実践するSaaS開発
The Twelve Factorで実践するSaaS開発
 
Azure <3 Openness
Azure <3 OpennessAzure <3 Openness
Azure <3 Openness
 
たった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とは
たった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とはたった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とは
たった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とは
 
楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由
 
インフラチームとCCoEの関係.pptx
インフラチームとCCoEの関係.pptxインフラチームとCCoEの関係.pptx
インフラチームとCCoEの関係.pptx
 
Introduction to Visual Studio App Center
Introduction to Visual Studio App CenterIntroduction to Visual Studio App Center
Introduction to Visual Studio App Center
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
 
Zabbixをもっと便利に!安全に!
Zabbixをもっと便利に!安全に!Zabbixをもっと便利に!安全に!
Zabbixをもっと便利に!安全に!
 
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
 
【XP祭り2010】 ライトニングトークス 「マイクロソフトとアジャイル
【XP祭り2010】 ライトニングトークス 「マイクロソフトとアジャイル【XP祭り2010】 ライトニングトークス 「マイクロソフトとアジャイル
【XP祭り2010】 ライトニングトークス 「マイクロソフトとアジャイル
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
俺とHashiCorp
俺とHashiCorp俺とHashiCorp
俺とHashiCorp
 
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話しDevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
 
[Japan Tech summit 2017] CLD 021
[Japan Tech summit 2017]  CLD 021[Japan Tech summit 2017]  CLD 021
[Japan Tech summit 2017] CLD 021
 
Visual studio online and Agile
Visual studio online and AgileVisual studio online and Agile
Visual studio online and Agile
 
Essentials of container
Essentials of containerEssentials of container
Essentials of container
 

Recently uploaded

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

サーバーレスアーキテクチャ(Azure Functions & Durable Functions)で働き方改革を推進

  • 1. © SIOS Technology, Inc. All rights Reserved. サーバーレスアーキテクチャで 働き方改革を推進 Work Style Reform by Serverless Architecture 技術部 2018年11月16日 武井 宜行 サイオステクノロジー株式会社
  • 2. © SIOS Technology, Inc. All rights Reserved. About me 2 Internal Only
  • 3. © SIOS Technology, Inc. All rights Reserved. About me 3 Internal Only about me Noriyuki TAKEI 武井 宜行 Information • サイオステクノロジー株式会社 • クラウドネイティブアプリケーション • 千葉県在住 Favorites • Azure • Squash • Sweets blog https://tech-lab.sios.jp/
  • 4. © SIOS Technology, Inc. All rights Reserved. What is Serverless Architecture? 4 Internal Only
  • 5. © SIOS Technology, Inc. All rights Reserved. What is Serverless Architecture? 5 Internal Only アプリケーションを実行するための実行基盤で、以下の3つの特徴があります。 サーバーが不要!! 必要に応じてスケール!! 使った分だけ課金!! What is Serverless?
  • 6. © SIOS Technology, Inc. All rights Reserved. What is Serverless Architecture? 6 Internal Only サーバーが不要!! before • 仮想マシン作成 • OSインストール • ミドルウェア(Apache 等)インストール • 性能検証 • コーディング after ブラウザ上、もしくは専 用の開発環境でコードを 入力して保存するだ け!! アプリ開発の手間を大幅に削減!!
  • 7. © SIOS Technology, Inc. All rights Reserved. What is Serverless Architecture? 7 Internal Only 必要に応じてスケール!! before • 負荷テストツール用意 • テストシナリオ作成 • テスト実施 • チューニング • 結果報告書作成 after 特別な設定は不要!!不 可に応じて無限にスケー ル!! 負荷に応じて無限にスケールします。
  • 8. © SIOS Technology, Inc. All rights Reserved. What is Serverless Architecture? 8 Internal Only 使った分だけ課金!! before 仮想マシンの場合、アプリ ケーションが動いてなくて も、仮想マシンが起動して いる時間だけ課金が発生す る。 after アプリケーションが動い た時間だけしか課金され ないので、仮想マシンと 比べて料金が抑えられる。 使った分だけ課金します。
  • 9. © SIOS Technology, Inc. All rights Reserved. What is Serverless Architecture? 9 Internal Only サーバーレスアーキテクチャは システム開発における 大きな変革をもたらします。
  • 10. © SIOS Technology, Inc. All rights Reserved. What is Serverless Architecture? 10 Internal Only Lift & Shift オンプレミス環境 ・・・ クラウド環境 ・・・ 物理マシン 仮想マシン
  • 11. © SIOS Technology, Inc. All rights Reserved. What is Serverless Architecture? 11 Internal Only Cloud Native オンプレミス環境 ・・・ クラウド環境 物理マシン API Management Azure Functions CosmosDB
  • 12. © SIOS Technology, Inc. All rights Reserved. What is Serverless Architecture? 12 Internal Only Lift & Shift Cloud Native オンプレミスの物理マシンを、そのままクラウド上の 仮想マシンに移行します。OS、ミドルウェア、アプ リケーションをほぼそのままの形で移植します。 クラウド特有の機能を用いてアプリケーションを構成 します。サーバーレスなNoOps環境(パッチ当てやOS、 ミドルウェアのアップデート不要)などによるクラウ ドの恩恵を十分享受できる方式です。
  • 13. © SIOS Technology, Inc. All rights Reserved. What is Serverless Architecture? 13 Internal Only サーバーレスアーキテクチャはアプリケーションを Cloud Nativeで開発するための新たな手法 今後はCloud Nativeなアプリケーションが 主流になる システム設計は今までとは大きな発想の転換が 必要となる
  • 14. © SIOS Technology, Inc. All rights Reserved. The difference between IaaS & PaaS & FaaS 14 Internal Only
  • 15. © SIOS Technology, Inc. All rights Reserved. The difference between IaaS & PaaS & FaaS 15 Internal Only OS(LinuxやWindows) Runtime(JavaやPHPなどのアプリケーション実行環境) Middleware(ApacheやTomcatなど) Application Framework(SpringやCakePHPなど) Application Component群 Class Method public void hello() { system.out.println(“Hello!!”); } IaaS OSインストール済みの基盤 OSより上のレイヤー全てをシステ ム管理者が管理 OSのセキュリティアップデートや、 ミドルウェア、アプリケーションフ レームワークへの脆弱性対応なども、 当然システム管理者の責任 自由度は高く、どんな言語やミドル ウェアでも実行可能
  • 16. © SIOS Technology, Inc. All rights Reserved. The difference between IaaS & PaaS & FaaS 16 Internal Only IaaSの開発イメージ 仮想マシンを作成する。 JavaやPHPなどのランタイムをインストールする。 ApacheやTomcatなどのミドルウェアをインストールする。 SpringやCakePHPなどのフレームワーク上でアプリケーションを開発する。 アプリケーションをビルドする。 ビルドしたアプリケーションをミドルウェア上にデプロイする。
  • 17. © SIOS Technology, Inc. All rights Reserved. The difference between IaaS & PaaS & FaaS 17 Internal Only OS(LinuxやWindows) Runtime(JavaやPHPなどのアプリケーション実行環境) Middleware(ApacheやTomcatなど) Application Framework(SpringやCakePHPなど) Application Component群 Class Method public void hello() { system.out.println(“Hello!!”); } PaaS IaaSにおいて、システム管理者の 責任範囲であった「OS」 「Runtime」「Middleware」が、 パブリッククラウドの責任範囲 OSのセキュリティアップデートや、 ミドルウェアの脆弱性対応などは、 パブリッククラウド側で実施 アプリケーションフレームワーク (SpringやCakePHP等)で脆弱性が 発覚した場合は、システム管理者の 責任 自由度はIaaSに比べると低く、パ ブリッククラウド側で提供されてい る言語のみを選択可能
  • 18. © SIOS Technology, Inc. All rights Reserved. The difference between IaaS & PaaS & FaaS 18 Internal Only PaaSの開発イメージ SpringやCakePHPなどのフレームワーク上でアプリケーションを開発する。 アプリケーションをビルドする。 ビルドしたアプリケーションをミドルウェア上にデプロイする。 ZIPなどの形式で圧縮して、パブリッククラウドの管理画面からアップロードする。
  • 19. © SIOS Technology, Inc. All rights Reserved. The difference between IaaS & PaaS & FaaS 19 Internal Only OS(LinuxやWindows) Runtime(JavaやPHPなどのアプリケーション実行環境) Middleware(ApacheやTomcatなど) Application Framework(SpringやCakePHPなど) Application Component群 Class Method public void hello() { system.out.println(“Hello!!”); } サーバーレスアーキテクチャ OSやランタイム、ミドルウェアは もちろんのこと、アプリケーション フレームワークさえも不要 実行するコードのみを記載すれば、 プログラムが実行出来る OSのセキュリティアップデートや、 ミドルウェア、アプリケーションフ レームワークへの脆弱性対応は不要
  • 20. © SIOS Technology, Inc. All rights Reserved. The difference between IaaS & PaaS & FaaS 20 Internal Only たったこれだけ!! サーバーレスアーキテクチャの開発イメージ パブリッククラウドのポータルにアクセスする。 コードを書く。
  • 21. © SIOS Technology, Inc. All rights Reserved. The difference between IaaS & PaaS & FaaS 21 Internal Only IaaS PaaS サーバーレスアーキテクチャ 並べてみると一目瞭然 IaaS→PaaS→サーバーレスアーキテクチャの 順に従って、管理範囲が少なくなります。
  • 22. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 22 Internal Only
  • 23. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 23 Internal Only サーバーレスアーキテクチャは 銀の弾丸ではありません。
  • 24. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 24 Internal Only ステートレス 様々な制約 設計の難易度 移植性
  • 25. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 25 Internal Only IaaS PaaS サーバーレス アーキテクチャ 保守性 △ ○ ◎ 自由度 ◎ ○ △ 開発工数 △ ○ ◎ 費用 ○ ○ ◎ スケーラビリティ △ ○ ◎ 移植性 ◎ ○ △
  • 26. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 26 Internal Only IaaS PaaS サーバーレスアーキテクチャ 保守性 △ ○ ◎ 保守性 保守性とは、サービス開始後、アプリケーション正常稼働の維持のた めに発生する作業の効率性を定めた指標です。 その作業は、 OSのセキュリティパッチ適用、アプリケーションフレー ムワークやライブラリの脆弱性対応、バージョンアップ等、その作業 内容は多岐にわたり、しかも不定期に発生します。 サーバーレスアーキテクチャが有利!!
  • 27. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 27 Internal Only IaaS OSのレイヤーからシステム管理者が面倒を見なけれ ばならず、OSのセキィリティパッチやアプリケー ションの脆弱性対応はシステム管理者自身が実施する 必要があります。 サーバーレス アーキテクチャ 保守性 PaaS アプリケーションのレイヤーより下位の層はパブリッ ククラウドの責任範囲ですので、OS周りの対応は不 要ですが、アプリケーションのレイヤーのメンテナン スは、必要です。 インフラのレイヤーは全て抽象化されます。つまり、 今までシステム管理者を煩わせていたセキュリティ パッチ当てやライブラリのバージョンアップなどは一 切気にせず、コーディングのみに集中できます。
  • 28. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 28 Internal Only 自由度 システムを構築する際に選択するランタイム(開発言語)、ネットワー ク構成、ストレージなどをどの程度自由に選択できるかという指標で す。 IaaSが有利。 IaaS PaaS サーバーレスアーキテクチャ 自由度 ◎ ○ △
  • 29. © SIOS Technology, Inc. All rights Reserved. サーバーレスアーキテクチャの メリット・デメリット 29 Internal Only IaaS 開発言語は自由にインストール可能、接続するスト レージのプロトコルもCIFS、NFS、WebDav、iSCSI とオンプレミス上のサーバーとほぼ同じ自由度で構築 が可能です。 サーバーレス アーキテクチャ 自由度 PaaS システム管理者が扱えるのはランタイム(開発言語)よ り上のレイヤーになりますので、IaaSほどの自由度 はありません。実行出来るランタイムは、パブリック クラウドが提供するものに限られます。 ランタイムはある程度自由に選択は可能ですが、コー ドの実行形態が「関数」という最小単位のため、フ レームワークのメリットを活かした設計や、有用な外 部ライブラリを使った実装が出来ません。
  • 30. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 30 Internal Only 開発工数 アプリケーションを完成させるまでに必要な工数になります。この工 数にはインフラ周り(OSやミドルウェア、ランタイムのインストー ル・セットアップ)も含みます。 サーバーレスアーキテクチャが圧倒的有利!! IaaS PaaS サーバーレスアーキテクチャ 開発工数 △ ○ ◎ しかし、学習工数を軽視してはいけない。
  • 31. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 31 Internal Only IaaS ApacheやTomcatなどのミドルウェアの設計、構築、 フレームワークの選定、学習、性能検証など、開発に は多岐にわたるタスクが必要となります。 サーバーレス アーキテクチャ 開発工数 PaaS IaaSほどではないにしても、フレームワークの選定 等、アプリケーションのレイヤーより上は、必要なタ スクとなります。 サーバーレスアーキテクチャは「関数」と呼ばれる、 アプリケーションを実行する最小形態以外のレイヤー はすべて抽象化されており、関数の中にコードを記述 するだけで、様々な処理を実行出来ます。
  • 32. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 32 Internal Only 学習工数を 考えなければならない
  • 33. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 33 Internal Only 「ステートレス」という制約が 設計をややこしくする。
  • 34. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 34 Internal Only ステートレスとは? ↓ サーバーが状態を持たないこと
  • 35. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 35 Internal Only アプリケーション サーバー Cookie保存ディレクトリ Cookie名 値 sessid rjfm34od5 … … セッションID 値 rjfm34od5 ntakei … …HTTPリクエスト リクエスト行 GET /messages HTTP/1.1 ヘッダ Cookie: sessid=rjfm34od5 メッセージボディ … ステートレスでない場合
  • 36. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 36 Internal Only ステートレスでない場合 アプリケーション サーバー Cookie保存ディレクトリ Cookie名 値 sessid rjfm34od5 … … HTTPリクエスト リクエスト行 GET /messages HTTP/1.1 ヘッダ Cookie: sessid=rjfm34od5 メッセージボディ … アプリケーション サーバー セッションID 値 rjfm34od5 ntakei … … HTTPリクエスト リクエスト行 GET /messages HTTP/1.1 ヘッダ Cookie: sessid=rjfm34od5 メッセージボディ …
  • 37. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 37 Internal Only アプリケーション サーバー Webストレージ キー 値 token Skn3ls0… … … HTTPリクエスト リクエスト行 GET /messages HTTP/1.1 ヘッダ Authorization: Bearer Skn3ls0… メッセージボディ … HTTPリクエスト リクエスト行 GET /messages HTTP/1.1 ヘッダ Authorization: Bearer Skn3ls0… メッセージボディ … アプリケーション サーバー ステートレスの場合
  • 38. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 38 Internal Only JSON Web TokenやOpenID Connectなどの、クライアント側にス テートを持つ認証方式にシフトする必要があります。 JSON Web TokenやOpenID Connectの学習、及びそれに付随する アーキテクチャの習得が必要になります。 ステートレスであるということは、従来型のCookieを用いた認証は使 えません。
  • 39. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 39 Internal Only 費用 それぞれのサービスを稼働させるために必要な料金になります。 サーバーレスアーキテクチャが圧倒的有利!! IaaS PaaS サーバーレスアーキテクチャ 費用 ○ ○ ◎
  • 40. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 40 Internal Only IaaS アプリケーションが処理をしてようが、そうでなかろ うが、仮想マシンが稼働している時間だけコストが発 生するので無駄が多い。 サーバーレス アーキテクチャ 費用 PaaS IaaSと同様です。 純粋に関数を実行した時間のみ課金されるので、非常 に無駄が少ないです。
  • 41. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 41 Internal Only 実際に費用を計算してみる
  • 42. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 42 Internal Only 前提条件 単純にブラウザに「Hello World!!」と表示するプログラムを 300万回実行します。 リージョンは東日本とします。 時期は、2018年9月5日時点とします。
  • 43. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 43 Internal Only IaaS D2s_V3シリーズ(CPU2コア、メモリ8GB)を一ヶ月稼働させるとします。 合計:9,821円 仮想マシンは、時間単位の課金なので、どれだけハロワが実行されても、この料 金には変更はありません。
  • 44. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 44 Internal Only サーバーレスアーキテクチャ Azure Functionsの料金形態は少々複雑で、「リソース使用量」と「実行回数」に よって算出した料金を足し合わせたものが最終的な料金となります。 <リソース使用量> 関数単体が消費するメモリ量に、関数の実行時間をかけ合わせ、それに一定の レートをかけ合わせたものになります。 例えば、ハロワのAzure Functionsが一回の実行あたり128MBを消費し、1回あた りの実行時間は2秒かかるとします。 2018年9月5日時点の東日本リージョンでは、1GBを消費する関数を1秒実行する と、0.001792円の料金が発生します。 単位がGBなので、ハロワのAzure Functionsが一回の実行あたりに利用するメモ リ128MBをGBに変換します。 128MB /1024MB = 0.125GB ・・・ ハロワ一回あたりのメモリ消費量
  • 45. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 45 Internal Only サーバーレスアーキテクチャ 0.125GB(ハロワ一回あたりのメモリ消費量) × 2秒(ハロワ一回あたりの実行時 間) × 300万回/月(ハロワ一月あたりの実行回数) = 750,0000GB秒 ・・・一月 でハロワが使用したメモリ量の合計 ただし、Azure Functionsには、嬉しいことに400,000GB秒/月の無料実行分がつ いてきます。それを加味すると、その月で使用したメモリ量の合計は以下のとお りになります。 750,0000GB秒 – 400,000GB秒 = 350,000GB秒・・・一月でハロワが使用し たメモリ量の合計(無料実行分を引いたもの) これに対して、先程ご説明もしましたが、1GBを消費する関数を1秒実行すると、 0.001792円の料金が発生します。つまり最終的な料金は以下になります。 350,000GB秒 × 0.001792円/GB秒 = 627.2円
  • 46. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 46 Internal Only サーバーレスアーキテクチャ <実行回数> こちらは単純に実行回数ごとに加算される料金になります。東日本リージョンで は、2018年9月5日現在、100万回実行あたり22.40円です。300万回/月実行する という今回の条件では料金は以下になります。 22.40円(100万回実行したときの料金) × 300万回/100万回 = 67.2円 リソース使用量と実行回数を合わせると、 694.4円 となります。
  • 47. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 47 Internal Only 9,821円 比較すると・・・ 694.4円 IaaS サーバーレス アーキテクチャ 圧倒的にサーバーレスアーキテクチャの勝利!!
  • 48. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 48 Internal Only スケーラビリティ スケールアウト(負荷に応じて、サーバーの台数を増やすことで処理能 力を向上させること)の柔軟性、つまり負荷に応じた必要な処理能力の 提供可否を示す指標となります。 サーバーレスアーキテクチャが圧倒的有利!! IaaS PaaS サーバーレスアーキテクチャ スケーラビリティ △ ○ ◎
  • 49. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 49 Internal Only IaaS ロードバランサーの構築や、スケールアウトの設定な どが必要の上、 スケールアウトするサーバーの台数 を10台と決めますと、どれだけ負荷が上がったとし ても、10台以上はスケールアウトしません。 サーバーレス アーキテクチャ スケーラビリティ PaaS IaaSと同様です。 IaaSと比較しますと、スケールア ウトの設定がある程度自動化されていることが多いで すが、やはりスケールアウトするサーバーの台数に上 限があるのには変わりありません。 負荷に応じてほぼ無限にスケールアウトします。コン テナ技術により、IaaSのように処理が発生していな いときにもリソースを占有せず、効率的に使えるため です。
  • 50. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 50 Internal Only 移植性 開発したアプリケーションを他のパブリッククラウドサービスやオン プレミスに移行する際、どれだけ容易にそして確実に実施出来るかを 示す指標となります。 IaaSが圧倒的有利!! IaaS PaaS サーバーレスアーキテクチャ 移植性 ◎ ○ △
  • 51. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 51 Internal Only IaaS OSから上のレイヤーは全てシステム管理者が自由に 扱えますので、ネットワーク、ストレージ、ランタイ ム、もちろんアプリケーションも全て、ほぼ忠実に移 植が可能です。 サーバーレス アーキテクチャ 移植性 PaaS IaaSと比べると、移行に制約が多くなります。例え ば、移行先のパブリッククラウドサービスが提供する PaaSに、移行元のアプリケーションが利用するラン タイムが提供されてない場合などです。 サーバーレスアーキテクチャは、提供元クラウドベン ダーの仕様に強く依存するため、他のクラウドベン ダーへの移植はかなり困難です。
  • 52. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 52 Internal Only 結局どんなときに サーバーレスアーキテクチャを 使うの?
  • 53. © SIOS Technology, Inc. All rights Reserved. Advantages and disadvantages of Serverless Architecture 53 Internal Only 予測できないような突発的なリクエストが 発生することがある (イベントプロモーション時のWebサイトへのアクセス等) セキュリティパッチ当てやライブラリの バージョンアップなどの運用管理コストを できるだけ減らしたい パブリッククラウドのランニングコストを できるだけ減らしたい
  • 54. © SIOS Technology, Inc. All rights Reserved. Usage Scenarios 54 Internal Only
  • 55. © SIOS Technology, Inc. All rights Reserved. Usage Scenarios 55 Internal Only Single Page Application OpenID Connect Provider API Management Azure Functions Azure App Service CosmosDB
  • 56. © SIOS Technology, Inc. All rights Reserved. Usage Scenarios 56 Internal Only Single Page Application 今まで3Tier(Web、App、DB)で構築されてたWeb アプリケーションをサーバーレスアーキテクチャで 構築し、LessOps化を狙う。 目的 ビューはSPAを実現するJava Script Framework 「Angular」をBlob Storageに格納、認証基盤は OpenID Connect,APIの認証は「API Management」、アプリケーションロジックは 「Azure Functions」、データストアはNoSQLなDB 「CosmosDB」を使う。 実装
  • 57. © SIOS Technology, Inc. All rights Reserved. Usage Scenarios 57 Internal Only スケーラブルなNoOpsバッチ基盤 Agent ResponseQueue RequestQueuepushRequest Message retrieveResponse Message Remote Service retryTask rollbackTask State Store Scheduler Supervisor ・・・Azure Functions ・・・Azure Queue Storage ・・・Azure App Service WebJobs ・・・Cosmos DB ・・・Office365
  • 58. © SIOS Technology, Inc. All rights Reserved. Usage Scenarios 58 Internal Only アプリケーション基盤にサーバーレスアーキテク チャ、サービス間通信にキューを用いることにより、 NoOps化及びスケーラビリティの向上を狙う。 目的 アプリケーションロジックは「Azure Functions」、 キューは「Azure Queue Storage」、タスクの情報 を管理するために「CosmosDB」、リモートサービ スへの通信処理に「App Service」を使う。 実装 スケーラブルなNoOpsバッチ基盤
  • 59. © SIOS Technology, Inc. All rights Reserved. Durable Functions 59 Internal Only
  • 60. © SIOS Technology, Inc. All rights Reserved. Durable Functions 60 Internal Only What is Durable Functions? FaaSのさらに先を行く新たなサーバーレスアーキテクチャ Azure Functionsのオーケストレーションツールである。 あるAzure Functionsの結果を受け取って、 別のAzure Functionsを起動するといったことができる。 ワークフローやタイマー起動など もっと複雑なこともできる!!
  • 61. © SIOS Technology, Inc. All rights Reserved. Durable Functions 61 Internal Only サーバーレスの限界 ステートレス 実行時間の制限 結果、複雑なアプリケーションを 作ることが出来ない
  • 62. © SIOS Technology, Inc. All rights Reserved. Durable Functions 62 Internal Only Durable Functionsが 解決!!
  • 63. © SIOS Technology, Inc. All rights Reserved. Durable Functions 63 Internal Only 関数チェーン nori “Hello” + $x Hello nori $x + “. How are you?” Hello nori. How are you? 関数チェーンは、特定の順序で関数のシーケンスを実行するパターンで す。 sayHello関数 sayHowAreYou関数
  • 64. © SIOS Technology, Inc. All rights Reserved. Durable Functions 64 Internal Only 関数チェーン(実装) const df = require("durable-functions"); module.exports = df.orchestrator(function*(ctx) { const x = yield ctx.df.callActivity(“sayHello”,”nori”); const y = yield ctx.df.callActivity(“sayHowAreYou”, x); return y; });
  • 65. © SIOS Technology, Inc. All rights Reserved. Durable Functions 65 Internal Only ファンアウト/ファンイン ファンアウト/ファンインは、複数の関数を並列に実行してすべてが完了 するまで待機するパターンです。 favoriteFruits関数 favorite Vegetables関数 apple tomato I like an tomat and an apple
  • 66. © SIOS Technology, Inc. All rights Reserved. Durable Functions 66 Internal Only ファンアウト/ファンイン(実装) const df = require("durable-functions"); module.exports = df.orchestrator(function* (ctx) { const parallelTasks = []; parallelTasks.push(ctx.df.callActivity("favoriteFruits")); parallelTasks.push(ctx.df.callActivity("favoriteVegetables")); const results = yield ctx.df.Task.all(parallelTasks); ctx.log('I like an ' + results[0] + ' and an ' + results[1]); });
  • 67. © SIOS Technology, Inc. All rights Reserved. Durable Functions 67 Internal Only 人による操作 ある関数を実行してから、人による操作(承認行為など)などがなされてか ら初めて次の関数を実行します。
  • 68. © SIOS Technology, Inc. All rights Reserved. Durable Functions 68 Internal Only 人による操作(実装) const df = require("durable-functions"); const moment = require('moment'); module.exports = df.orchestrator(function* (context) { yield context.df.callActivity("gatherCode"); const expiration = moment.utc(context.df.currentUtcDateTime).add(90, 's'); const timeoutTask = context.df.createTimer(expiration.toDate()); const challengeResponseTask = context.df.waitForExternalEvent("Response"); const winner = yield context.df.Task.any([challengeResponseTask, timeoutTask]); if (winner === challengeResponseTask) { // Do Smething } });
  • 69. © SIOS Technology, Inc. All rights Reserved. Durable Functions 69 Internal Only ユースケース(自動音声応答装置) 10桁のお得意様番号を 入力してください。 お得意様番号 お得意様番号 イベント送信 関数を起動 暗証番号を入 力して下さい。 Durable Functions イベント送信 関数を起動 メッセージ送信 ① ③ ④ ⑤ ⑥ ⑦ ⑧ 暗証番号 ② ⑨ 暗証番号 ⑩ ⑪ ・・・
  • 70. © SIOS Technology, Inc. All rights Reserved. Alarm Clock by Durable Functions 70 Internal Only
  • 71. © SIOS Technology, Inc. All rights Reserved. Alarm Clock by Durable Functions 71 Internal Only 働き方改革 労働人口の減少に伴う経済力の低下が懸念されています。少ない労働 人工の中でも効率的に日本の経済を回す方法の模索が急務です。以下 の3つの視点で働き方が見直されています。 労働の 効率化 残業して長時間働くのではなく、労働の生産性を上げる ことを目標とします。 労働の 多様化 ITやクラウドツールを活用し、オフィス以外で仕事が できるようにします。テレワークとも呼ばれています。 労働の 一般化 労働市場に参加できる人を今まで以上に拡大します。 高齢者や育児中の女性などが労働しやすい環境を作り ます。
  • 72. © SIOS Technology, Inc. All rights Reserved. Alarm Clock by Durable Functions 72 Internal Only 働き方改革 「働き方改革」により労働形態が多様化、出社時間もより自由になり ます。日々変わる起床時間に対応した「確実に気持ちよく起きること のできる」ことが必要となります。 そこで!! サーバーレスアーキテクチャで目覚まし(二度寝 防止機能付き)を作りました。
  • 73. © SIOS Technology, Inc. All rights Reserved. Alarm Clock by Durable Functions 73 Internal Only 概要 指定した時刻になると、あらかじめ指定した電話番号に対して、10桁のコードを プッシュ入力するようにアナウンスが流れる。 指定された10桁の番号をプッシュ入力する 正しい10桁のコードを入力すれば終わり。間違っていれば、一旦電話が切れて、 最初に戻り、再び10桁のコードをプッシュ入力するようにアナウンスが流れる。
  • 74. © SIOS Technology, Inc. All rights Reserved. Alarm Clock by Durable Functions 74 Internal Only 利用技術 Azure Functions Azureが提供するサーバーレスアーキテクチャであり、 オンデマンドでコードを実行でき、必要に応じてス ケーリングするサービスです。 Durable Functions Azure Functionsのオーケストレーションサービスで す。Azure Functionsの実行状態を管理し、ワークフ ローのような処理を実現します。 Twilio 指定した電話番号にメッセージやSMSを送信したり、 ユーザーのプッシュ入力を受け取ってインタラクティ ブな処理を行うクラウドAPIサービスです。 Open JTalk 入力された日本語テキストに基づいて自由な音声を生 成するHMMテキスト音声合成システムです。電話で 流す音声メッセージの生成に使っています。
  • 75. © SIOS Technology, Inc. All rights Reserved. Alarm Clock by Durable Functions 75 Internal Only シーケンス Durable Functionsは、指定し た時刻になると、メッセージ送 信関数を起動する。ここで、イ ベントを受信するまで、 Durable Functionsは待機状態 となる。 Durable Functions ③ メッセージ送信 関数 入力コード 送信関数 ② ① メッセージ送信関数は、 twilioに対して、指定し た番号にメッセージを流 すよう、命令する。 twilioは以下のメッセー ジを流す。 おはようございま す!!次の指定した10 桁の番号を入力してね。 8395...
  • 76. © SIOS Technology, Inc. All rights Reserved. Alarm Clock by Durable Functions 76 Internal Only シーケンス Durable Functions ① メッセージ送信 関数 入力コード 送信関数 ユーザーは、メッセージ で指定された10桁のコー ドを入力する。 twilioは、ユーザーが入 力した10桁のコードを クエリパラメータに付与 して、入力コードチェッ ク関数をHTTPプロトコ ルにて呼び出す。 ② 入力したコード(1234...) 入力したコード(1234...)
  • 77. © SIOS Technology, Inc. All rights Reserved. Alarm Clock by Durable Functions 77 Internal Only シーケンス Durable Functions メッセージ送信 関数 入力コード 送信関数 入力コード送信関数は、入力したコード とともに、Durable Functionsにイベン ト(ユーザーのコード入力完了)を送信す る。 入力したコード(1234...) イベント
  • 78. © SIOS Technology, Inc. All rights Reserved. Alarm Clock by Durable Functions 78 Internal Only シーケンス Durable Functions メッセージ送信 関数 入力コード 送信関数 ユーザーが正しいコードを入力したかを チェックする。もし間違っていれば、一 旦電話を切り、再度メッセージ送信関数 を起動し、ユーザーに電話をかけて、 コード入力のメッセージを送信する。 ユーザーが正しいコードを入力するまで、 延々とこのフローを繰り返す。
  • 79. © SIOS Technology, Inc. All rights Reserved. Serverless Architecture 79 本資料の内容は 以下のブログで公開しています。 技術ブログ「SIOS TECH.LAB」 https://tech-lab.sios.jp/
  • 80. © SIOS Technology, Inc. All rights Reserved. Serverless Architecture 80 ■サーバーレスアーキテクチャ(Azure Functions) 多分わかりやすいサーバーレスアーキテクチャ入門 https://tech-lab.sios.jp/archives/10856 ■JSON Web Token JSON Web Tokenによる認証 https://tech-lab.sios.jp/archives/7576 ■API Gateway AzureのAPI Gateway(API Management)を用いてOpenID Connect Providerより発行 されたJWTを検証 https://tech-lab.sios.jp/archives/10606 ■OpenID Connect 多分わかりやすいOpenID Connect https://tech-lab.sios.jp/archives/8651 ■Single Page Application JavaScriptフレームワーク「Angular」による掲示板システム構築 https://tech-lab.sios.jp/archives/7553 関連ブログ
  • 81. © SIOS Technology, Inc. All rights Reserved. Serverless Architecture 81 Internal Only ご清聴 ありがとう ございました