SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
© IBM Corporation 1
Amalgam8
アマルガメイトとよんでください
© IBM Corporation 2
⾃⼰紹介 ~
名前: 天野 武彦
所属:IBM 東京ソフトウェア開発研究所
主な活動: 先端クラウド技術の推進・啓蒙
(エリア: Cloud Foundry, DevOps, OpenStack, OpenWhisk, Blockchain 等)
趣味: ⽬下のところ育児に没頭
Twitter: @ibmamnt
ブログ: http://amanoblog.wordpress.com
© IBM Corporation 3
text
クラウド時代のアプリケーション・サービス開発
–変化のないシス
テムはすぐに飽
きられてしまう
–かといって、今
のシステム開発
だと3〜6ヶ⽉
リリースサイク
ルが限界
–ためしてみたら
あぼーん!
© IBM Corporation 4
text
Amalgam8 とは
–WEBアプリケーション、マイクロサービスのための「アプリケーショ
ン・スイッチ」
• OSI (Open Systems Interconnection) の世界でいう Layer-7 にあたるもの
–以下のことが出来ます(2017年5⽉末時点)
• コンテンツ、及びバージョンベースのルーティング
• Gremlin ベースの試験
amalgam8 = amalgamate
1.〈会社などを〉合同[合併]する.
2.〈異種族・思想などを〉混交[融合]する.
http://ejje.weblio.jp/content/amalgamate
© IBM Corporation 5
text
マイクロサービス界隈でよくきくカナリア試験とか
–カナリア
• 「毒物に敏感なので、⼀緒に⼊ればすぐに反
応してくれる 」(警視庁第三機動隊・遠塚
章弘警部補)」( 地下鉄サリン事件 TBS
ニュースから転載)
出典:http://www.academia.dk/Blog/a-canary-in-a-
coal-mine-in-the-19th-century-and/
© IBM Corporation 6
カナリアリリース
95%
traffic
5
%
• 更新をカナリアクラスタ
にデプロイ
• 受け入れ試験実施
• 少しのトラフィックをカナ
リアクラスタに流し、順次
増やしていく
Primary
Cluster
Canary
Cluster
2. 新しいサービスのデプロイと試験
• 100% のトラフィックを
カナリアクラスタに送信
• 古いプライマリークラスタは
廃棄
• 必要があればロールバック
100%
traffic
(Old)
Primary
Cluster
New
Primary
Cluster
3. 試験が終われば完全スイッチ
• デプロイ準備
• カナリアクラスタ作成
• カナリアリリースの準備
Primary
Cluster
100%
traffic
Canary
Cluster
1. アップグレード準備
新しいサービスの機能を、⼀部ユーザに対してだけ先⾏リリース、その
後全リリース。Facebookでは、Dark Launchと呼ばれている
© IBM Corporation 7
text
こうけ?
LB
ロードバランサーです。
ラウンドロビンしかしな
いけどw
サービス
サービス
LB
サービス
サービス
サービス
新サービス
99個
1個
カナリア試験を
するためには
サービス増やし
て対応(コスト
には⽬をつぶ
る)
© IBM Corporation 8
text
コンテンツベース、バージョンベースのルーティングとは?
–コンテンツベース
• ヘッダーの値に “TEST” が含まれ
ていたら試験中サービスにルー
ティング
• それ以外は現在のリリースされて
いるサービスにルーティング
–バージョンベース
• 70%のトラフィックはB
• 30%のトラフィックはB’
© IBM Corporation 9
text
helloworld デモ
–デフォルトでは v1 に接続
–25% のトラフィックを v2 にルー
ティング
結果:1000回呼び出し
V1
V2
デフォルト
25%こっち
$ a8ctl route-list
+-------------+-----------------+-------------------+
| Service | Default Version | Version Selectors |
+-------------+-----------------+-------------------+
| helloworld | v1 | v2(weight=0.25) |
+-------------+-----------------+-------------------+
※詳細は後ほど!
$ bash test.sh | sort | uniq -c
745 v1
255 v2
$ curl http://$GATEWAY_URL/helloworld/hello
Hello version: v1, container: 88bbf66c46ea
$ curl http://$GATEWAY_URL/helloworld/hello
Hello version: v1, container: 88bbf66c46ea
$ curl http://$GATEWAY_URL/helloworld/hello
Hello version: v2, container: 6eeaa2cfad45
だいたい25%
© IBM Corporation 10
text
amalgam8 のアーキテクチャ
Controller
– ルールの管理
Registry
–管理対象の(マイクロ)サービ
ス登録
Sidecar
– ルーティング実⾏サービス
• サービス内部 or
• サービス外部
© IBM Corporation 11
text
ルーティング ルール
–baseルール
• destination: ルーティング先
• priority: 数字 このプライオリティ順にルールを評
価
• match: 適⽤ルール
– source : トラフィックの元
– header : https ヘッダーフィルター (例:user=json )
–backends ルール
• tags : (tags=v2 → v2 にルーティング)
– ※タグ名はサービス登録時に指定
• weight : ルーティングの重み ( wight=0.25 → 25%)
–action ルール(サービスの試験に利⽤)
• duration: delay を⼊れる(試験のため)
• abort
amnt@vanadium:~
$ a8ctl route-list
+-------------+-----------------+-------------------+
| Service | Default Version | Version Selectors |
+-------------+-----------------+-------------------+
| reviews | v3 | v2(user="jason") |
| ratings | v1 | |
| details | v1 | |
| helloworld | v1 | v2(weight=0.25) |
| productpage | v1 | |
+-------------+-----------------+-------------------+
© IBM Corporation 12
text
Sidecar
– アプリケーション・サービ
スの Registry への登録(⾃
動)
– Controller からの情報を
使って Proxy を管理
• Envoy を採⽤
• https://lyft.github.io/envoy/
–リクエストをルールに従っ
てルーティング Envoy
© IBM Corporation 13
text
Sidecar の使い⽅
– Sidecar コンポーネントを
アプリケーションにDocker
イメージに組み込みます
–(Kubernetes のみ)アプ
リケーションはそのままで
Sidecar イメージをHelper
コンテナとして使います
Sidecar
App(v1)
App(v1)
testing
default
testing
Sidecar
App(v1)default
testing App(v1)
testing
SidecarSidecar
service(v1)
service(v1)
testing
SidecarSidecar
SidecarSidecar
© IBM Corporation 14
text
Sidecarの導⼊
–Dockerfile にa8sidecarの導⼊⾏を追加する
FROM <somebaseimage>
RUN curl -sSL https://github.com/amalgam8/amalgam8/releases/download/${VERSION}/a8sidecar.sh | sh
## Install your app stuff here
## script_to_launch_sidecar_and_app
※ supervisor を利⽤して sidecar にアプリケーションの管理をさせることも
できる。この場合 healthcheck の機能がつく
© IBM Corporation 15
text
他のサービスの呼び出しのためアプリケーションを修正する
必要があります
–他のサービス呼び出しは
http://localhost:6479/サービス名/APIパス
に変更します
© IBM Corporation 16
text
Gremlin試験機能
–sidecar の追加機能
• 遅延を発⽣させる
• 0.7の確率で http 503 を返す
–ちょっとした “Chaos
Monkey” の代わりに使え
ます
https://commons.wikimedia.org/wiki/File:Gre
mlinStripeByInti.jpg
© IBM Corporation 17
text
まとめ
–amalgam8 はマイクロサービス開発とオペレーションに役⽴ちます。
• コンテナのためのアプリケーションスイッチ
–様々なコンテナプラットフォームで稼働するので、Platform 及び
language Agnostic です。
–参考サイト:
• https://www.amalgam8.io/
© IBM Corporation 18
text
さて、とある⽇の amalgam8 slack の会話
なぬ! istio プロジェクトに移⾏ですと!
© IBM Corporation 19
text
GlueCon 2017 のアジェンダ
5/24 に Google と IBM 共同で
発表するようです。
しばらく待ちましょう!
次回は istio.io の何かを題材に
したいと思います。
© IBM Corporation 20
text
おしまい

