SlideShare a Scribd company logo
形式手法と AWS の
おいしい関係。
チェシャ猫 (@y_taka_23)
JAWS Festa 東海道 2016 (2016/10/22)
モデル検査器 Alloy によるインフラ設計技法
AWS で「やっちまった」こと
ありませんか?
本日の目次
1. インフラ設計、この厄介なるもの
2. 形式手法、この深淵なるもの
3. Alloy、この強力なるもの
4. モデリング・ケーススタディ
5. まとめ
1
インフラ設計、この厄介なるもの
問題を複雑にしている要因は
そもそもどこにあるのか?
インフラ設計の難しさ
▪ 長期間に渡って使用される
▫ 当初の想定に反する事態になりやすい
▫ 設計意図が引き継がれにくい
▪ 変更時の影響範囲が大きい
▫ 一部分のみの再設計が困難
▪ 構成要素が多く、系として複雑
▫ 全体を正しく把握しないと動かせない
AWS をテストする手法たち
▪ awspec
▫ RSpec 形式で AWS リソースをテスト
▫ API にアクセスしてリソースの情報を取得
▪ AWS Config Rules
▫ 設定の変更履歴を追跡
▫ 条件を満たさないリソースを監視
▫ Lambda でカスタムルール作成可能
実物に依存せず
「設計」に対して試行錯誤したい
形式手法
Formal Methods
2
形式手法、この深淵なるもの
数理的手法を応用することで
何が得られるのか?
形式手法とは
▪ システムを数学的対象として表現
▫ 選んだ対象によって特性が変わる
▪ 数学的対象に関する理論を用いて検証
▪ いわゆるテストと比較して
▫ より抽象的な設計を検証できる
▫ テストケースの漏れが生じない
▫ 一般的には学習コストが高い(なじみがない)
様々な形式手法ツール
▪ 形式仕様記述 : Z、VDM++
▪ 定理証明 : Coq、Agda、Isabelle
▪ モデル検査 : Alloy、TLA+、SPIN
▫ 列挙可能な数学的対象でシステムを定義
▫ システムが満たすべき制約を記述
▫ 全探索で制約が満たされることを確認
AWS でも使われた形式手法
▪ 分散アルゴリズムの検証
▫ DynamoDB、S3 に適用
▫ 意図せずしてデータが壊れないことを保証
▪ ツールは TLA+ を使用
▫ 当初 Alloy を検討するも頓挫
▫ 原因は「表現力が足りなかった」こと
▪ 普通の開発者が数週間で習得
http://cacm.acm.org/magazines/2015/4/184701-how-amazon-web-services-uses-formal-methods
re:Invent 2016 でもセッションが
https://www.portal.reinvent.awsevents.com/connect/sessionDetail.ww?SESSION_ID=8311
3
Alloy、この強力なるもの
「関係」によってシステムを
記述するとはどういうことか?
Alloy はどんなツールなのか?
▪ 関係論理でシステムを定義
▫ データモデル的な表現に向く
▪ SAT ソルバにより具体例を発見
▫ 制約を満たす(満たさない)例を自動で列挙
▪ 発見した例を可視化
▫ 検証結果が読み取りやすい
▫ Lightweight を標榜、試行錯誤を支援
初めての Alloy モデル
sig Subnet {}
sig Instance {
subnet : Subnet,
}
run {}
初めての具体例その 1
初めての具体例その 2
初めての具体例その 3
関係論理へのマッピング
▪ シグニチャ
▫ 有限集合を表す
▫ Subnet、Instance
▪ フィールド
▫ シグニチャ (= 集合) 上の関係を表す
▫ 実体は直積集合の部分集合
▫ subnet ⊆ Instance × Subnet
フィールド = 部分集合
subnet0
instance0
instance1
instance2
subnet1 subnet2
(i0, s0) (i0, s1) (i0, s2)
(i1, s0) (i1, s1) (i1, s2)
(i2, s0) (i2, s1) (i2, s2)
フィールド = 部分集合
subnet0
instance0
instance1
instance2
subnet1 subnet2
(i0, s0) (i0, s1) (i0, s2)
(i1, s0) (i1, s1) (i1, s2)
(i2, s0) (i2, s1) (i2, s2)
フィールド = 部分集合 : 具体例その 1
フィールド = 部分集合
subnet0
instance0
instance1
instance2
subnet1 subnet2
(i0, s0) (i0, s1) (i0, s2)
(i1, s0) (i1, s1) (i1, s2)
(i2, s0) (i2, s1) (i2, s2)
フィールド = 部分集合 : 具体例その 2
フィールド = 部分集合
subnet0
instance0
instance1
instance2
subnet1 subnet2
(i0, s0) (i0, s1) (i0, s2)
(i1, s0) (i1, s1) (i1, s2)
(i2, s0) (i2, s1) (i2, s2)
初めての具体例その 3
セキュリティグループを追加してみる
sig Subnet {}
sig Instance {
subnet : Subnet,
}
run {}
セキュリティグループを追加してみる
sig Subnet {}
sig SecurityGroup {}
sig Instance {
subnet : Subnet,
securityGroup : SecurityGroup,
}
run {}
インスタンスにつきセキュリティグループは常にひとつ?
多重度の表現
▪ 対応する集合の要素の数を指定
▫ one : ちょうど 1 個
▫ lone : 0 個または 1 個
▫ set : 0 個以上
▫ some : 1 個以上
▪ ER 図における 1..* などに相当
関係に多重度を指定する
sig Subnet {}
sig SecurityGroup {}
sig Instance {
subnet : Subnet,
securityGroup : SecurityGroup,
}
run {}
関係に多重度を指定する
sig Subnet {}
sig SecurityGroup {}
sig Instance {
subnet : one Subnet,
securityGroups : some SecurityGroup,
}
run {}
セキュリティグループを複数持つインスタンスが出現
サブネット内には常に
インスタンスが存在するだろうか?
2 種類の検査コマンド
▪ pred
▫ 条件が成り立つ具体例を探索
▫ run コマンドで検査
▪ assert
▫ 条件が成り立たない反例を探索
▫ check コマンドで検査
具体例を探索する
sig Subnet {}
sig SecurityGroup {}
sig Instance {
subnet : one Subnet,
securityGroup : some SecurityGroup,
}
run {}
具体例を探索する
sig Subnet {}
sig SecurityGroup {}
sig Instance {
subnet : one Subnet,
securityGroup : some SecurityGroup,
}
pred subnetShouldNotBeEmpty {
all s : Subnet | some subnet.s
}
run subnetShouldNotBeEmpty
具体例 : すべてのサブネットがインスタンスを持つ
反例を探索する
sig Subnet {}
sig SecurityGroup {}
sig Instance {
subnet : one Subnet,
securityGroup : some SecurityGroup,
}
pred subnetShouldNotBeEmpty {
all s : Subnet | some subnet.s
}
run subnetShouldNotBeEmpty
反例を探索する
sig Subnet {}
sig SecurityGroup {}
sig Instance {
subnet : one Subnet,
securityGroup : some SecurityGroup,
}
assert subnetShouldNotBeEmpty {
all s : Subnet | some subnet.s
}
check subnetShouldNotBeEmpty
反例 : インスタンスを持たないサブネットが存在する
Alloy によるモデル検査の流れ
▪ シグニチャとフィールドでモデルを定義
▪ 検査したい性質を記述
▫ pred + run : 性質を満たす具体例を探す
▫ assert + check : 反例を探す
▪ 結果を見て、必要ならモデルを修正
▫ テスト駆動開発に似た使用感
▫ 繰り返す過程で設計が洗練される
4
モデリング・ケーススタディ
システムをモデル化する際
頭の中では何が起きるのか?
Alloy によるモデル記述のコツ
▪ 最初から完璧を目指さない
▫ 可視化機能をうまく利用、TDD をイメージ
▫ 行き詰ったら定義の仕方を変えてみる
▫ 関係の方向を逆にするとうまくいったりする
▪ 必要な要素を見極める
▪ パーツごとに分割して考える
▫ システムの中で、分割しやすいラインを考える
サンプル : 単一のパブリックサブネットを持つ VPC
http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Scenario1.html
サンプルの構成要素
▪ AWS 上のリソースに関する条件
▫ EC2 インスタンス
▫ VPC、サブネット、インターネットゲートウェイ、
EIP
▫ ルートテーブル
▫ セキュリティグループ
▪ AWS 以外の一般論に関する条件
▫ CIDR、プロトコル、ポート番号など
パーツ 1 : CIDR に関する部分
▪ CIDR ブロック
▫ 含む / 含まれるを関係で定義
▫ 制約を与えて木構造(ループがない)にする
▪ プロトコル
▫ TCP、UDP、ICMP
▪ ポート番号
▫ ICMP のとき、かつそのときに限り空集合
パーツ 1 の正しくない例
パーツ 1 の正しい例
パーツ 2 : EC2 インスタンスに関する部分
▪ EC2 インスタンス
▫ ちょうど 1 個のサブネットに属する
▫ 1 個以上のセキュリティグループを持つ
▪ サブネット、VPC
▫ ちょうど 1 個の CIDR ブロックを持つ
▪ インターネットゲートウェイ
▪ Elastic IP アドレス
パーツ 3 : ルートテーブルに関する部分
▪ ルートテーブル
▫ 0 個以上のルート設定を持つ
▪ ルート
▫ Destination となる CIDR ブロック
▫ Target は以下のいずれか(= 和集合の要素)
■ EC2 インスタンス
■ インターネットゲートウェイ
パーツ 4 : セキュリティグループに関する部分
▪ 構造はルートテーブルと似ている
▪ セキュリティグループ
▫ 0 個以上のイン / アウトバウンドルールを持つ
▪ ルール
▫ プロトコル、ポート番号
▫ Source / Destination
■ CIDR ブロックとセキュリティグループの和集合
仕様から設計を発見したい
具体例を見つけたい仕様を記述する
▪ Web サーバのインスタンスが 1 つ存在
▫ インターネットから HTTPS 接続可能
▫ 管理用のネットワークから SSH 接続可能
▫ その他の場所からは接続不可能
▪ 「接続可能」の条件を定式化
▫ ルーティングが正しく設定されている
▫ セキュリティーグループが解放されている
サンプルと同じ構成を自動で設計!
5
まとめ
結局、この 25 分間で
我々は何を得たのか?
本日のまとめ
▪ 形式手法で設計を検証できる
▪ ツールは使い方が肝心
▪ インフラ設計に Alloy がおすすめ
AWS での「やっちまった」が
減ることを祈って
Presented by
チェシャ猫 (@y_taka_23)
CREDITS
Special thanks to all the people who made and released
these awesome resources for free:
▪ Presentation template by SlidesCarnival
▪ Photographs by Unsplash

