クイズの説明
Step 2「アーキテクチャ設計」で学んだ内容の理解度を確認します。全8問、80%(7問)以上正解で合格です。
問題
Q1. C4モデルのLevel 1(System Context)で描くべき内容として最も適切なのはどれですか?
- A) クラスの継承関係とメソッド一覧
- B) 設計対象のシステムと外部システム・ユーザーの関係
- C) マイクロサービス間の通信プロトコル
- D) データベースのテーブル設計
答えを見る
正解: B
C4モデルのLevel 1(System Context)は、設計対象のシステムを1つのボックスとして描き、それを取り巻く外部システム(銀行API、カードネットワーク等)やユーザー(エンドユーザー、加盟店等)との関係を鳥瞰図として示すものです。内部構造はLevel 2以降で詳細化します。
Q2. NexPayのサービス分解においてDDDの境界づけられたコンテキストを適用する最大の理由はどれですか?
- A) コードの行数を均等に分割するため
- B) ドメインの意味的な境界に沿って分割することで、チームの自律性と変更の独立性を確保するため
- C) マイクロサービスの数を最大化するため
- D) すべてのサービスを同じ技術スタックに統一するため
答えを見る
正解: B
DDDの境界づけられたコンテキストは、ビジネスドメインの意味的な境界に基づいてサービスを分割します。決済・送金・投資はそれぞれ異なるドメイン知識と用語体系を持つため、独立したコンテキストとして分割することで、各チームが自律的に開発・デプロイでき、変更の影響範囲を限定できます。
Q3. 決済フローでの「同期処理」と「非同期処理」の境界として最も適切なのはどれですか?
- A) すべて同期処理で完結させるべき
- B) 決済完了レスポンスまでは同期、ポイント付与・通知は非同期
- C) すべてを非同期キューで処理すべき
- D) 決済承認は非同期、売上確定は同期
答えを見る
正解: B
決済フローでは、ユーザーが待機する「決済完了レスポンス」までの処理(残高確認→与信承認→残高引落)は同期処理で行い、その後のポイント付与、通知送信、精算データ蓄積などはKafka経由の非同期処理で行います。これにより、ユーザー体験(低レイテンシ)と後続処理の信頼性を両立します。
Q4. フィンテックの残高管理で浮動小数点(float/double)ではなく整数(BIGINT)を使用する理由はどれですか?
- A) 整数のほうがストレージ容量が小さいから
- B) 浮動小数点では丸め誤差が発生し、金融計算で1円の誤差も許されないから
- C) PostgreSQLが浮動小数点をサポートしていないから
- D) 整数のほうがソート処理が速いから
答えを見る
正解: B
浮動小数点(IEEE 754)は10進数を正確に表現できず、丸め誤差が発生します(例: 0.1 + 0.2 = 0.30000000000000004)。金融システムでは1円の誤差も法的問題に直結するため、金額は整数(円単位のBIGINT)またはDECIMAL型で管理します。
Q5. イベントソーシングをNexPayの決済サービスに採用する最大の理由はどれですか?
- A) コードが単純になるから
- B) 完全な監査証跡が法的に要求されており、すべての状態変更をイミュータブルに記録する必要があるから
- C) データベースのストレージ容量を節約できるから
- D) リアルタイム処理が不要になるから
答えを見る
正解: B
フィンテックでは、PCI DSSや資金決済法により完全な監査証跡(いつ、誰が、何を、どう変更したか)が法的に要求されます。イベントソーシングは、すべての状態変更をイミュータブルなイベントとして記録するため、自然に完全な監査証跡を提供します。過去の任意の時点での残高再計算も可能です。
Q6. PCI DSSのスコープ最小化がマイクロサービスアーキテクチャを推進する理由はどれですか?
- A) マイクロサービスのほうが開発速度が速いから
- B) カード情報を扱うサービスを最小限に分離することで、監査対象範囲とコンプライアンスコストを削減できるから
- C) モノリスアーキテクチャではPCI DSS準拠が不可能だから
- D) マイクロサービスのほうがセキュリティが高いから
答えを見る
正解: B
PCI DSSの監査は、カード会員データに触れるすべてのシステムが対象です。モノリスではシステム全体がスコープに入りますが、マイクロサービスではPayment ServiceとTokenization Serviceのみをスコープに限定できます。監査対象範囲の縮小は、コンプライアンスコストの大幅な削減につながります。
Q7. NexPayのマルチリージョン構成で、決済サービスのDR方式として「Active-Standby(Hot)」を選択する理由はどれですか?
- A) コストが最も安いから
- B) 決済の可用性要件(99.99%、RTO 5分)を満たすために、フェイルオーバー先が即座にトラフィックを受け入れられる必要があるから
- C) Active-Activeのほうが複雑すぎて実装できないから
- D) Hot Standbyは自動的にデータの整合性を保証するから
答えを見る
正解: B
決済基盤は99.99%(年間ダウンタイム52.6分)の可用性とRTO 5分が要件です。Hot Standbyは大阪リージョンに常時稼働可能な状態のクラスタを準備し、フェイルオーバー時にDNS切り替えとAuroraのフェイルオーバーのみで即座にトラフィックを受け入れます。Cold/Warm Standbyでは5分のRTOを満たせません。
Q8. 逆コンウェイの法則(Inverse Conway Maneuver)をNexPayに適用する意味として正しいのはどれですか?
- A) 技術スタックに合わせてチームを再編する
- B) 望ましいアーキテクチャ(サービス境界)に合わせてチーム構成を設計する
- C) チーム数を最小化してコストを削減する
- D) すべてのチームが同じサービスを担当する
答えを見る
正解: B
逆コンウェイの法則は、「組織構造がアーキテクチャを規定する」というConwayの法則を逆手に取り、望ましいアーキテクチャに合わせてチーム構成を設計するアプローチです。NexPayでは、決済・送金・投資・共通基盤の各サービス境界に対応するチームを編成し、各チームがサービスのFull Ownershipを持つことで、自律的な開発とデプロイを可能にします。
結果
7問以上正解の場合
合格です。 アーキテクチャ設計の各要素を確実に理解しています。システムコンテキスト、サービス分解、データアーキテクチャ、インフラ設計 — これらを統合したNexPayの全体像が描けるはずです。
「設計の骨格ができた。次は横断的関心事だ。セキュリティ、可観測性、パフォーマンス、DR — これらを各サービスに横串で通す設計を行う」 — 佐藤CTO
6問以下の場合
もう少し復習しましょう。 Step 2のレッスンを再度読み返してください。
- Q1-Q2を間違えた場合 → Step 2-1, 2-2を復習
- Q3-Q5を間違えた場合 → Step 2-2, 2-3を復習
- Q6-Q8を間違えた場合 → Step 2-3, 2-4を復習