Más contenido relacionado

La actualidad más candente

Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWSEiji Shinohara
 
re:invent 2016 新サービスで変わる AWS運用
re:invent 2016 新サービスで変わる AWS運用re:invent 2016 新サービスで変わる AWS運用
re:invent 2016 新サービスで変わる AWS運用Shuji Kikuchi
 
CloudWatch Eventsを使った ECSのAutoScaling
CloudWatch Eventsを使ったECSのAutoScalingCloudWatch Eventsを使ったECSのAutoScaling
CloudWatch Eventsを使った ECSのAutoScaling淳 千葉
 
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"akitsukada
 
AWS Summit New York 2016 Recap : AWS Application Load Balancer and Amazon ECS
AWS Summit New York 2016 Recap : AWS Application Load Balancer and Amazon ECSAWS Summit New York 2016 Recap : AWS Application Load Balancer and Amazon ECS
AWS Summit New York 2016 Recap : AWS Application Load Balancer and Amazon ECSEiji Shinohara
 
AWS Startup Use Cases 2015
AWS Startup Use Cases 2015AWS Startup Use Cases 2015
AWS Startup Use Cases 2015Eiji Shinohara
 
2016年8月のAWSサービスアップデートまとめ
 2016年8月のAWSサービスアップデートまとめ 2016年8月のAWSサービスアップデートまとめ