More Related Content

What's hot

DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
Shota Imai
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
Motokawa Tetsuya
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
 
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャTensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャ
HitoshiSHINABE1
 
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかRustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
Kosuke Shinoda
 
「日本語LaTeX」が多すぎる件について
「日本語LaTeX」が多すぎる件について「日本語LaTeX」が多すぎる件について
「日本語LaTeX」が多すぎる件について
Takayuki Yato
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」
西岡 賢一郎
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
nishio
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
 

What's hot (20)

DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャTensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャ
 
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったかRustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
 
「日本語LaTeX」が多すぎる件について
「日本語LaTeX」が多すぎる件について「日本語LaTeX」が多すぎる件について
「日本語LaTeX」が多すぎる件について
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 

Viewers also liked

Alloy ではじめる簡単モデル検査
Alloy ではじめる簡単モデル検査Alloy ではじめる簡単モデル検査
Alloy ではじめる簡単モデル検査
y_taka_23
 
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
Hiroyuki Hiki
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
Keisuke Nishitani
 
Learn You a Frege for Great Good!
Learn You a Frege for Great Good!Learn You a Frege for Great Good!
Learn You a Frege for Great Good!
y_taka_23
 
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoFission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyo
y_taka_23
 
猫でもわかる! モデル検査器 SPIN 入門
猫でもわかる! モデル検査器 SPIN 入門猫でもわかる! モデル検査器 SPIN 入門
猫でもわかる! モデル検査器 SPIN 入門
y_taka_23
 
