システム運用の現場は想像以上に過酷だ。こうした厳しい現実を前提としてシステムの可用性を高めるためのソフトウエア設計・開発手法が「レジリエンスプログラミング」である。本連載では、レジリエンスプログラミングの実践について解説していく。

連載
レジリエンスプログラミングのすすめ
目次
-
システムのレジリエンスを保つ「要」、分散トレーシングによる可視化
現実の障害を前提としてサービスの可用性を高めるのが「レジリエンスプログラミング」だ。有効に機能させるには繊細なチューニングが必要であり、それを可能にする「分散トレーシング」というテクノロジーが注目されている。
-
リソースを適切に分離して分散システムのレジリエンスを高める「バルクヘッド」
分散システムの可用性を高めるためのデザインパターンが「レジリエンスプログラミング」である。今回は「バルクヘッド」というデザインパターンを紹介する。バルクヘッドは船にある隔壁を指す。
-
システムの障害部位を切り離してレジリエンスを高める「サーキットブレーカー」
コンポーネントに障害が起こったとき、呼び出しをリトライしても失敗するなら、コンポーネントをシステムから一定時間切り離す方法が有効だ。これを「サーキットブレーカー」と呼ぶ。
-
Javaのレジリエンスを強化する「Resilience4j」、各種の対策を自動化
現実の環境を前提にサービスの可用性を高めるソフトウエア設計パターンが「レジリエンスプログラミング」だ。今回は、Java実行環境でレジリエンスプログラミングを実現する「Resilience4j」を利用し、分散システムにおけるタイムアウトやリトライなどのデザインパターンを実際のコードで体験していこう。
-
逆境に強いシステムをつくる必殺技、「レジリエンス」な開発とは
「レジリエンス」という用語は、心理学の分野で「ストレスフルな状況から回復できる能力」を意味する。レジリエンスをシステム開発に応用することで、トラブルが少ない強じんなシステムを構築できる。