コンテンツへスキップ
DedicatedPHP 接触
デザインガイド

進化するように設計されたPHPアプリケーションアーキテクチャ

優れたアーキテクチャは、ルールの変更、システムの統合、製品の運用にかかるコストを削減します。その品質は、レイヤーの数ではなく、意思決定と納品によって評価されます。

主な考え方
  • モデルの機能と責任。
  • 契約内容とデータ所有権を明確にする。
  • チームと業務に適した配布方法を選択してください。
  • 決定事項を記録し、実際の変化を通して検証する。

1. ドメインから始めます

関係者、プロセス、ルール、例外、および用語について説明します。技術的な境界は、フォルダやテーブルではなく、ビジネス上の責任を反映している場合に、より安定したものとなります。

  • ビジネス能力。
  • 規則と不変量。
  • 出演者と許可について。
  • 重要な出来事や決定。

2. 設計上の制約

すべてのコンポーネントには、変更の理由、インターフェース、そして所有者が必要です。有益な境界は共有知識を減らし、人為的な境界は真の独立性を伴わない変換と調整を増やします。

  • それが知っていること、そして隠していること。
  • 入力、出力、およびエラー。
  • 許可されている依存関係。
  • 契約テスト。

3. データを意思決定の手段として扱う

信頼できる情報源、一貫性、保持、移行を明確に定義する。テーブルを共有すると高速に感じられるが、目に見えない契約が生まれ、進化、セキュリティ、監査が困難になる。

  • 所有権とライフサイクル。
  • 即時的または最終的な一貫性。
  • 歴史とトレーサビリティ。
  • プライバシーとアクセス。

4. モノリス型か分散型かを選択する

モジュール型のモノリスは、チームと運用が共有されている場合に効果的な場合が多い。一方、境界、提供方法、規模、責任範囲が明確に異なる場合は、独立したサービスが適している。

  • チームの規模と自律性。
  • 独立したリリースの必要性。
  • 機能別の負荷と可用性。
  • ネットワーク、可観測性、および一貫性にかかるコスト。

5. 運用を考慮した設計

アーキテクチャには、構成、リリース、復旧、監視、およびサポートが含まれます。診断または復旧できないコンポーネントは、完全ではありません。

  • 環境設定。
  • ログ、メトリクス、トレース。
  • リリースとロールバック。
  • バックアップとリカバリ。

6. 決定事項を常に有効に保つ

ADR(代替的紛争解決)またはその他の簡略な形式で、背景、代替案、および結果を記録してください。制約条件が変更された場合は、決定内容を見直してください。文書を脈絡のないポリシーにしないでください。

  • 決定と期日。
  • 状況と力。
  • 却下された代替案。
  • 結果とレビューシグナル。

ガイドをアプリケーションに適用してください

私たちは、評価を実施に結びつけることなく、状況、証拠、選択肢を検討します。

評価を依頼する