スクールオブウェブ .net
プログラミングとインフラを、基礎から実践まで順番に学べる IT 学習ブログです。
シリーズ 91件・記事 867件・本 4冊
最新の記事
PostgreSQL 実践講座 #7 パーティショニング — 巨大テーブルを時間の単位で分ける
数億行テーブルの標準処方である宣言的パーティショニングを扱います。パーティショニングが実際に解決する問題(古いデータの削除が DROP 一発・パーティションプルーニング・VACUUM 負担の分散)と解決しない問題、RANGE パーティショニングで月別テーブルを作る文法、パーティションキーが PK に含まれる必要がある制約、プルーニングが効くクエリ条件の条件、新しいパーティションを作り続ける運用負担と pg_partman、そして「いつ導入するか」の判断基準まで扱います。
Rust 実践講座 #7 リリース最適化とクロスコンパイル — 小さく速いバイナリをどこでも
配布準備の前半です。[profile.release] で締める最適化(lto、codegen-units、strip)とそれぞれの代償、panic = "abort" を安易に有効にしてはいけない理由、バイナリサイズが縮む過程、そして rustup target で行うクロスコンパイル — 特に glibc 依存をなくして古いサーバーでも動く musl 静的リンクビルドと、リンカ問題を Docker で迂回する cross ツールまで扱います。
SRE 実践 #5 ポストモーテム — 非難なき振り返りとアクションアイテムの事後管理
障害を組織の学習に変えるポストモーテムの運用を扱います。非難なし(blameless)が温情主義ではなく情報獲得の戦略である理由、どの障害にポストモーテムを書くかを決めるトリガー基準、タイムライン・影響・原因分析・アクションアイテムへ続くテンプレート、人のミスで止まらずシステムの原因まで掘り下げる問いの立て方、そしてアクションアイテムが放置されないための追跡ルールまで扱います。
Terraform 基礎 #8 モジュール基礎 — リソースのまとまりの再利用とレジストリモジュール
すべての Terraform ディレクトリがすでにモジュールであるという事実から出発し、変数を入力に output を出力に持つ子モジュールを自分で作って module ブロックで呼び出す方法を整理します。レジストリの実績あるモジュールをバージョン固定と一緒に使う方法、そしてモジュールを分ける基準と過剰な分割の境界まで扱います。
PostgreSQL 実践講座 #6 ロックと同時実行 — デッドロック、DDL ロック、SKIP LOCKED
MVCC が解決してくれない領域、ロックを扱います。行ロック(書き込み同士の衝突)とテーブルロック(DDL)の 2 つの層、ロック待ちを pg_locks と pg_blocking_pids で追跡する方法、デッドロックが起きる構造(交差した順序の更新)と予防ルール(同じ順序で取る)、SELECT FOR UPDATE で読んで-判断して-書くを安全にする方法、そして作業キューの標準パターン FOR UPDATE SKIP LOCKED まで扱います。
Rust 実践講座 #6 テスト — パーサーの単体テストから CLI の統合テストまで
loglens に安全網を張ります。同じファイルに置く #[cfg(test)] の単体テスト(パーサーの正常・境界・失敗ケース)、tests/ ディレクトリの統合テスト、assert_cmd と predicates でビルド済みバイナリを実際に実行して出力と終了コードを検証する CLI テスト、tempfile で作る一時ログファイル、そして cargo test がテストを並列実行するという事実が持つ意味まで扱います。
SRE 実践 #4 オンコール運用 — ローテーション、エスカレーション、負荷管理
持続可能なオンコール体制の設計を扱います。ローテーションが成立する最低人数と勤務編成の方式、一次対応者が詰まったときのためのエスカレーションチェーン、シフトを引き継ぐときのハンドオフのルーチン、シフトあたりのページ件数で負荷を測定して上限を設ける理由、オンコール中に見つけた問題を返済するフォローアップ時間の確保、そして報酬と文化まで、オンコールが燃え尽き製造機にならないための条件を扱います。
Terraform 基礎 #7 リソースのライフサイクル制御 — 置き換えの条件、create_before_destroy、prevent_destroy
どの属性の変更が update で済み、どの変更がリソースの置き換えを強制するのかを plan から読み取る方法を整理します。置き換えの順序を逆転させて中断を減らす create_before_destroy、本番リソースの削除を防ぐ prevent_destroy、コードの外の変更を無視する ignore_changes、そして -replace フラグで置き換えを強制する方法まで扱います。