2016年8月のAWSサービスアップデートまとめAmazon Web Services Japan
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data PipelineAmazon Web Services Japan
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAmazon Web Services Japan
 
CloudWatch Logsについて
CloudWatch LogsについてCloudWatch Logsについて
CloudWatch LogsについてSugawara Genki
 
20160526 AWSサービスアップデート
20160526 AWSサービスアップデート20160526 AWSサービスアップデート
20160526 AWSサービスアップデートGenta Watanabe
 
Run Spark on EMRってどんな仕組みになってるの?
Run Spark on EMRってどんな仕組みになってるの?Run Spark on EMRってどんな仕組みになってるの?
Run Spark on EMRってどんな仕組みになってるの?Satoshi Noto
 
同じサービスを ECSとOpsWorksで 運用してみた
同じサービスをECSとOpsWorksで運用してみた同じサービスをECSとOpsWorksで運用してみた
同じサービスを ECSとOpsWorksで 運用してみたJun Ichikawa
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかShun Fukazawa
 
画像処理をAWS LambdaのPythonで!
画像処理をAWS LambdaのPythonで!画像処理をAWS LambdaのPythonで!
画像処理をAWS LambdaのPythonで!Tomotsune Murata
 
Amazon s3へのデータ転送における課題とその対処法を一挙紹介
Amazon s3へのデータ転送における課題とその対処法を一挙紹介Amazon s3へのデータ転送における課題とその対処法を一挙紹介
Amazon s3へのデータ転送における課題とその対処法を一挙紹介Tetsunori Nishizawa
 
2016年11月のAWSサービスアップデートまとめ
 2016年11月のAWSサービスアップデートまとめ 2016年11月のAWSサービスアップデートまとめ
2016年11月のAWSサービスアップデートまとめAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWSAWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWSAmazon Web Services Japan
 

La actualidad más candente (20)

継続的12章
継続的12章継続的12章
継続的12章
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
 
re:invent 2016 新サービスで変わる AWS運用
re:invent 2016 新サービスで変わる AWS運用re:invent 2016 新サービスで変わる AWS運用
re:invent 2016 新サービスで変わる AWS運用
 
CloudWatch Eventsを使った ECSのAutoScaling
CloudWatch Eventsを使ったECSのAutoScalingCloudWatch Eventsを使ったECSのAutoScaling
CloudWatch Eventsを使った ECSのAutoScaling
 
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
 
AWS Summit New York 2016 Recap : AWS Application Load Balancer and Amazon ECS
AWS Summit New York 2016 Recap : AWS Application Load Balancer and Amazon ECSAWS Summit New York 2016 Recap : AWS Application Load Balancer and Amazon ECS
AWS Summit New York 2016 Recap : AWS Application Load Balancer and Amazon ECS
 
