すべての記事

Rust 実践講座 #8 配布 — crates.io への公開と GitHub Releases の自動化で完結
読了 4分

Rust 実践講座 #8 配布 — crates.io への公開と GitHub Releases の自動化で完結

実践講座の最終回です。crates.io への公開に必要なメタデータと cargo publish の手順(dry-run、公開の永続性と yank)、利用者が cargo install の 1 行でインストールする体験、Rust を持たない利用者のための GitHub Releases でのバイナリ配布、そしてタグのプッシュに反応して 3 つの OS でビルド・アップロードする GitHub Actions のマトリックスワークフローまで作り、シリーズを締めくくります。

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、そして「いつ導入するか」の判断基準まで扱います。

Rust 実践講座 #7 リリース最適化とクロスコンパイル — 小さく速いバイナリをどこでも
読了 5分

Rust 実践講座 #7 リリース最適化とクロスコンパイル — 小さく速いバイナリをどこでも

配布準備の前半です。[profile.release] で締める最適化(lto、codegen-units、strip)とそれぞれの代償、panic = "abort" を安易に有効にしてはいけない理由、バイナリサイズが縮む過程、そして rustup target で行うクロスコンパイル — 特に glibc 依存をなくして古いサーバーでも動く musl 静的リンクビルドと、リンカ問題を Docker で迂回する cross ツールまで扱います。

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 まで扱います。

Rust 実践講座 #6 テスト — パーサーの単体テストから CLI の統合テストまで
読了 4分

Rust 実践講座 #6 テスト — パーサーの単体テストから CLI の統合テストまで

loglens に安全網を張ります。同じファイルに置く #[cfg(test)] の単体テスト(パーサーの正常・境界・失敗ケース)、tests/ ディレクトリの統合テスト、assert_cmd と predicates でビルド済みバイナリを実際に実行して出力と終了コードを検証する CLI テスト、tempfile で作る一時ログファイル、そして cargo test がテストを並列実行するという事実が持つ意味まで扱います。

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 の危険性まで扱います。