Architecture Kata
座学教材

アーキテクチャの基礎を学ぶ

Architecture Kata を始める前に知っておきたい、アーキテクチャの考え方

このページでは、Architecture Kata ワークに入る前の前提知識として、 ソフトウェアアーキテクチャとアーキテクチャ特性の基本を学びます。 研修の座学パート(30〜45分)の教材としてお使いください。

ソフトウェアアーキテクチャとは

ソフトウェアアーキテクチャとは、システム全体の「骨格」のことです。 建築に例えると、間取りや構造(木造か鉄筋か)を決めることに相当します。

具体的には、以下の4つの要素で構成されます。

1システムの構造

マイクロサービス、モノリス、レイヤードなど、システムの「形」を決めるもの

2アーキテクチャ特性

可用性、セキュリティ、パフォーマンスなど、システムが備えるべき「品質」

3アーキテクチャ決定

「データベースは RDB を使う」「認証は外部サービスに委譲する」といった重要な判断

4設計指針

「マイクロサービス間は非同期通信を基本とする」といった開発チームが従うルール

ポイント: アーキテクチャは「何を作るか(機能)」ではなく「どう作るか(構造と品質)」を決めるものです。


機能要件と非機能要件のちがい

システムに求められる要件は、大きく2つに分けられます。

機能要件

システムが「何をするか」

  • ユーザーがログインできる
  • 商品を検索できる
  • 注文履歴を表示できる

「動くかどうか」でテストできる

非機能要件(= アーキテクチャ特性)

システムが「どのように動くか」

  • 1秒以内にレスポンスを返す
  • 99.9% の稼働率を維持する
  • 同時10万ユーザーに対応する

「どの程度うまく動くか」の基準

機能要件は「仕様書に書いてある」ことが多いですが、非機能要件は「書かれていないけれど当然求められる」ことが多く、見落とされがちです。アーキテクチャ設計の本質は、この非機能要件(アーキテクチャ特性)をどう満たすかにあります。


12のアーキテクチャ特性

Architecture Kata ワークでは、以下の12の特性から重要なものを3つ選びます。 まずはそれぞれの意味を理解しましょう。

可用性

Availability

システムが止まらないこと

例: 銀行のATMが24時間365日使える

スケーラビリティ

Scalability

負荷増加に対応できること

例: セール時にアクセスが10倍になっても耐えられる

パフォーマンス

Performance

レスポンスが速いこと

例: 検索結果が0.5秒以内に返る

セキュリティ

Security

不正アクセスから守られていること

例: 個人情報が暗号化されて保存される

保守性

Maintainability

コードを変更しやすいこと

例: 決済方法の追加が既存機能に影響しない

テスト容易性

Testability

テストを書きやすいこと

例: 各コンポーネントを独立してテストできる

デプロイ容易性

Deployability

リリースを素早く安全に行えること

例: 1日に何度でもデプロイできる

信頼性

Reliability

正確に動き続けること

例: 送金処理で金額が1円もずれない

拡張性

Extensibility

新機能を追加しやすいこと

例: 新しい決済手段をプラグインとして追加できる

監視容易性

Observability

システムの状態を把握しやすいこと

例: エラー発生時に原因箇所をすぐ特定できる

コスト効率

Cost

費用対効果が高いこと

例: ピーク時以外はサーバーを自動縮小してコスト削減

監査可能性

Auditability

操作履歴を追跡・証明できること

例: 誰がいつどのデータを変更したか記録されている


アーキテクチャの本質はトレードオフ

すべてのアーキテクチャ特性を最高レベルで満たすことは不可能です。 ある特性を高めると、別の特性が犠牲になります。これがトレードオフです。

パフォーマンス セキュリティ

暗号化処理を厳重にすると、レスポンスは遅くなる

スケーラビリティ コスト効率

大量のサーバーを常時稼働させれば負荷には強いが、コストが跳ね上がる

可用性 信頼性

システムを止めずに動かし続けると、データの整合性チェックが難しくなる場合がある

「最善のアーキテクチャを狙ってはいけない。少なくとも最悪でないアーキテクチャを狙おう。」― 『ソフトウェアアーキテクチャの基礎』Mark Richards & Neal Ford

だからこそ「何を選んだか」だけでなく「何を捨てたか、そしてなぜか」を説明できることが重要です。 Architecture Kata ワークでは、この思考プロセスを繰り返し練習します。


身近な例で考える ― デジタルバンクの場合

自分たちの仕事に当てはめて考えてみましょう。 デジタルバンクのシステムでは、どのアーキテクチャ特性が重要でしょうか?

インターネットバンキングシステム

顧客がスマホやPCから残高照会・振込・ローン申込などを行うシステム。 1日あたり50万件のトランザクションを処理し、24時間365日の稼働が求められる。

考えてみよう

  1. このシステムで最も重要なアーキテクチャ特性は何でしょうか?3つ選んでみてください。
  2. なぜその3つを選びましたか?他の特性を「捨てた」理由は?
  3. もし「コスト効率」を最優先にしたら、何が犠牲になりそうですか?

ヒント: 多くの銀行システムでは、可用性・セキュリティ・信頼性が上位に来ます。 しかし「なぜパフォーマンスよりセキュリティを優先するのか」を 自分の言葉で説明できることが大切です。正解は一つではありません。


もっと学びたい方へ


基礎を学んだら、実践してみましょう

Architecture Kata ワークでは、ここで学んだ知識を使って グループでアーキテクチャ設計に挑戦します。

Architecture Kata を始める →