$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CleanArchitecture17章&18章
Search
ssknnm
October 28, 2020
Business
0
210
CleanArchitecture17章&18章
CleanArchitectureの17章と18章です
ssknnm
October 28, 2020
Tweet
Share
More Decks by ssknnm
See All by ssknnm
CleanArchitecture_31章_32章.pdf
ssknnm
0
89
CleanArchitecture23章&24章
ssknnm
0
280
CleanArchitecture第5章&第6章
ssknnm
0
100
Other Decks in Business
See All in Business
株式会社エンミッシュ 採用資料
enmish
1
470
夜を制する者が “AI Agent 大民主化時代” を制する
icoxfog417
PRO
5
5.5k
Cierpa&Co._Culture Deck_202512
cierpa0905
PRO
0
5k
イクシアス株式会社 会社紹介資料
ixyas
0
2.6k
不感対策ソリューション 詳細資料
jtes
0
360
Chatwork×BPaaS×AIエージェントで創る 次世代コーディネート基盤
kubell_hr
0
1.5k
メドピアグループ紹介資料
medpeer_recruit
10
140k
週4社員しながら個人開発にベットする / Betting on Personal Projects While Working a Four-Day Week
kohii00
3
2.9k
株式会社なぞるマーケティング組織開発の考え方
nazoru
PRO
0
250
セブンデックス 採用資料
sevendex
1
3.7k
ペイジェント採用資料
paygent
0
23k
CREALを知る
creal
PRO
0
1.5k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
73
5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
How to train your dragon (web standard)
notwaldorf
97
6.4k
Designing for humans not robots
tammielis
254
26k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Building Adaptive Systems
keathley
44
2.9k
Agile that works and the tools we love
rasmusluckow
331
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
The Pragmatic Product Professional
lauravandoore
37
7.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
The Cult of Friendly URLs
andyhume
79
6.7k
Transcript
CleanArchitecture 17章&18章 Sasaki
17章 バウンダリー:境界線を引く ソフトウェアの要素を分離し、お互いのことがわからないように制限する →依存関係がない方がよいって意味だと解釈した メリット・目的:システム構築・維持の人件費を最小限に抑えることができる 人々のパワーを奪うもの:結合・・・それも早すぎる決定との結合
失敗例 p社 オブジェクトのインスタンスを分ける、サーバの台数の意思決定早すぎた。 →開発の労力がすごくかかった w社 SOAを視野に入れたツールを導入するのが早すぎた →伝播の遅延・キューの待ち時間ができた・いちいちサービスを立ち上げないといけない
成功例 FitNesse データはスタブ→必要になったら本物のDBに接続 ビジネスツールとデータベースの間に境界線を引いたことでDBの洗濯を1年以上遅らせ ることができた。DBを使っていない間厄介な問題(スキーマ、クエリ、パスワードなど)に 18ヶ月も直面することがなく開発を進めることができた。
成功から学ぶ 「重要なもの」と「重要でないもの」を分ける 重要…ビジネルスール 重要ではない…GUIツール(入出力はビジネスルールに直接関係ない)、DB(データの もビジネスルールと直接関係ない、スタブを使えばいい)
プラグインアーキテクチャ プラグインいよってスケーラブルで保守可能なシステムアーキテクチャを確立することが できる! UI・SOAなどをプラグインとして扱うことで様々な技術に置き換え可能 →プラグイン構造を前提に着手することで変更に強いシステムになる そのためには境界線をきちっと引くことが大事である →単一責任の原則が教えてくれる
17章の結論 システムのビジネス要件と関係のないところ(db、フレームワーク、DI)の意思決定は遅く てもいい。 コアのビジネスに関係しないところはプラグインにしておく。
18章 境界線の解剖学 ソフトウェアコンポーネント間の境界を超える通信はいろいろな形のものがある。 • ソースコード • 恐怖のモノリス • デプロイコンポーネント • スレッド
• ローカルプロセス • サービス
ソースコード ソースコードのモジュールを変更すると他のソースコードのモジュールも変更や再コンパ イルをするなどして、デプロイし直す必要があるかもしれないからだ。
恐怖のモノリス .jarや.exeなどの内部的な話?だと解釈した(正直よくわかってない) 下位レベルのクラス→上位レベルのクラス 実行時の依存性とコンパイル時の依存性の両方で同じ方向を向くため
デプロイコンポーネント 動的リンクライブラリのこと
スレッド 実行のスケジュールや順序を整理する方法
ローカルプロセス 上位コンポーネントの一種 ローカルプロセスの境界を超える通信:OSのシステムコール、データのマーシャルとアン マーシャr、プロセス間のコンテキストスイッチetc….
サービス 一般的にコマンドラインや同等のシステムコールで開始されるプロセスのこと。 ローカルプロセスと同じルールが適用される。下位レベルのサービスは上位レベルの サービスにプラグインされるべきである。
まとめ 下位レベルのプロセスを上位レベルのプロセスのプラグインにすることが目的である。 システムの境界を意識して開発をしたことがないので正直ピンとこなかった