Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
クリーンアーキテクチャ輪読会資料 27-29章
Search
メガネ男
March 16, 2020
Technology
0
38
クリーンアーキテクチャ輪読会資料 27-29章
参加しているコミュニティ、Challeng-Every-Monthの輪読会で作成した資料。
メガネ男
March 16, 2020
Tweet
Share
More Decks by メガネ男
See All by メガネ男
Amazon Builder's Library 輪読会資料 ジッターを伴うタイムアウト、再試行、およびバックオフ
kjman678
0
72
時系列解析 輪読会資料 1章
kjman678
0
34
Amazon Builder's Library 輪読会資料 分散システムでのフォールバックの回避
kjman678
0
59
クリーンアーキテクチャ輪読会資料 12-14章
kjman678
0
30
Amazon Builder's Library 輪読会資料 負荷制限を使用して過負荷を回避する
kjman678
0
37
Other Decks in Technology
See All in Technology
AI駆動開発 with MixLeap Study【大阪支部 #3】
lycorptech_jp
PRO
0
280
反脆弱性(アンチフラジャイル)とデータ基盤構築
cuebic9bic
2
120
製造業の課題解決に向けた機械学習の活用と、製造業特化LLM開発への挑戦
knt44kw
0
110
FAST導入1年間のふりかえり〜現実を直視し、さらなる進化を求めて〜 / Review of the first year of FAST implementation
wooootack
1
220
2025-07-25 NOT A HOTEL TECH TALK ━ スマートホーム開発の最前線 ━ SOFTWARE
wakinchan
0
180
MCPに潜むセキュリティリスクを考えてみる
milix_m
1
920
「AI駆動開発」のボトルネック『言語化』を効率化するには
taniiicom
1
230
「育てる」サーバーレス 〜チーム開発研修で学んだ、小さく始めて大きく拡張するAWS設計〜
yu_kod
1
210
私とAWSとの関わりの歩み~意志あるところに道は開けるかも?~
nagisa53
1
140
モバイルゲームの開発を支える基盤の歩み ~再現性のある開発ラインを量産する秘訣~
qualiarts
0
920
テキストからの実世界知能の実現に向けて
sumoai
0
110
地域コミュニティへの「感謝」と「恩返し」 / 20250726jawsug-tochigi
kasacchiful
0
110
Featured
See All Featured
How GitHub (no longer) Works
holman
314
140k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
Building Applications with DynamoDB
mza
95
6.5k
Docker and Python
trallard
45
3.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Building an army of robots
kneath
306
45k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Embracing the Ebb and Flow
colly
86
4.8k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
770
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
530
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Transcript
CA輪読会 27章-29章 2020/3/16(月) 22:00- 発表者:koji/メガネ男
27章 サービス:あらゆる存在 1/4 • サービスアーキテクチャ アーキテクチャは上位レベルの方針と下位レベルの詳細を分離し、を依存性の ルールに従う境界によって定義されるものである。 サービスを使用すること=アーキテクチャではない。 それはただのプロセスやプラット フォームの境界を超える関数呼び出しに
過ぎない、とボブおじさんは断じる。 2
27章 サービス:あらゆる存在 2/4 • サービスアーキテクチャ サービス毎にアプリケーションが別れていることがメリットと言われているけど、リ ソースやデータを介して間接的に繋がっている。 サービスごとに専属のチームがつき、スケーラブルであることがメリットと言われ ているが、サービスアーキテクチャだけがスケーラブルなわけではないし、開発・デ プロイ・運用の調整が重荷になることもある。
3
27章 サービス:あらゆる存在 3/4 • タクシー配車システムの例 状況:タクシーの検索、選択、発注サービスを各チームが保守・運用・開発してい る。 ここに、すべての動作に影響を与える新機能を追加すると、すべてのサービスは 結合していることから、すべてのサービスを変更する必要が生じる。 例:子猫の宅配機能。ネコアレルギー配慮のため、シフトや配車のシステムに影
響を及ぼす) 4
27章 サービス:あらゆる存在 4/4 • でもSOLIDの設計原則を慎重に検討すれば独立して開発・デプロイが可能。 • 新機能のデプロイは、再デプロイしなくても、新しいファイルをロードパスに追加す るだけで済む。→オープンクローズドの原則 • アーキテクチャの境界は、サービスではなく、サービス内部のコンポーネントで決
まる。 5
28章 テスト境界 1/3 • テストはシステムの一部であり、アーキテクチャの観点からは、対象、規模に関わ らず、すべてのテストは同じである • テストは依存性のルールに従うし、 アーキテクチャの円の最も外側にある •
テストはコンポーネントに常に依存するし、独立してデプロイ可能な、最も独立した システムコンポーネントである。 6
28章 テスト境界 2/3 • テストは普段デプロイしないので、設計と無関係と考えられがち。 システム安定化のため、設計段階でテストまで考慮する必要がある。 • 脆弱なテストの問題 共通のシステムコンポーネントを変更すると、何百や何千というテストが壊れる可 能性がある。
解決策は、変化しやすいものに依存しない設計を行うこと。 変化しやすい見た目の部分である GUIに依存すると、テストまでコロコロ 変わってしまいテストが手間になり、 テストがおろそかになるかも! 7
28章 テスト境界 3/3 • プロダクトのクラスやメソッドが変わると大量のテストを変更することになるので、 テストは脆弱になり、プロダクトのコードは柔軟性を失っていく。 • テスト段階から使用できるAPIを作成し、検証すればよい。 APIを使えば開発の影響をテストに与えずに済む。 •
ただし、テストAPIが完成物のシステムにデプロイされると危険なので、独立したコ ンポーネントに格納すべし。 8
29章 クリーン組込みアーキテクチャ 1/3 • ソフトウェアは消耗しないが、ファームウェアやハードウェアは時代遅れになる。 その結果新しいソフトウェアが必要になる。 • 時代遅れになりやすいファームウェアは少なくして、ソフトウェアを多くすることが 望ましいのに、組み込みエンジニアでないエンジニアもファームウェアを書いてい る、とボブおじさんは憤慨。
組み込みソフトウェアのアーキテクチャをクリーンにして、寿命の短いファームウェ アではなく、寿命の長いソフトウェアに注力しよう。 9
29章 クリーン組込みアーキテクチャ 2/3 • 組み込みソフトウェアは動作すること、正しいこと、速く動くパフォーマンスが優先 され、長寿となるようクリーンなコードを作ることは考慮されていない。 • 組み込みエンジニアは、ターゲットハードウェアのボトルネック * という問題があ
る。 * ハードウェアの完成を待ってからコードを実行する必要があったり、ハードウェア に欠陥があるとコードの実行に支障をきたしたりといった、必要他のエンジニアが 気にしなくて済んでいる制約事項のこと。 10
29章 クリーン組込みアーキテクチャ 3/3 • 管理できていないファームウェアやハードウェアの依存関係によって、ソフトウェア が内部から破壊される可能性もある。 • ファームウェアとソフトウェアは明確に区分すべき。 OSはファームウェアとソフトウェアを分離する(HAL)。 クリーン組み込みアーキテクチャは買収等により
変わりかねないOSと、 ソフトウェアも 区分する(OSAL)。 11