AWS Startup Use Cases 2015
AWS Startup Use Cases 2015AWS Startup Use Cases 2015
AWS Startup Use Cases 2015
 
2016年8月のAWSサービスアップデートまとめ
 2016年8月のAWSサービスアップデートまとめ 2016年8月のAWSサービスアップデートまとめ
2016年8月のAWSサービスアップデートまとめ
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
 
CloudWatch Logsについて
CloudWatch LogsについてCloudWatch Logsについて
CloudWatch Logsについて
 
20160526 AWSサービスアップデート
20160526 AWSサービスアップデート20160526 AWSサービスアップデート
20160526 AWSサービスアップデート
 
AWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS LambdaAWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS Lambda
 
Run Spark on EMRってどんな仕組みになってるの?
Run Spark on EMRってどんな仕組みになってるの?Run Spark on EMRってどんな仕組みになってるの?
Run Spark on EMRってどんな仕組みになってるの?
 
同じサービスを ECSとOpsWorksで 運用してみた
同じサービスをECSとOpsWorksで運用してみた同じサービスをECSとOpsWorksで運用してみた
同じサービスを ECSとOpsWorksで 運用してみた
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
 
画像処理をAWS LambdaのPythonで!
画像処理をAWS LambdaのPythonで!画像処理をAWS LambdaのPythonで!
画像処理をAWS LambdaのPythonで!
 
Amazon s3へのデータ転送における課題とその対処法を一挙紹介
Amazon s3へのデータ転送における課題とその対処法を一挙紹介Amazon s3へのデータ転送における課題とその対処法を一挙紹介
Amazon s3へのデータ転送における課題とその対処法を一挙紹介
 
2016年11月のAWSサービスアップデートまとめ
 2016年11月のAWSサービスアップデートまとめ 2016年11月のAWSサービスアップデートまとめ
2016年11月のAWSサービスアップデートまとめ
 
AWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWSAWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWS
 

Similar a Amalgam8 application switch for cloud native services

ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視Takanori Suzuki
 
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングクラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングShin Matsumoto
 
ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会Tomoya Hibi
 
The road of Apache CloudStack Contributor (Translation and Patch)
The road of Apache CloudStack Contributor (Translation and Patch)The road of Apache CloudStack Contributor (Translation and Patch)
The road of Apache CloudStack Contributor (Translation and Patch)Kimihiko Kitase
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf勇 黒沢
 
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18Masatomo Ito
 
Azure Container Services and Microservices design pattern
Azure Container Services and Microservices design patternAzure Container Services and Microservices design pattern
Azure Container Services and Microservices design patternYoshio Terada
 
We Should Know About in this SocialNetwork Era 2011_1112
We Should Know About in this SocialNetwork Era 2011_1112We Should Know About in this SocialNetwork Era 2011_1112
We Should Know About in this SocialNetwork Era 2011_1112Masahito Zembutsu
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...Naoto Gohko
 
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続 【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続 Brocade
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観Yamato Tanaka
 
HSM用ミドルウェア Conduit Toolkitの概要と使い方
HSM用ミドルウェア Conduit Toolkitの概要と使い方HSM用ミドルウェア Conduit Toolkitの概要と使い方
HSM用ミドルウェア Conduit Toolkitの概要と使い方Hiroshi Nakamura
 
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例erakazu
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコシステムズ合同会社
 
猿でもわかる DevOps
猿でもわかる DevOps猿でもわかる DevOps
猿でもわかる DevOpsTsuyoshi Miyake
 
20170809 AWS code series
20170809 AWS code series20170809 AWS code series
20170809 AWS code seriesAtsushi Fukui
 

Similar a Amalgam8 application switch for cloud native services (20)

Rubykansai 81
Rubykansai 81Rubykansai 81
Rubykansai 81
 
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
 
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングクラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニング
 
ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会
 
The road of Apache CloudStack Contributor (Translation and Patch)
The road of Apache CloudStack Contributor (Translation and Patch)The road of Apache CloudStack Contributor (Translation and Patch)
The road of Apache CloudStack Contributor (Translation and Patch)
 
