インフラ

Terraform 実践 #2 VPC ネットワークのコード化 — 2 AZ のサブネット、ルーティング、NAT ゲートウェイ
読了 5分

Terraform 実践 #2 VPC ネットワークのコード化 — 2 AZ のサブネット、ルーティング、NAT ゲートウェイ

myapp インフラの土台である VPC をコードで構築します。パブリック・プライベートサブネットを 2 つの AZ に for_each で作り、インターネットゲートウェイとルーティングテーブルでトラフィックのルートを定義し、プライベートサブネットのアウトバウンドを担う NAT ゲートウェイを費用の割り切りとともに配置します。ネットワークの output まで整理して、次回のコンピューティング層を受け入れる準備を済ませます。

PostgreSQL 実践講座 #9 バックアップ・PITR・アップグレード — 障害直前に戻る技術
読了 4分

PostgreSQL 実践講座 #9 バックアップ・PITR・アップグレード — 障害直前に戻る技術

実践編の締めくくりとしてデータを守る最後の層を扱います。pg_dump の論理バックアップの限界を超える物理バックアップ(pg_basebackup)と WAL アーカイブの組み合わせ、望む時刻へ巻き戻す PITR(Point-In-Time Recovery)の原理と復旧目標の設定、「削除事故はフェイルオーバーでは戻せない」というレプリケーションとバックアップの役割の区別、メジャーバージョンアップグレードの 3 つの道(pg_dump・pg_upgrade・論理レプリケーション)、そしてトラック全体の振り返りまで扱います。

Terraform 実践 #1 プロジェクト設計とブートストラップ — 全体像、バックエンド、共通タグ
読了 5分

Terraform 実践 #1 プロジェクト設計とブートストラップ — 全体像、バックエンド、共通タグ

コードで構築する Web サービスインフラの全体アーキテクチャをまず 10 本分の完成形として描き、実習で費用が発生するポイントと管理の原則を整理します。state バケットと S3 バックエンドのブートストラップ、provider のバージョン固定、default_tags によるすべてのリソースへの共通タグ付けまで済ませ、実践シリーズの出発点を整えます。

PostgreSQL 実践講座 #8 レプリケーションと高可用性 — ストリーミングレプリケーション、読み取り分散、フェイルオーバー
読了 4分

PostgreSQL 実践講座 #8 レプリケーションと高可用性 — ストリーミングレプリケーション、読み取り分散、フェイルオーバー

DB サーバー 1 台の限界を超える標準手段、レプリケーションを扱います。WAL をそのまま流すストリーミング(物理)レプリケーションの原理、非同期レプリケーションのレプリケーション遅延と read-your-writes 問題、同期レプリケーションのトレードオフ、読み取り負荷をスタンバイに分散するときの注意点、自動フェイルオーバーに必要なもの(Patroni など)とスプリットブレイン、テーブル単位で選んで送る論理レプリケーションの用途、そしてマネージドサービスとの対応関係まで扱います。

SRE 実践 #6 トイル削減 — 繰り返し手作業の測定と自動化、そして導入ロードマップ
読了 6分

SRE 実践 #6 トイル削減 — 繰り返し手作業の測定と自動化、そして導入ロードマップ

シリーズ最終回としてトイル(toil)を扱います。手作業・反復的・自動化可能・戦術的というトイルの判別基準、運用業務がエンジニアリング時間を侵食するのを防ぐ 50% ルール、頻度と所要時間で自動化の優先順位を決める方法、ランブックからスクリプト、セルフサービスへ上がる自動化の段階、そして SLO からトイルまでシリーズ全体を組織に導入する現実的な順序を扱います。

Terraform 基礎 #9 リモート state とチーム協業 — S3 バックエンド、ネイティブロック、機密情報の保護
読了 5分

Terraform 基礎 #9 リモート state とチーム協業 — S3 バックエンド、ネイティブロック、機密情報の保護

ローカル state がチーム協業でぶつかる 3 つの問題を確認し、S3 バックエンドへ state を移す設定と init のマイグレーション手順を整理します。use_lockfile によるネイティブロックが同時実行を防ぐ仕組みと DynamoDB 方式がレガシーになった背景、state バケットのバージョニングと暗号化、アクセス制御まで扱い、基礎シリーズを締めくくります。

