システムアーキテクチャ構築の原理~ITアーキテクトが持つべき3つの思考
2025年7月7日システムアーキテクチャ構築の原理~ITアーキテクトが持つべき3つの思考を読んだ。 アーキテクチャ設計に関わるのであれば必読しておきたい本。 アーキテクチャを設計していく上では、単に技術的な解決策だけを考えれば良いわけではない。 この本は、アーキテクチャの設計に関わる一連のプロセスを体系立てで語っている。 アーキテクチャの定義、アーキテクチャの捉え方・構造的な説明の仕方、ステークホルダーとの向き合い...
システムの負荷を確認する際に、top や uptime コマンドで表示される「Load Average」という指標を目にすることは多い。 Load Average はプロセスの実行待ち状態を表す値であり、システムの混雑度合いを示す重要な指標である。 Load Averageの正体 Load Average とは、一定期間内に「実行可能状態または実行中のプロセスが何個あったか」の平均値である。Lin...
概要 Open Policy Agent(OPA)は、ポリシーによるアクセス制御を疎結合な形で実現できる強力な仕組みである。Regoという宣言的言語でルールを記述し、アプリケーション側からはシンプルな形式でポリシー評価を利用できる。 本記事では、OPAを利用したアクセス制御の代表的なパターンを整理し、それぞれの特徴や適した用途、実装負荷などを比較する。 以下に、あなたが挙げた4つのアクセス制御アプ...
概要 Rubyの並行モデルやGVLの役割、Pumaサーバのスレッド・プロセス設計、IO/CPUバウンドの捉え方、計測手法によるボトルネック把握、Rails/Pumaデフォルト設定変更背景などを整理し、適切なチューニング方針を提示する。 Rubyの並行モデルとGlobal VM Lock(GVL) GVLの存在意義 Ruby(MRI/CRuby)にはGlobal VM Lock(GVL)があり、同一...
概要 Go言語は、軽量なgoroutineとランタイム機構により並行処理(concurrency)を強力にサポートし、Go 1.5以降はデフォルトでGOMAXPROCSが利用可能CPUコア数に設定されるため、適切に設定することでマルチコアを活かした並列実行(parallelism)も可能とする。本記事では、goroutineのスケジューリングやCPUバウンド処理でのマルチコア活用の仕組み、OSプロ...
概要 データベースの性能向上や安定運用には適切なメモリ設定が必要である。ディスクアクセスはメモリアクセスに比べ極めて遅く、可能な限りメモリから読み書きすることで応答性能を向上させたい一方、過度なメモリ割り当てはOOM(Out Of Memory、メモリ不足によるプロセス強制終了)リスクを高め、システム全体の停止につながる可能性がある。したがって、安定性を担保しつつ性能を確保するために、Postgr...
OPA の基本と課題背景 OPA(Open Policy Agent)は Rego 言語で記述されたポリシーを用いて、入力(input)や外部データ(data)に基づいて評価を行い、許可/拒否などの判定を行うエンジンである。 実装例については、AWS Prescriptive Guidance のマルチテナント API 認可制御ガイドが参考になる。OPA を活用した SaaS におけるマルチテナン...