150212 summit発表用資料 公開用
150212 summit発表用資料 公開用150212 summit発表用資料 公開用
150212 summit発表用資料 公開用
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18
 
qmake入門
qmake入門qmake入門
qmake入門
 
Azure Container Services and Microservices design pattern
Azure Container Services and Microservices design patternAzure Container Services and Microservices design pattern
Azure Container Services and Microservices design pattern
 
We Should Know About in this SocialNetwork Era 2011_1112
We Should Know About in this SocialNetwork Era 2011_1112We Should Know About in this SocialNetwork Era 2011_1112
We Should Know About in this SocialNetwork Era 2011_1112
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
 
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続 【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
HSM用ミドルウェア Conduit Toolkitの概要と使い方
HSM用ミドルウェア Conduit Toolkitの概要と使い方HSM用ミドルウェア Conduit Toolkitの概要と使い方
HSM用ミドルウェア Conduit Toolkitの概要と使い方
 
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
猿でもわかる DevOps
猿でもわかる DevOps猿でもわかる DevOps
猿でもわかる DevOps
 
20170809 AWS code series
20170809 AWS code series20170809 AWS code series
20170809 AWS code series
 

Más de Takehiko Amano

もうひとつのコンテナ実行環境 runq のご紹介
もうひとつのコンテナ実行環境 runq のご紹介もうひとつのコンテナ実行環境 runq のご紹介
もうひとつのコンテナ実行環境 runq のご紹介Takehiko Amano
 
Open whisk slackinvite - public
Open whisk slackinvite - publicOpen whisk slackinvite - public
Open whisk slackinvite - publicTakehiko Amano
 
Garden introduction for dea users public
Garden introduction for dea users   publicGarden introduction for dea users   public
Garden introduction for dea users publicTakehiko Amano
 
OpenWhisk introduction public
OpenWhisk introduction publicOpenWhisk introduction public
OpenWhisk introduction publicTakehiko Amano
 
PaaS ×iot! node red勉強会質問箱
PaaS ×iot! node red勉強会質問箱PaaS ×iot! node red勉強会質問箱
PaaS ×iot! node red勉強会質問箱Takehiko Amano
 
Node red hands on - public
Node red hands on - publicNode red hands on - public
Node red hands on - publicTakehiko Amano
 
Cloud focker を試してみた public
Cloud focker を試してみた   publicCloud focker を試してみた   public
Cloud focker を試してみた publicTakehiko Amano
 
Deploy application from web editor 20140326 public
Deploy application from web editor 20140326 publicDeploy application from web editor 20140326 public
Deploy application from web editor 20140326 publicTakehiko Amano
 

Más de Takehiko Amano (9)

もうひとつのコンテナ実行環境 runq のご紹介
もうひとつのコンテナ実行環境 runq のご紹介もうひとつのコンテナ実行環境 runq のご紹介
もうひとつのコンテナ実行環境 runq のご紹介
 
Open whisk slackinvite - public
Open whisk slackinvite - publicOpen whisk slackinvite - public
Open whisk slackinvite - public
 
Garden introduction for dea users public
Garden introduction for dea users   publicGarden introduction for dea users   public
Garden introduction for dea users public
 
OpenWhisk introduction public
OpenWhisk introduction publicOpenWhisk introduction public
OpenWhisk introduction public
 
PaaS ×iot! node red勉強会質問箱
PaaS ×iot! node red勉強会質問箱PaaS ×iot! node red勉強会質問箱
PaaS ×iot! node red勉強会質問箱
 
Node red hands on - public
Node red hands on - publicNode red hands on - public
Node red hands on - public
 
Node red の導入
Node red の導入Node red の導入
Node red の導入
 
Cloud focker を試してみた public
Cloud focker を試してみた   publicCloud focker を試してみた   public
Cloud focker を試してみた public
 
Deploy application from web editor 20140326 public
Deploy application from web editor 20140326 publicDeploy application from web editor 20140326 public
Deploy application from web editor 20140326 public
 