PostgreSQL 実践講座 #7 パーティショニング — 巨大テーブルを時間の単位で分ける
読了 5分

PostgreSQL 実践講座 #7 パーティショニング — 巨大テーブルを時間の単位で分ける

数億行テーブルの標準処方である宣言的パーティショニングを扱います。パーティショニングが実際に解決する問題(古いデータの削除が DROP 一発・パーティションプルーニング・VACUUM 負担の分散)と解決しない問題、RANGE パーティショニングで月別テーブルを作る文法、パーティションキーが PK に含まれる必要がある制約、プルーニングが効くクエリ条件の条件、新しいパーティションを作り続ける運用負担と pg_partman、そして「いつ導入するか」の判断基準まで扱います。

SRE 実践 #5 ポストモーテム — 非難なき振り返りとアクションアイテムの事後管理
読了 5分

SRE 実践 #5 ポストモーテム — 非難なき振り返りとアクションアイテムの事後管理

障害を組織の学習に変えるポストモーテムの運用を扱います。非難なし(blameless)が温情主義ではなく情報獲得の戦略である理由、どの障害にポストモーテムを書くかを決めるトリガー基準、タイムライン・影響・原因分析・アクションアイテムへ続くテンプレート、人のミスで止まらずシステムの原因まで掘り下げる問いの立て方、そしてアクションアイテムが放置されないための追跡ルールまで扱います。

Terraform 基礎 #8 モジュール基礎 — リソースのまとまりの再利用とレジストリモジュール
読了 5分

Terraform 基礎 #8 モジュール基礎 — リソースのまとまりの再利用とレジストリモジュール

すべての Terraform ディレクトリがすでにモジュールであるという事実から出発し、変数を入力に output を出力に持つ子モジュールを自分で作って module ブロックで呼び出す方法を整理します。レジストリの実績あるモジュールをバージョン固定と一緒に使う方法、そしてモジュールを分ける基準と過剰な分割の境界まで扱います。

PostgreSQL 実践講座 #6 ロックと同時実行 — デッドロック、DDL ロック、SKIP LOCKED
読了 4分

PostgreSQL 実践講座 #6 ロックと同時実行 — デッドロック、DDL ロック、SKIP LOCKED

MVCC が解決してくれない領域、ロックを扱います。行ロック(書き込み同士の衝突)とテーブルロック(DDL)の 2 つの層、ロック待ちを pg_locks と pg_blocking_pids で追跡する方法、デッドロックが起きる構造(交差した順序の更新)と予防ルール(同じ順序で取る)、SELECT FOR UPDATE で読んで-判断して-書くを安全にする方法、そして作業キューの標準パターン FOR UPDATE SKIP LOCKED まで扱います。

SRE 実践 #4 オンコール運用 — ローテーション、エスカレーション、負荷管理
読了 6分

SRE 実践 #4 オンコール運用 — ローテーション、エスカレーション、負荷管理

持続可能なオンコール体制の設計を扱います。ローテーションが成立する最低人数と勤務編成の方式、一次対応者が詰まったときのためのエスカレーションチェーン、シフトを引き継ぐときのハンドオフのルーチン、シフトあたりのページ件数で負荷を測定して上限を設ける理由、オンコール中に見つけた問題を返済するフォローアップ時間の確保、そして報酬と文化まで、オンコールが燃え尽き製造機にならないための条件を扱います。

Terraform 基礎 #7 リソースのライフサイクル制御 — 置き換えの条件、create_before_destroy、prevent_destroy
読了 5分

Terraform 基礎 #7 リソースのライフサイクル制御 — 置き換えの条件、create_before_destroy、prevent_destroy

どの属性の変更が update で済み、どの変更がリソースの置き換えを強制するのかを plan から読み取る方法を整理します。置き換えの順序を逆転させて中断を減らす create_before_destroy、本番リソースの削除を防ぐ prevent_destroy、コードの外の変更を無視する ignore_changes、そして -replace フラグで置き換えを強制する方法まで扱います。