deconstruction of serverless and blockchain
TRANSCRIPT
Serverless and BlockchainDeconstruction of
Copyright © NTT COMWARE CORPORATION 2017
Agenda
● Serverless● Blockchain● Demo
Copyright © NTT COMWARE CORPORATION 2017
Serverless
Copyright © NTT COMWARE CORPORATION 2017
サーバーレスとは?
● サーバーを意識しないフルマネージド・アプリケーション実行環境
○ 最近流行の意味ではFunction as a Service(FaaS)のこと
● このような環境における実装スタイルをサーバーレスアーキテクチャと呼ぶ
Copyright © NTT COMWARE CORPORATION 2017
そもそもサーバーレスに至る背景
● 仮想化
● クラウド(マネージドVM)● PaaS(マネージドアプリケーション実行環境)● サービスファブリック
● リソースを確保してから使う ー> 必要な分だけ使う(JIT)● ワールドワイドでのスケールアウト
● 自作するよりサービスを買ってきたほうが良いケースも多い
Copyright © NTT COMWARE CORPORATION 2017
必要な分だけ使う
● 物理サーバ → VM○ 資材の購買,設置,廃棄などのリードタイムを短縮
● VM → PaaS○ 基盤の構築やメンテナンスをサービスプロバイダーにおまかせ
○ アプリより上のレイヤーに注力できるようになる
● FaaS○ 必要になった時だけリソースを確保
○ VMやコンテナよりもはるかに短いライフサイクル (ms単位)
準備 利用 片付け
削減
アプリの運用
基盤の運用削減
アイドルリソース削減
Usage
Copyright © NTT COMWARE CORPORATION 2017
有名なFaaS
● AWS lambda● Azure Function● Bluemix OpenWhisk● Google Cloud Function
Copyright © NTT COMWARE CORPORATION 2017
FaaS
● プログラミングで言うところの"関数"の実行環境
● PaaSのbuild packを関数単位にしたイメージ○ ライブラリ群,コールバック関数をパックしたものをデプロイする
● 関数なので呼ばれた時だけ実行される○ デプロイ時に関数を呼ぶための受け口を指定する
○ 例えばWebHook○ イベントを受けて関数が実行され,その結果を元に次のイベントが発生する
○ 長時間CPUを専有する用途には不適
Copyright © NTT COMWARE CORPORATION 2017
サーバーレスアーキテクチャ
一言で言うなら「マネージドサービスを組み合わせたピタゴラ装置」
● FaaS(プログラム)は部品同士を接続するグルー(糊)● 部品(マネージドサービス等)を切り貼りして全体を組み上げる
○ AmazonのAlexa skillなどは典型例
● 一本道ではなく,並行分散したピタゴラ装置
● イベント駆動
Copyright © NTT COMWARE CORPORATION 2017
Before
DB
IAM
SERVERSERVERSERVERLB
Copyright © NTT COMWARE CORPORATION 2017
After
DB
IAM
SERVERSERVERFncitonAPI Gateway
ObjectStorage
QueueFabricFabricService Fabric
Other ServicesOther ServicesOther Service
Copyright © NTT COMWARE CORPORATION 2017
サーバーレスアーキテクチャの特徴
● ステートレス○ ステートフルなものはマネージドサービスに押し込む
● イベント駆動○ 考え方はリアクティブそのもの
● スケールアウトが容易
● ID主体の認証・認可○ アプリサーバーにリクエストと認証・認可が一点集中するのではなく,
IDを元にクライアントやサービスが自由に呼び出し合い,
それぞれが認証・認可を行う
● クライアントサイドに機能が移転○ クライアントアプリで各種サービスを呼び出して機能を組み立てることが容易になってきた
Copyright © NTT COMWARE CORPORATION 2017
Blockchain
Copyright © NTT COMWARE CORPORATION 2017
ブロックチェーンとは
● 分散台帳(Distributed Ledger) と言われるもの
● ハッシュチェーン+分散合意アルゴリズムが主成分○ ハッシュチェーン : ハッシュ値によって過去のデータと繋がりを示せるデータ構造
○ 分散合意 : 参加者相互にデータを検証し合意する
○ 公開鍵暗号 : 匿名でID(口座)を表現
● 仮想通貨のBitcoinで有名になった
Copyright © NTT COMWARE CORPORATION 2017
ハッシュチェーン
● ハッシュ関数でデータ(取引トランザクション)からハッシュ値を得る○ 異なるデータからは異なるハッシュ値が得られる
○ ハッシュ値から元のデータは復元できない
● ハッシュ値によって,過去のデータとの繋がりと,過去のデータが改ざんされていな
いことを検証できる
● ハッシュ値に厳しい制約を与えると(先頭17桁が0でないといけない等)Proof of Work(POW)ができる
Transactions
Hash
Block
Transactions
Hash
Block
Transactions
Hash
Block
検証済み 検証済み
皆で検証
Copyright © NTT COMWARE CORPORATION 2017
分散合意
● ハッシュチェーンの先頭に誤りのないブロックを配置しなければならない○ 不正なブロックが提案される可能性がある
● ブロックを承認する仕組みのことを合意という○ 分散システムではとても難しい
● ブロックチェーンの分散合意の定義ついては合意が分散している
Transactions
Hash
Block
Transactions
Hash
Block
Transactions
Hash
Block
検証済み 検証済み
皆で検証
Copyright © NTT COMWARE CORPORATION 2017
ブロックチェーンのありがちなネイティブ実装
● データはKVSで扱う○ ハッシュチェーンはハッシュ値がデータを指し示す構造なので, KVSと相性が良い
○ BitcoinではBerkeley DBやLevel DBが利用されている
● トランザクションはイベント駆動○ HyperLedgerでは,トランザクションはコンテナで処理する
○ APIの受け口がある
● 最近はIAM付きのブロックチェーンもある○ スマートコントラクトのように複雑なトランザクションを作ろうとすると
どうしても IAM等が必要になる
● あれ?なんかサーバーレスアーキテクチャに似ている・・・?
Copyright © NTT COMWARE CORPORATION 2017
もしかして,サーバーレスアーキテクチャでブロックチェーン(もどき)を作れるのでは?
Copyright © NTT COMWARE CORPORATION 2017
Demo 実際に作ってみた
Copyright © NTT COMWARE CORPORATION 2017
AならばBが成り立つならば,その逆は成り立つか?
ブロックチェーン → サーバーレス
これが可能であるならば,
Copyright © NTT COMWARE CORPORATION 2017
ブロックチェーンでサーバーレスプラットフォーム(もどき)を作れるのでは?
Copyright © NTT COMWARE CORPORATION 2017
● さすがにFabricの集合体としてのプラットフォームは難しい
● しかし,FaaSならそれっぽいものが可能ではないだろうか
Copyright © NTT COMWARE CORPORATION 2017
Demo 2 作ってみた
Copyright © NTT COMWARE CORPORATION 2017
まとめ
Copyright © NTT COMWARE CORPORATION 2017
まとめ
● サーバーレス ⊃ ブロックチェーン
● (ブロックチェーン ⊃ FaaS ) ⊂ サーバーレス
● 時代は並行分散ピタゴラ装置○ ステートレスとステートフルの分離
○ ステートフルな基盤はマネージドサービスにおまかせ
○ ステートレス部分は分散システム基盤に乗せて自動運転
○ 部品はFaaSで糊付け
○ IDを持ち回り,各サービスで IAMを利用
○ クライアントサイドに制御が移行
Copyright © NTT COMWARE CORPORATION 2017
まとめ
● ブロックチェーンでFaaSっぽいものを作ることもできる○ 実行結果や課金ログをブロックチェーンに書き込むことも出来る
○ 自前で課金DBをとか作るより何となく安心できそう
● サーバーレスアーキテクチャでブロックチェーンもどきを作ると,
ブロックチェーンよりも柔軟にシステムが作れる○ できたものはいたって普通
○ P2Pによる自立分散がないとさみしい
Copyright © NTT COMWARE CORPORATION 2017
Thank you
Enjoy Hacking
商標等引用に関する表示
・AWS,AWS lambda,Alexa Skills は米国その他の諸国におけるAmazon.com, Inc.またはその関連会社の商標です.
・Azure はMicrosoft Corporationの米国及びその他の国における商標です.
・Google,Google Cloud Platform はGoogle Inc.の米国およびその他の国における商標です.
・IBM,IBM Bluemix はInternational Business Machines Corporationの米国およびその他の国における商標です.
・その他,記載されている社名,製品名,サービス名などは各社の商標または登録商標である場合があります,Copyright © NTT COMWARE CORPORATION 2017