落ちると全部止まる所
1つ落ちると全部止まる所を探す
構成図を描いたら、どれか1つを指で隠してみます。
隠した部品が無いとサービスが動かないなら、そこが単一障害点です。台を何台並べても、その1点が落ちれば全部止まります。
席の予約サービスなら、振り分けが1台しかない構成がこれにあたります。
アプリは大丈夫です。その3台へ配る振り分けが1台なら、そこが落ちた瞬間に3台とも使われません。
増やしたのは一番目立つ部品で、目立たない部品が1台のまま残るのはよくあります。
数が2以上でも安心ではない
2台あっても、同じ場所に2台なら1点です。
電源が落ちれば2台とも落ち、回線が切れれば2台とも切れます。数えるのは台数だけでなく、置き場所の数です。
Python
# 2台あるが、どちらも同じ置き場所
# 置き場所ごと落ちれば2台とも落ちる遅くなります。離れた場所どうしの通信には、必ず時間がかかります。
速さと、落ちにくさは交換関係です。どちらを取るかは、止まったときに何を失うかで決めます。
止まっても翌日に取り返せるなら、速いほうを取ってかまいません。
演習
構成の一覧を受け取り、単一障害点になっている部品と理由を返します。
要件
- required が False の部品は、落ちてもサービスが止まらないので safe に name を入れる
- required が True で count が1以下なら spof へ {"name": 名前, "reason": "1台しかない"} を入れる
- required が True で台数は足りていても zones が1つ以下なら spof へ理由 "置き場所が1つ" で入れる。どちらでもなければ safe へ
ヒント
編集 ゆめさく編集部