Frege, What a Non-strict Language
Frege, What a Non-strict LanguageFrege, What a Non-strict Language
Frege, What a Non-strict Language
y_taka_23
 
すごい Frege たのしく学ぼう!
すごい Frege たのしく学ぼう!すごい Frege たのしく学ぼう!
すごい Frege たのしく学ぼう!
y_taka_23
 
Hello, Type Systems! - Introduction to Featherweight Java
Hello, Type Systems! - Introduction to Featherweight JavaHello, Type Systems! - Introduction to Featherweight Java
Hello, Type Systems! - Introduction to Featherweight Java
y_taka_23
 
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
y_taka_23
 
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
y_taka_23
 
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
y_taka_23
 
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
Takuya Iwatsuka
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
y_taka_23
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
 

Viewers also liked (15)

Alloy ではじめる簡単モデル検査
Alloy ではじめる簡単モデル検査Alloy ではじめる簡単モデル検査
Alloy ではじめる簡単モデル検査
 
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
Learn You a Frege for Great Good!
Learn You a Frege for Great Good!Learn You a Frege for Great Good!
Learn You a Frege for Great Good!
 
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoFission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyo
 
猫でもわかる! モデル検査器 SPIN 入門
猫でもわかる! モデル検査器 SPIN 入門猫でもわかる! モデル検査器 SPIN 入門
猫でもわかる! モデル検査器 SPIN 入門
 
