ナレッジ

技術情報 (20)

AWS/Terraformの設計思想・構成パターン・運用の判断を読む。

はじめに読む

個別のテーマを読む前に、全体の考え方を知る

Webサービスを運用し続けるためのTerraform設計 ─ AWSのサービスを目的の単位で組み替える

AWSのサービスを組み合わせるたびに設計をやり直すと、プロジェクトごとに作りがばらつく。ECSを中心とするWebサービスを運用し続けるという目的の単位でTerraformを組み替え、環境ごとの記述を「宣言と配線」に絞る設計の考え方と、それを支える規則・品質の担保・運用の循環を解説する。

考え方を知る (6)

AWSで設計するときの前提を理解する

  1. これからAWSを利用して新たなサービスを構築する企業に向けて、「どのような体制でAWSを利用開始するか」という意思決定の整理を目的とする。ここで扱うのは単なる契約形態ではなく、責任・運用・知見の配置を含めた体制設計である。
    導入体制導入体制
  2. セキュリティ対策を一度構築して終わりにせず、運用担当者が定められた入口から安全に更新できる状態を作る。AWSとTerraformによる責務分離の考え方を、実装パターンへ展開できる形で整理する。
    設計思想運用の責務分離
  3. AWSにおけるアクセス制御はIAM(API操作レベル)とSecurity Group(ネットワーク通信レベル)の2レイヤーで構成される。アクセス先のサービスによってどちらが効くかが異なる。それぞれの役割の違いと、Terraformで一括管理する際の共通設計パターンを解説する。
  4. レガシー技術には物理的な上限という暗黙のガードレールがあったが、クラウドにはそれがない。ファイルストレージ、サーバー、データベース、ログという4つの領域を例に、レガシーとクラウドネイティブで設計の前提がどう変わるかを読み解く。
  5. オンプレミスでは「内側は安全、外側は危険」という境界の直感が成り立っていた。AWSではこの直感がそのまま通用しない。一般インターネット・AWSグローバルネットワーク・VPCプライベートネットワークの3つを区別し、「API認証」と「ネットワーク制限」が別のレイヤーであることを整理する。
  6. AWSのサービスを組み合わせるたびに設計をやり直すと、プロジェクトごとに作りがばらつく。ECSを中心とするWebサービスを運用し続けるという目的の単位でTerraformを組み替え、環境ごとの記述を「宣言と配線」に絞る設計の考え方と、それを支える規則・品質の担保・運用の循環を解説する。

構成パターンを探す (12)

課題に合う構成と、その判断の理由を知る

  1. テスト環境や限定公開ページのBASIC認証について、運用担当がSSM Parameter Storeを入口としてパスワード更新できる構成を整理する。
  2. 踏み台サーバを、監査や緊急対応にも耐えられる運用入口として設計する構成を整理する。更新の仕組みは、操作できる画面で確かめられる。
  3. コストの異変に気づくのが月末の請求書では遅い。Cost Explorer・Lambda・EventBridge Schedulerを組み合わせ、毎朝のコストをSlackへ通知する構成を解説する。通知文面や月次スレッド集約といった「読まれる通知」の設計まで固定化し、設定数個で導入できる形に整理した。
    構成パターン監視・通知コスト
  4. Amazon ECSのBlue/Greenデプロイには、CodeDeployに切替を任せる方式と、ECS自身が切替を行うネイティブ方式がある。承認の止め方、構成要素、インフラ管理とデプロイの責務分離の違いを整理し、選び方の判断軸を示す。
  5. ECSの環境変数とシークレットを、インフラ管理値・運用設定値・機密値の3系統に分ける。タスク定義の値の指定方式とTerraformのstateの性質から、誰がどの値を変え、変更がいつ反映されるかを整理する。
  6. ECSタスクの異常停止やデプロイ失敗は、CloudWatchの標準メトリクスには現れない。EventBridge・CloudWatch Logs・Metric Filterの3サービスを直列に束ね、イベントをメトリクス化して監視可能にする構成パターンを解説する。
    設計判断監視・通知
  7. プロジェクトで使用するIAMロール・ポリシー・ユーザー・グループをTerraformで一括管理する設計パターンを解説する。マネージドポリシーとインラインポリシーの使い分け、AWSクォータを踏まえた設計判断を紹介する。
  8. CloudFront・ALB・VPC Flow Logsを調査に使える状態にするログ分析基盤の設計を解説する。ログを送る側(配送)と受ける側(格納・参照)を分離し、スキーマはGlue Crawlerの自動推定に頼らずTerraformで明示定義する。その設計判断の理由を中心に整理する。
    設計判断ログ・分析
  9. 運用管理画面にサービス名やARNを書くと、構成が変わるたびに画面の修正が要る。Terraformがモジュールの出力から接続情報を組み立ててLambdaへ渡し、画面は情報の形と状態の語彙だけを知る構成にすると、サービスやリソースの増減に画面を直さずに追従できる。CDの進捗をデプロイ方式ごとの段階で見せる設計、権限の導き方、AIが開発しやすい構造としての位置づけを解説する。
  10. CloudFront continuous deployment(CloudFrontの継続的デプロイ)のヘッダー振り分けを使い、AIやスクリプトに本番ドメインからStagingの公開前の版を確認させる構成を整理する。人の確認は認証付きの確認用配信に分け、ヘッダーで届く経路を秘密として扱わない前提と、返った版を突き合わせる理由、運用で注意する点を示す。
  11. Security Groupを一括管理し、リソース間の通信許可をSecurity Group IDの参照で設計するパターンを解説する。IPアドレスに依存せず、公開する入口を必要最小限に絞るネットワークアクセス制御の実践を紹介する。
  12. VPCの中にあるサーバやデータベースへ人が入る方法を、「何に接続するか」「入口の性質」「認証と絞り込み」の3つの軸で整理する。SSHか踏み台かの二択にせず、公開しなくても届く手段から検討する順序を示す。

進め方を知る (1)

設計・開発・運用UIの進め方を知る

  1. 運用操作をCloudWatchダッシュボードに載せると、実行者を記録できず、更新の単位もダッシュボードに従属する。この2つの境界を確認したうえで、AWS由来の設計システムCloudscapeで管理画面を再構成する設計判断を解説する。

実例を見る (1)

実際に組んだ構成を見る

  1. ブラウザのポータルからVPNサーバーとデスクトップサーバーを起動・停止し、安全な経路でAWS上のデスクトップを利用する構成を解説する。スポットインスタンスと「使う時だけ起動する」運用で、常時稼働の数分の一のコストに抑える。各EC2の構成と、コスト・セキュリティの設計判断まで。

運用画面例 (5)

AWSに接続せず、運用の操作をそのまま確かめられる画面。データはすべて架空。

  1. 複数のコンテナのサービスを一覧にし、選んだサービスについて、イメージができてから利用者に届くまでの段階と稼働状態を見る。承認、ロールバック、タスク数の変更も試せる。
    段階の表示
    デプロイの履歴
    メトリクスとアラーム
  2. 公開中の版を出したまま、新しい版を本番と同じ経路で確かめてから入れ替える。3つの配信がそれぞれ誰に何を返すかを見ながら、届いた先を突き合わせ、昇格するか差し戻すかを決められる。
    3つの配信の役割
    返った版の突き合わせ
    昇格と差し戻し
  3. 種類の違う EC2 インスタンス(VPN サーバー、デスクトップ、NAT)をまとめて取り回す。起動と停止、接続の情報、夜間の自動停止、インスタンスごとの時間別の費用を試せる。
    EC2 の起動と停止
    夜間の自動停止
    時間別の費用
  4. プライベートネットワークへの唯一の入口を、運用担当が自分で新しくする。引き金の値を書き換えて構成を適用すると、鍵と OS が同時に新しくなる連鎖を、画面の中の案内で確かめられる。
    鍵と OS の入れ替え
    画面の中の案内
    操作の記録
  5. VPC の中にあるものへ入る経路を、使う時間だけ用意する。Verified Access が何かを図で示し、Client VPN との違いと、入口を常設しない作り方を画面の中の案内で確かめられる。
    Verified Access
    Client VPN との違い
    使うときだけ作る入口