#インフラ

447 件の記事

Terraform 実践 #8 ECS Fargate デプロイ — タスク定義、サービス、同じ ALB の後ろでの切り替え
読了 5分

Terraform 実践 #8 ECS Fargate デプロイ — タスク定義、サービス、同じ ALB の後ろでの切り替え

user_data 方式の限界を整理し、コンピューティング層をコンテナに世代交代させます。ECS クラスターと Fargate タスク定義、execution role と task role の区別、ip タイプのターゲットグループを持つサービスを作り、同じ ALB の後ろで EC2 とコンテナを並べて動かしながらリスナーの切り替えで乗り換えるところまで、コードで進めます。

Terraform 実践 #7 IAM のコード化 — インスタンスロール、最小権限、GitHub Actions OIDC
読了 4分

Terraform 実践 #7 IAM のコード化 — インスタンスロール、最小権限、GitHub Actions OIDC

aws_iam_policy_document データソースで信頼ポリシーと権限ポリシーを書き、インスタンスプロファイルで EC2 にロールを付与して、SSM Session Manager 接続とシークレット読み取りを完成させます。最小権限をリソース ARN 単位まで絞る方法と、GitHub Actions がアクセスキーなしで AWS のロールを引き受ける OIDC 連携まで、コードで作っていきます。

timestamptz の罠まとめ — PostgreSQL の時刻処理で間違えやすいこと
読了 5分

timestamptz の罠まとめ — PostgreSQL の時刻処理で間違えやすいこと

PostgreSQL の時刻処理の実践的な罠を集めました。timestamptz がタイムゾーンを保存するという誤解、結果がセッションの TimeZone によって違って見える原理、AT TIME ZONE が型によって逆に動く二重性、date_trunc・日付グルーピングが真夜中の基準をどこに置くかで変わる問題、未来の予定は timestamptz だけでは足りない理由(タイムゾーン規則の変更)、now() と clock_timestamp() の違いまで扱います。

Terraform 実践 #6 シークレット管理 — SSM vs Secrets Manager、write-only 引数
読了 5分

Terraform 実践 #6 シークレット管理 — SSM vs Secrets Manager、write-only 引数

シークレットの保管先として SSM Parameter Store と Secrets Manager をコストと機能で比較して選択基準を立て、Terraform 1.11 の ephemeral リソースと write-only 引数で DB パスワードが plan にも state にも残らない構成を作ります。アプリケーションがシークレットをランタイムに読む流れまで設計し、前回の平文問題を構造的に解決します。

UUID vs bigint 主キー — 性能差の実体と uuidv7
読了 4分

UUID vs bigint 主キー — 性能差の実体と uuidv7

主キー論争の定番である UUID vs bigint を、実測できる根拠で整理します。bigint が既定値である理由(サイズ・挿入の局所性・結合コスト)、UUID v4 がインデックスに無作為に挿入されて書き込みとキャッシュ効率を落とす原理、時系列順でその問題をほぼ解消した uuidv7 と PostgreSQL 18 の組み込み関数、uuidv7 に残るトレードオフ(生成時刻の露出・16 バイト)、そして内部 bigint + 外部 UUID の併用設計まで扱います。

N+1 クエリ問題 — 症状、検出、解決まで
読了 4分

N+1 クエリ問題 — 症状、検出、解決まで

ORM を使うサービスが遅くなる最もよくある原因、N+1 クエリを扱います。一覧 1 つにクエリが 101 回飛ぶ構造ができる原理(遅延ロード)、アプリケーションのログと pg_stat_statements の calls で検出する方法、JOIN・IN の一括ロード・ORM の即時ロードオプションという 3 つの解法、そして「画面が必要とするデータをクエリ数ではなく形で設計する」という予防原則まで扱います。

Terraform 実践 #5 RDS と S3 — データ層のコード化と安全装置
読了 4分

Terraform 実践 #5 RDS と S3 — データ層のコード化と安全装置

DB サブネットグループとセキュリティグループのチェイニングで隔離した PostgreSQL RDS をプライベートサブネットに作成し、gp3 ストレージとバックアップ、prevent_destroy の安全装置まで設定します。静的アセット用の S3 バケットをパブリックアクセスブロック付きで構成し、一時的に変数へ置いた DB パスワードが state に平文で残る問題を確認して、次回の課題として引き継ぎます。

PostgreSQL upsert の定石 — ON CONFLICT の使い方と罠
読了 4分

PostgreSQL upsert の定石 — ON CONFLICT の使い方と罠

「あれば更新、なければ挿入」を競合状態なしに処理する ON CONFLICT を扱います。SELECT してから INSERT する方式が同時実行で壊れる理由、DO NOTHING と DO UPDATE の使い方、EXCLUDED で新しい値を参照する方法、衝突判定の対象(ユニーク制約)を明示すべき理由、値が同じでも行がロックされ書き換えられるコスト、MERGE との関係、そしてシーケンスが飛ぶ現象まで扱います。

Terraform 実践 #4 ALB と Auto Scaling — launch template、ターゲットグループ、スケーリングポリシー
読了 4分

Terraform 実践 #4 ALB と Auto Scaling — launch template、ターゲットグループ、スケーリングポリシー

単一の EC2 インスタンスをロードバランサーの後ろの Auto Scaling グループに昇格させます。インスタンス定義を launch template に移し、ALB とターゲットグループ、リスナーをつないだうえで、CPU のターゲット追跡スケーリングポリシーまで設定します。検証用の単一インスタンスをコードから削除して IaC のリソース削除の流れを確認し、ブラウザで最初のレスポンスを受け取ります。

pgvector 実践 — PostgreSQL でベクトル検索を運用するときに知っておくこと
読了 5分

pgvector 実践 — PostgreSQL でベクトル検索を運用するときに知っておくこと

埋め込み検索を別のベクトル DB を使わずに PostgreSQL で運用する実践ガイドです。vector 型と距離演算子、HNSW インデックスが既定値である理由と IVFFlat との比較、フィルタ条件と一緒に使うときの取りこぼし問題と反復インデックススキャン(0.8.0)、halfvec でサイズを半分にする方法と 4000 次元への対応、そして「専用ベクトル DB が必要になるのはいつか」の判断基準まで扱います。

Terraform 実践 #3 EC2 とセキュリティグループ — SG チェイニング設計と user_data による起動
読了 5分

Terraform 実践 #3 EC2 とセキュリティグループ — SG チェイニング設計と user_data による起動

セキュリティグループを CIDR ではなくセキュリティグループ参照でつなぐチェイニング設計を ALB、EC2 の 2 層で構成し、最新の AL2023 AMI をデータソースで照会して、user_data で Web サーバーまで起動する EC2 インスタンスをプライベートサブネットに配置します。SSH ポートを開けない理由と、Session Manager での接続計画まで整理します。

PostgreSQL vs MySQL — 2026 年に新規プロジェクトならどちらか
読了 5分

PostgreSQL vs MySQL — 2026 年に新規プロジェクトならどちらか

2 つのオープンソース RDBMS の選択基準を整理します。結論は「新規プロジェクトは特別な理由がなければ PostgreSQL、すでに MySQL エコシステムの上に立っているなら MySQL を維持」です。MySQL 8.0 サポート終了(2026-04)と 8.4 LTS への移行時期、機能の幅(JSONB・ウィンドウ関数・拡張)と MVCC 実装の違い、レプリケーションのエコシステムの成熟度の差、そしてどちらを選んでもいい場合まで、判断基準を扱います。