Frege, What a Non-strict Language
Frege, What a Non-strict LanguageFrege, What a Non-strict Language
Frege, What a Non-strict Language
 
すごい Frege たのしく学ぼう!
すごい Frege たのしく学ぼう!すごい Frege たのしく学ぼう!
すごい Frege たのしく学ぼう!
 
Hello, Type Systems! - Introduction to Featherweight Java
Hello, Type Systems! - Introduction to Featherweight JavaHello, Type Systems! - Introduction to Featherweight Java
Hello, Type Systems! - Introduction to Featherweight Java
 
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
 
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
 
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
 
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
 

Similar to 形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta

Example of exiting legacy system
Example of exiting legacy systemExample of exiting legacy system
Example of exiting legacy system
TakamchiTanaka
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
KinebuchiTomo
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
SORACOM, INC
 
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic BeanstalkAWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
Amazon Web Services Japan
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
 
インフラ系自主トレするならAWS
インフラ系自主トレするならAWSインフラ系自主トレするならAWS
インフラ系自主トレするならAWS
Yasuhiro Araki, Ph.D
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
Amazon Web Services Japan
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
fd0
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
Tomohiro Ohtake
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
Tetsuya Mase
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
tnoda
 
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
SORACOM, INC
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
 
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話
Tsuyoshi Torii
 
Spring3.1概要x di
Spring3.1概要x diSpring3.1概要x di
Spring3.1概要x di
Yuichi Hasegawa
 
Fabric + Amazon EC2で快適サポート生活 #PyFes
Fabric + Amazon EC2で快適サポート生活 #PyFesFabric + Amazon EC2で快適サポート生活 #PyFes
Fabric + Amazon EC2で快適サポート生活 #PyFes
Sho Shimauchi
 
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンAWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
seiichi arai
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
Takafumi Ikeda
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -
SORACOM, INC
 
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
真吾 吉田
 

Similar to 形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta (20)

Example of exiting legacy system
Example of exiting legacy systemExample of exiting legacy system
Example of exiting legacy system
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
 
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic BeanstalkAWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
 
インフラ系自主トレするならAWS
インフラ系自主トレするならAWSインフラ系自主トレするならAWS
インフラ系自主トレするならAWS
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
 
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話
 
Spring3.1概要x di
Spring3.1概要x diSpring3.1概要x di
Spring3.1概要x di
 
Fabric + Amazon EC2で快適サポート生活 #PyFes
Fabric + Amazon EC2で快適サポート生活 #PyFesFabric + Amazon EC2で快適サポート生活 #PyFes
Fabric + Amazon EC2で快適サポート生活 #PyFes
 
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンAWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -
 
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
 

Recently uploaded

Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo Lab
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo Lab
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo Lab
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
Sony - Neural Network Libraries
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
Toru Tamaki
 
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログLoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
CRI Japan, Inc.
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
Natsutani Minoru
 
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
Sony - Neural Network Libraries
 
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
Toru Tamaki
 
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
chisatotakane
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
たけおか しょうぞう
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 

Recently uploaded (12)

Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
 
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログLoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
 
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
 
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
 
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 

形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta