Architecture as Code: パート2 - 基盤の構築
アーキテクチャを抽象的な概念から強制可能なコードに変換します。明示的な意思決定、自動検証、午前2時の本番障害を防ぐ生きたドキュメントを発見しましょう。
アーキテクチャを抽象的な概念から強制可能なコードに変換します。明示的な意思決定、自動検証、午前2時の本番障害を防ぐ生きたドキュメントを発見しましょう。
アーキテクチャ図が作成後数週間で時代遅れになったらどうなるか?Architecture as Codeが静的なドキュメントを実行可能で検証可能なシステム設計に変革する方法を発見しましょう。
フェラーリを維持する必要があるのに、自転車で十分な場合は?静的サイトジェネレーターが驚異的な速度、鉄壁のセキュリティ、ほぼゼロのコストを実現する方法を発見しましょう。
ユーザーとバックエンドサーバーの間に何があるのか疑問に思ったことはありますか?リバースプロキシがエンタープライズ設計で不可欠な理由と、それが本当に障害点となるのかを解説します。
複数のアプリケーションがデータベースに直接接続する—便利か、それとも破滅的か?エンタープライズアーキテクトがこの基本的な設計決定について議論する理由を探ります。
アイデンティティブローカーは複数のシステムで認証を集中管理しますが、実装の選択はセキュリティ、パフォーマンス、ユーザーエクスペリエンスに影響します。パターン、トレードオフ、落とし穴を理解しましょう。
高レベルモジュールは低レベルモジュールに依存すべきではありません。両方とも抽象に依存すべきです。この原則は従来の依存関係構造を逆転させますが、開発者はしばしばこれに違反する硬直したアーキテクチャを作成します。
クライアントは使用しないインターフェースに依存することを強制されるべきではありません。この原則は、実装者に不要なメソッドの負担をかける肥大化したインターフェースを防ぎますが、開発者はしばしばこれに違反する肥大化した抽象化を作成します。
サブタイプは、プログラムの正確性を損なうことなく基本タイプと置換可能でなければなりません。この原則は継承階層の健全性を保証しますが、開発者は一見無害な設計決定でこれを日常的に違反しています。
ソフトウェアエンティティは拡張に対して開いており、修正に対して閉じているべきである。この原則は脆弱性なしに柔軟性を約束するが、開発者は抽象化をいつ適用すべきか、いつそれが過剰設計になるかで苦労している。
クラスは変更する理由を1つだけ持つべきである。このシンプルな原則がSOLID設計の基盤を形成するが、開発者は「単一責任」とは何か、いつクラスを分割すべきかで苦労している。
モバイルデバイスは機密データを保存し、重要なサービスに接続します。データ侵害、リバースエンジニアリング、ランタイム攻撃からユーザーを保護するための基本的なセキュリティアーキテクチャの原則を学びます。
非同期リクエスト-レスポンスパターンが、長時間実行される操作を即座のレスポンスから切り離すことで、タイムアウトを防ぎ、ユーザーエクスペリエンスを向上させる方法を解説します。
バルクヘッドパターンがリソースを隔離し、分散システムでコンポーネントが障害を起こした際の影響範囲を制限することで、連鎖的な障害を防ぐ方法を解説します。
マテリアライズドビューパターンを使用して、特定のクエリ用に最適化された形式でデータを事前計算して保存することで、クエリパフォーマンスを向上させる方法と、データベースのマテリアライズドビューとの違いを学びます。
クレームチェックパターンを使用して、データを外部に保存し、軽量なトークンを渡すことで、メッセージングシステムで大きなペイロードを転送する課題を解決する方法を学びます。