Amalgam8 application switch for cloud native services

  • 1. © IBM Corporation 1 Amalgam8 アマルガメイトとよんでください
  • 2. © IBM Corporation 2 ⾃⼰紹介 ~ 名前: 天野 武彦 所属:IBM 東京ソフトウェア開発研究所 主な活動: 先端クラウド技術の推進・啓蒙 (エリア: Cloud Foundry, DevOps, OpenStack, OpenWhisk, Blockchain 等) 趣味: ⽬下のところ育児に没頭 Twitter: @ibmamnt ブログ: http://amanoblog.wordpress.com
  • 3. © IBM Corporation 3 text クラウド時代のアプリケーション・サービス開発 –変化のないシス テムはすぐに飽 きられてしまう –かといって、今 のシステム開発 だと3〜6ヶ⽉ リリースサイク ルが限界 –ためしてみたら あぼーん!
  • 4. © IBM Corporation 4 text Amalgam8 とは –WEBアプリケーション、マイクロサービスのための「アプリケーショ ン・スイッチ」 • OSI (Open Systems Interconnection) の世界でいう Layer-7 にあたるもの –以下のことが出来ます(2017年5⽉末時点) • コンテンツ、及びバージョンベースのルーティング • Gremlin ベースの試験 amalgam8 = amalgamate 1.〈会社などを〉合同[合併]する. 2.〈異種族・思想などを〉混交[融合]する. http://ejje.weblio.jp/content/amalgamate
  • 5. © IBM Corporation 5 text マイクロサービス界隈でよくきくカナリア試験とか –カナリア • 「毒物に敏感なので、⼀緒に⼊ればすぐに反 応してくれる 」(警視庁第三機動隊・遠塚 章弘警部補)」( 地下鉄サリン事件 TBS ニュースから転載) 出典:http://www.academia.dk/Blog/a-canary-in-a- coal-mine-in-the-19th-century-and/
  • 6. © IBM Corporation 6 カナリアリリース 95% traffic 5 % • 更新をカナリアクラスタ にデプロイ • 受け入れ試験実施 • 少しのトラフィックをカナ リアクラスタに流し、順次 増やしていく Primary Cluster Canary Cluster 2. 新しいサービスのデプロイと試験 • 100% のトラフィックを カナリアクラスタに送信 • 古いプライマリークラスタは 廃棄 • 必要があればロールバック 100% traffic (Old) Primary Cluster New Primary Cluster 3. 試験が終われば完全スイッチ • デプロイ準備 • カナリアクラスタ作成 • カナリアリリースの準備 Primary Cluster 100% traffic Canary Cluster 1. アップグレード準備 新しいサービスの機能を、⼀部ユーザに対してだけ先⾏リリース、その 後全リリース。Facebookでは、Dark Launchと呼ばれている
  • 7. © IBM Corporation 7 text こうけ? LB ロードバランサーです。 ラウンドロビンしかしな いけどw サービス サービス LB サービス サービス サービス 新サービス 99個 1個 カナリア試験を するためには サービス増やし て対応(コスト には⽬をつぶ る)
  • 8. © IBM Corporation 8 text コンテンツベース、バージョンベースのルーティングとは? –コンテンツベース • ヘッダーの値に “TEST” が含まれ ていたら試験中サービスにルー ティング • それ以外は現在のリリースされて いるサービスにルーティング –バージョンベース • 70%のトラフィックはB • 30%のトラフィックはB’
  • 9. © IBM Corporation 9 text helloworld デモ –デフォルトでは v1 に接続 –25% のトラフィックを v2 にルー ティング 結果:1000回呼び出し V1 V2 デフォルト 25%こっち $ a8ctl route-list +-------------+-----------------+-------------------+ | Service | Default Version | Version Selectors | +-------------+-----------------+-------------------+ | helloworld | v1 | v2(weight=0.25) | +-------------+-----------------+-------------------+ ※詳細は後ほど! $ bash test.sh | sort | uniq -c 745 v1 255 v2 $ curl http://$GATEWAY_URL/helloworld/hello Hello version: v1, container: 88bbf66c46ea $ curl http://$GATEWAY_URL/helloworld/hello Hello version: v1, container: 88bbf66c46ea $ curl http://$GATEWAY_URL/helloworld/hello Hello version: v2, container: 6eeaa2cfad45 だいたい25%
  • 10. © IBM Corporation 10 text amalgam8 のアーキテクチャ Controller – ルールの管理 Registry –管理対象の(マイクロ)サービ ス登録 Sidecar – ルーティング実⾏サービス • サービス内部 or • サービス外部
  • 11. © IBM Corporation 11 text ルーティング ルール –baseルール • destination: ルーティング先 • priority: 数字 このプライオリティ順にルールを評 価 • match: 適⽤ルール – source : トラフィックの元 – header : https ヘッダーフィルター (例:user=json ) –backends ルール • tags : (tags=v2 → v2 にルーティング) – ※タグ名はサービス登録時に指定 • weight : ルーティングの重み ( wight=0.25 → 25%) –action ルール(サービスの試験に利⽤) • duration: delay を⼊れる(試験のため) • abort amnt@vanadium:~ $ a8ctl route-list +-------------+-----------------+-------------------+ | Service | Default Version | Version Selectors | +-------------+-----------------+-------------------+ | reviews | v3 | v2(user="jason") | | ratings | v1 | | | details | v1 | | | helloworld | v1 | v2(weight=0.25) | | productpage | v1 | | +-------------+-----------------+-------------------+
  • 12. © IBM Corporation 12 text Sidecar – アプリケーション・サービ スの Registry への登録(⾃ 動) – Controller からの情報を 使って Proxy を管理 • Envoy を採⽤ • https://lyft.github.io/envoy/ –リクエストをルールに従っ てルーティング Envoy
  • 13. © IBM Corporation 13 text Sidecar の使い⽅ – Sidecar コンポーネントを アプリケーションにDocker イメージに組み込みます –(Kubernetes のみ)アプ リケーションはそのままで Sidecar イメージをHelper コンテナとして使います Sidecar App(v1) App(v1) testing default testing Sidecar App(v1)default testing App(v1) testing SidecarSidecar service(v1) service(v1) testing SidecarSidecar SidecarSidecar
  • 14. © IBM Corporation 14 text Sidecarの導⼊ –Dockerfile にa8sidecarの導⼊⾏を追加する FROM <somebaseimage> RUN curl -sSL https://github.com/amalgam8/amalgam8/releases/download/${VERSION}/a8sidecar.sh | sh ## Install your app stuff here ## script_to_launch_sidecar_and_app ※ supervisor を利⽤して sidecar にアプリケーションの管理をさせることも できる。この場合 healthcheck の機能がつく
  • 15. © IBM Corporation 15 text 他のサービスの呼び出しのためアプリケーションを修正する 必要があります –他のサービス呼び出しは http://localhost:6479/サービス名/APIパス に変更します
  • 16. © IBM Corporation 16 text Gremlin試験機能 –sidecar の追加機能 • 遅延を発⽣させる • 0.7の確率で http 503 を返す –ちょっとした “Chaos Monkey” の代わりに使え ます https://commons.wikimedia.org/wiki/File:Gre mlinStripeByInti.jpg
  • 17. © IBM Corporation 17 text まとめ –amalgam8 はマイクロサービス開発とオペレーションに役⽴ちます。 • コンテナのためのアプリケーションスイッチ –様々なコンテナプラットフォームで稼働するので、Platform 及び language Agnostic です。 –参考サイト: • https://www.amalgam8.io/
  • 18. © IBM Corporation 18 text さて、とある⽇の amalgam8 slack の会話 なぬ! istio プロジェクトに移⾏ですと!
  • 19. © IBM Corporation 19 text GlueCon 2017 のアジェンダ 5/24 に Google と IBM 共同で 発表するようです。 しばらく待ちましょう! 次回は istio.io の何かを題材に したいと思います。
  • 20. © IBM Corporation 20 text おしまい