QUIZ 15分

Q1. 12-Factor App の Factor 3(Config)で推奨されている設定の管理方法はどれか?

A. アプリケーションコード内に定数として定義する B. 環境変数として外部から注入する C. 設定ファイルをGitリポジトリにコミットする D. データベースに設定値を保存する

答えを見る

正解: B

Factor 3 では、設定を環境変数に格納することを推奨しています。これにより、コードを変更せずに環境ごとに異なる設定を適用でき、秘密情報がコードベースに含まれるリスクを回避できます。


Q2. マルチステージビルドの主な目的として最も適切なものはどれか?

A. ビルド速度を向上させるため B. 本番イメージからビルドツールを除外しサイズとセキュリティを改善するため C. 複数のアプリケーションを1つのイメージに統合するため D. Docker Hub のプルレート制限を回避するため

答えを見る

正解: B

マルチステージビルドの主目的は、ビルドに必要なツール(コンパイラ、devDependencies等)を最終的な本番イメージから除外することです。これによりイメージサイズが大幅に削減され、攻撃対象領域(Attack Surface)も縮小されます。


Q3. イミュータブルインフラストラクチャの原則として正しいものはどれか?

A. サーバーに問題が発生したらSSHでログインしてパッチを当てる B. サーバーの状態を変更する場合は新しいイメージを作成してサーバーを入れ替える C. 全てのサーバーに同じ設定管理ツール(Ansible等)を定期実行する D. サーバーを長期間稼働させてコスト効率を上げる

答えを見る

正解: B

イミュータブルインフラでは、稼働中のサーバーを変更することはありません。変更が必要な場合は、新しいイメージをビルドし、そのイメージから新しいサーバーを起動して古いサーバーと入れ替えます。これにより Configuration Drift を防止できます。


Q4. GitOps において「Pull型」デプロイモデルの最大のメリットはどれか?

A. デプロイ速度が速い B. クラスタの認証情報をCI/CDパイプラインの外部に保持できる C. Git の履歴が不要になる D. 手動デプロイが可能になる

答えを見る

正解: B

Pull型デプロイでは、GitOps エージェント(ArgoCD/Flux)がクラスタ内で動作し、Git リポジトリを監視します。CI/CD パイプラインはコードのビルドと Git への push のみを行い、クラスタへのアクセス権限を持つ必要がありません。これによりセキュリティが大幅に向上します。


Q5. distroless イメージの特徴として正しくないものはどれか?

A. シェル(bash/sh)が含まれていない B. パッケージマネージャが含まれていない C. TLS証明書が含まれている D. デバッグが容易である

答えを見る

正解: D

distroless イメージにはシェルがないため、docker exec でコンテナに入ってデバッグすることができません。デバッグ用には :debug タグのイメージが用意されていますが、本番では通常のdistrolessを使用します。TLS証明書やタイムゾーンデータは含まれています。


Q6. 12-Factor App の Factor 6(Processes)に従うと、セッション情報はどこに保存すべきか?

A. アプリケーションプロセスのメモリ内 B. ローカルファイルシステム C. Redis などの外部バックエンドサービス D. 環境変数

答えを見る

正解: C

Factor 6 ではプロセスをステートレスにすることを求めています。セッションなどの状態はRedisやMemcachedなどの外部バックエンドサービス(Factor 4)に保存します。これにより水平スケーリングが可能になります。


Q7. ArgoCD の selfHeal 機能が有効な場合、kubectl で手動変更を行うとどうなるか?

A. 変更はそのまま維持される B. ArgoCD が Git の状態に自動的に戻す C. エラーが発生して変更が拒否される D. ArgoCD が停止する

答えを見る

正解: B

selfHeal が有効な場合、ArgoCD は定期的にクラスタの実際の状態と Git リポジトリの宣言された状態を比較(リコンサイル)します。手動変更によるドリフトを検出すると、自動的に Git の状態に戻します。


Q8. Blue-Green デプロイメントでロールバックを行う際に必要な操作はどれか?

A. 前バージョンのコードを再ビルドしてデプロイし直す B. ロードバランサーのトラフィックを旧環境に切り替える C. データベースのマイグレーションをロールバックする D. 全てのサーバーにSSHでログインして設定を戻す

答えを見る

正解: B

Blue-Green デプロイメントでは、旧環境(Blue)がそのまま稼働しています。ロールバックはロードバランサー(ALB等)のターゲットグループを旧環境に切り替えるだけで完了します。再ビルドやSSHは不要で、数秒でロールバックが完了します。