クラウド・アプリケーション・モデリングへのアプローチ
DESCRIPTION
2010-05-14Hadoop座談会TRANSCRIPT
![Page 1: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/1.jpg)
クラウド アプリケーション モデリング へのアプローチ 浅海智晴
匠Lab
2010年5月12日
![Page 2: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/2.jpg)
文脈
![Page 3: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/3.jpg)
活動の概要
![Page 4: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/4.jpg)
活動対象の技術
![Page 5: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/5.jpg)
SIMPLEMODELING
![Page 6: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/6.jpg)
SimpleModelingの本
![Page 7: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/7.jpg)
モデルの軸
![Page 8: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/8.jpg)
ミッシングリンク
![Page 9: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/9.jpg)
メッセージフロー図
![Page 10: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/10.jpg)
メッセージフローの理由
![Page 11: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/11.jpg)
SIMPLEMODELER
![Page 12: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/12.jpg)
SimpleModeler
企画中
CSV
Mindmap(Xmind)
SimpleModelリポジトリ(Maven project)
Web仕様書
クラス図
Javaプログラム
Grailsプログラム
convert
import
import
html
java
grails
project
Scala DSL
Excel
import
検証結果
verify
ステートマシーン図
Google App Engine/Pythonプログラム
Google App Engine Oilプログラム
gae
gaeo
テストセット
testset
Google App Engine/Javaプログラム
gaej
![Page 13: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/13.jpg)
Scala DSL package com.yorozu import org.simplemodeling.dsl._ import org.simplemodeling.dsl.datatype._ import org.simplemodeling.dsl.domain._ import org.simplemodeling.dsl.domain.values._ case class DER製品 extends DomainResource { term = "製品" caption = "製品" brief = <t></t> description = <text></text> id("製品Id", DVI製品Id()) attribute("製品Name", DVN製品Name()) } case class DVI製品Id extends DomainValueId { term = "製品Id" caption = "製品Id" brief = <t></t> description = <text></text> attribute("value", XString) } case class DVN製品Name extends DomainValueName { term = "製品Name" caption = "製品Name" brief = <t></t> description = <text></text> attribute("value", XString) }
![Page 14: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/14.jpg)
クラス図
![Page 15: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/15.jpg)
Scala DSL→ステートマシーン図
package com.yorozu import org.simplemodeling.dsl._ import org.simplemodeling.dsl.datatype._ import org.simplemodeling.dsl.domain._ import org.simplemodeling.dsl.domain.values._ case class DER商品 extends DomainResource { term = "商品" caption = "商品" brief = <t></t> description = <text></text> id("商品Id", DVI商品Id()) attribute("商品Name", DVN商品Name()) association("製品", DER製品(), OneMore) statemachine(DM商品状態()) } ・・・中略・・・ case class DM商品状態 extends DomainStateMachine { term = "商品状態" caption = "商品状態" brief = <t></t> description = <text></text> state(DMS入荷待()) state(DMS在庫中()) state(DMS配送中()) state(DMS販売完()) }
case class DMS入荷待 extends DomainState { term = "入荷待" caption = "入荷待" brief = <t></t> description = <text></text> transition(DEE商品入荷(), DMS在庫中()) } case class DMS在庫中 extends DomainState { term = "在庫中" caption = "在庫中" brief = <t></t> description = <text></text> transition(DEE顧客購入(), DMS配送中()) transition(DEE顧客購入(), DMS販売完()) } case class DMS配送中 extends DomainState { term = "配送中" caption = "配送中" brief = <t></t> description = <text></text> transition(DEE商品配送(), DMS販売完()) } case class DMS販売完 extends DomainState { term = "販売完" caption = "販売完" brief = <t></t> description = <text></text> }
![Page 16: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/16.jpg)
ステートマシーン図と状態遷移表
![Page 17: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/17.jpg)
関連
<<aggregate>>
<<part>>
関連の種類 関連(association) 集約 (aggregation) 合成 (composition) whole-partの合成
多重度 1, 0..1(?), 1..N(+), 0..N(*)
DataStore Id Key, String, Long
物理ID、論理ID エンティティ参照
物理ID、論理ID
自動採番、手動採番 物理更新、論理更新 物理削除、論理削除 unary、binary リンク参照、Query参照 キャッシュ有無 トランザクション
気にしない、BASE、ACID
![Page 18: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/18.jpg)
G3フレームワーク
![Page 19: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/19.jpg)
g3 DSL例(1)
class Join extends G3Application {
agent('compute) {
case x: Int => x + 100
}
start(List(1, 2, 3, 4, 5)) split() publish("compute") join() aggregate()
}
Enterprise Integration Patterns Splitter/Aggregator
![Page 20: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/20.jpg)
g3 DSL 例(2)
class TwitterScan extends G3Application {
service('demogon, "http://[user]:[password]@twitter.com/statuses/user_timeline/[user].atom")
start invoke("demogon") agent {
case AtomFeed(feed) => feed.toString
case _ => "???"
} agent {
x => println("==> " + x)
x
}
}
RESTサービス AtomFeed
![Page 21: クラウド・アプリケーション・モデリングへのアプローチ](https://reader033.vdocuments.net/reader033/viewer/2022060112/556a73ded8b42a7c758b45ad/html5/thumbnails/21.jpg)
論点
• メタモデルの対応点
• 静的構造モデル
• BASE対応
• DSLによる特性の定義とDSLコンパイラで対応できないか?
• 振舞いモデル
• 故障、遅延、規模をどう扱うか
• メッセージフローモデルで対応できないか?
• DSL
• 有効性、使いどころ
• プログラミング・モデル
• 故障、遅延、規模を扱うためのプログラミング・モデル、フレームワークはどのようなものか