31. Pivotal Function Service
Auto ScaleおよびScale to zeroを実現
するServerlessなFunction実行基盤
● OSSのKnativeおよびriffがベー
ス技術
● Coming soon!
Pivotal Container Service
Kubernetesをフルに活用した
コンテナオーケストレーションを提供
● 自動復旧可能な Kubernetesクラ
スタを動的にプロビジョニングす
るAPIを提供
● Kubernetesのエコシステムをフ
ル活用しつつ運用を楽に
Pivotal Application Service
アプリケーションセントリックな
クラウドネイティブプラットフォームを提
供
● クラウドネイティブなアプリケー
ション稼働のための機能をフル
に提供
● cf pushによる迅速なアプリリ
リース
● OSSのCloud Foundryがベース
技術
Platform as a ServiceContainer as a Service Function as a Service
PRACTICESPRACTICES PRACTICES
32. 製品毎の抽象化レイヤーの違い
DIY k8s or container stack
Embedded OS
OS Image
Runtime Layer
Service Brokerage
Application Layer
Platform
Provided
App
Team
provided
Embedded OS
OS Image
Runtime Layer
Service Brokerage
Application Layer
Platform
Provided
App
Team
Provided
Embedded OS
OS Image
Runtime Layer
Service Brokerage
Application Layer
App
Team
Provided
33. 製品毎の抽象化レイヤーの違い
DIY k8s or container stack
Embedded OS
OS Image
Runtime Layer
Service Brokerage
Application Layer
Platform
Provided
App
Team
provided
Embedded OS
OS Image
Runtime Layer
Service Brokerage
Application Layer
Platform
Provided
App
Team
Provided
Embedded OS
OS Image
Runtime Layer
Service Brokerage
Application Layer
App
Team
Provided
Dockerfileを書くのではなく、
Buildpackを使うことでソースコードからコ
ンテナイメージが作成される
54. API
Gateway
Service A
Service B
Service C
加盟店 X
加盟店 Y
加盟店 Z
決済機関 A
決済機関 B
決済機関 C
http://cloud.spring.io/spring-cloud-gateway/multi/multi__building_a_simple_gateway_using_spring_mvc_or_webflux.html
Spring Cloud Gatewayの
ProxyExchangeでシンプルに実装
アプリケーション構成①(同期 加盟店 ➡ 決済機関)
63. API
Gateway
Service A
Service B
Service C
加盟店 X
加盟店 Y
加盟店 Z
決済機関 A
決済機関 B
決済機関 C
Hystrix
Hystrix
Hystrix
Hystrix
アプリケーション構成①(同期 加盟店 ➡ 決済機関)Circuit Breaker があれば
特定の決済機関で障害が発生しても
64. API
Gateway
Service A
Service B
Service C
加盟店 X
加盟店 Y
加盟店 Z
決済機関 A
決済機関 B
決済機関 C
Hystrix
Hystrix
Hystrix
アプリケーション構成①(同期 加盟店 ➡ 決済機関)他の決済機関へのアクセスに影響を及ぼさない
障害の伝播を防ぐ
72. アプリケーション構成③(非同期 加盟店 ➡ 決済機関)
API
Gateway
Service D
Service E
Service F
加盟店 X
加盟店 Y
加盟店 Z
決済機関 D
決済機関 E
決済機関 F
Hystrix
Hystrix
Hystrix
Hystrix
73. API
Gateway
Service D
Service E
Service F
加盟店 X
加盟店 Y
加盟店 Z
決済機関 D
決済機関 E
決済機関 F
Hystrix
Hystrix
Hystrix
Hystrix
同期決済が求められないケースでは
なるべく非同期パターンを適用
アプリケーション構成③(非同期 加盟店 ➡ 決済機関)
74. API
Gateway
Service D
Service E
Service F
加盟店 X
加盟店 Y
加盟店 Z
決済機関 D
決済機関 E
決済機関 F
Hystrix
Hystrix
Hystrix
Hystrix
決済機関の障害時に、
復帰後のエラー処理が可能
アプリケーション構成③(非同期 加盟店 ➡ 決済機関)
76. PCF App Autoscaler
API
Gateway
Service A
Service B
Service C
加盟店 X
加盟店 Y
加盟店 Z
決済機関 A
決済機関 B
決済機関 C
Hystrix
Hystrix
Hystrix
Hystrix
特定の加盟店や決済機関の
急なリクエスト増
77. Hystrix
PCF App Autoscaler
Service B
Service C
加盟店 X
加盟店 Y
加盟店 Z
決済機関 A
決済機関 B
決済機関 C
Hystrix
Hystrix
Hystrix
Hystrix
Service A
Service A
API
Gateway
Service A
自動でAppインスタンス増
78. PCF App Autoscaler
Service B
Service C
加盟店 X
加盟店 Y
加盟店 Z
決済機関 A
決済機関 B
決済機関 C
Hystrix
Hystrix
Hystrix
Hystrix
API
Gateway
Service A
API
Gateway
Service A
API
Gateway
Service A
79. PCF App Autoscaler
Service B
Service C
加盟店 X
加盟店 Y
加盟店 Z
決済機関 A
決済機関 B
決済機関 C
Hystrix
Hystrix
Hystrix
Hystrix
API
Gateway
Service A
API
Gateway
Service A
API
Gateway
Service A
インスタンス数の設定
80. PCF App Autoscaler
Service B
Service C
加盟店 X
加盟店 Y
加盟店 Z
決済機関 A
決済機関 B
決済機関 C
Hystrix
Hystrix
Hystrix
Hystrix
API
Gateway
Service A
API
Gateway
Service A
API
Gateway
Service A
スケールのルール設定
● CPU使用率
● Memory使用率
● HTTPスループット
● HTTPレイテンシ
● MQキューの長さ
81. PCF App Autoscaler
Service B
Service C
加盟店 X
加盟店 Y
加盟店 Z
決済機関 A
決済機関 B
決済機関 C
Hystrix
Hystrix
Hystrix
Hystrix
API
Gateway
Service A
API
Gateway
Service A
API
Gateway
Service A
スケールアウト/インの
しきい値の設定
82. PCF App Autoscaler
Service B
Service C
加盟店 X
加盟店 Y
加盟店 Z
決済機関 A
決済機関 B
決済機関 C
Hystrix
Hystrix
Hystrix
Hystrix
API
Gateway
Service A
API
Gateway
Service A
API
Gateway
Service A
PCFに載せて設定するだけ
アプリケーション側の対応は不要
83. The 12 Factor App
https://12factor.net/
III. Config
VI. Processes
VII. Port binding
VIII. Concurrency
XI. Logs
アプリ実装の観点で重要な5 Factors
環境に依存する設定項目は
環境変数に格納
CF、Spring Bootを使え
ば自動で満たされる
ログは標準出力に出力すれば
プラットフォームが集約
絶対ロストしたくないログは標準
出力ではなくRDBへ保存