#インフラ

381 件の記事

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 フラグで置き換えを強制する方法まで扱います。

PostgreSQL 実践講座 #5 VACUUM と autovacuum — dead tuple 掃除の原理とチューニング
読了 4分

PostgreSQL 実践講座 #5 VACUUM と autovacuum — dead tuple 掃除の原理とチューニング

PostgreSQL 運用知識の中心である VACUUM を扱います。MVCC が残す dead tuple と VACUUM がする仕事(空間の再利用マーク・可視性マップの更新・トランザクション ID 周回の防止)、普段は autovacuum に任せればいい理由と既定のしきい値の限界(大きいテーブルほど掃除が遅れる)、テーブル単位のスケールファクタ調整、掃除を妨げる長時間トランザクション、肥大化の確認クエリ、そして VACUUM FULL の危険性まで扱います。

SRE 実践 #3 アラート設計 — 症状ベースの通知とマルチウィンドウ・バーンレート
読了 5分

SRE 実践 #3 アラート設計 — 症状ベースの通知とマルチウィンドウ・バーンレート

深夜に人を起こす価値のあるアラートだけを残す設計を扱います。原因ベースのアラート(CPU 高負荷)ではなく症状ベースのアラート(ユーザーリクエストの失敗)へ移行すべき理由、ページとチケットを分ける基準、バーンレートアラートを短いウィンドウと長いウィンドウの組み合わせで作り誤検知と見逃しを同時に減らすマルチウィンドウ構成、アラート疲れを測定して減らす運用ルーチンまで扱います。

Terraform 基礎 #6 依存関係と繰り返し — depends_on、count と for_each、dynamic ブロック
読了 5分

Terraform 基礎 #6 依存関係と繰り返し — depends_on、count と for_each、dynamic ブロック

参照がそのまま依存関係になり、作成順序が決まる仕組みと、depends_on が必要になる例外的な場面を整理します。count でリソースを複製するときにリストの途中削除が引き起こす再作成の落とし穴、キーベースだから安全な for_each との使い分けの基準、そしてネストしたブロックを繰り返す dynamic ブロックまで扱います。

PostgreSQL 実践講座 #4 インデックス戦略の応用 — 部分・複合・カバリング、そして GIN・BRIN
読了 5分

PostgreSQL 実践講座 #4 インデックス戦略の応用 — 部分・複合・カバリング、そして GIN・BRIN

基礎第 4 回の B-tree の基本の上に実戦の戦略を積みます。WHERE 条件までインデックスに入れる部分インデックス、テーブルアクセスを省略するカバリングインデックス(INCLUDE)と Index Only Scan の条件、B-tree 以外の選択肢(GIN・GiST・BRIN)を選ぶ基準、使われていないインデックスを pg_stat_user_indexes で見つけて整理する方法、インデックスの肥大化と REINDEX CONCURRENTLY まで扱います。

SRE 実践 #2 エラーバジェット運用 — ポリシー文書とバーンレート
読了 5分

SRE 実践 #2 エラーバジェット運用 — ポリシー文書とバーンレート

エラーバジェットを概念から運用ツールへ変える方法を扱います。バジェットが尽きたとき何をするかを障害の前に合意しておくエラーバジェットポリシー文書、フィーチャーフリーズが実際に機能するための経営層の合意、バジェットが減る速度を表すバーンレートの計算、速い消費と遅い消費を区別して対応する方法、リリース判断にバジェットをつなぐ実務パターンまで扱います。

Terraform 基礎 #5 state の正体 — tfstate ファイルの構造と plan が変更を計算する仕組み
読了 5分

Terraform 基礎 #5 state の正体 — tfstate ファイルの構造と plan が変更を計算する仕組み

terraform.tfstate ファイルを実際に開いて構造を確認し、plan がコード、state、実際のインフラの 3 つを比較して変更を計算する仕組みを整理します。state に機密情報が平文で残る問題とコミット禁止のルール、state list と show、mv、rm といった操作コマンド、state を失ったときに起きることまで扱います。