はじめに
Leverages Advent Calendar 19日目担当の ham です。
若干バズった 10日目に引き続き 2度目の投稿です。
Leverages で、セキュリティの責任者としてセキュリティ意識の啓蒙や全社に関わるシステムの改善をしています。
また、前職では、SOC、NOC、BGPの運用などを行っていました。
タイトルに「可用性を考えた」とありますが、「冗長化しようぜ」とか「AutoScalingしようぜ」みたいな話は出てきません。
また、この記事の中はなんとなく理解することが目的のため、概念的なところが多いです。技術的な話はググってください。
なんの話するのか
もし故障もしない、メンテもしない可用性 100% の Webサイトを構築できたとして、このサービスの可用性は 100% でしょうか?そう、100% ではないですね。
Webサイト側ではコントロールできない、サイトにたどり着くまでの部分の可用性が影響してきます。
そう、インターネットの可用性です!
インターネット
インターネットの管理人
インターネットは interconnected network に由来するとおり、ネットワークとネットワークの接続の集合体であり、インターネットを管理している人はいません。
(IPアドレスを管理する人がいたり、接続するためのルールがあったりはします)
各組織によって管理されたネットワーク(ASと呼ばれる) が接続されて、奇跡的にインターネットが成り立っています。
BGP
インターネットは、BGP(Border Gateway Protocol) というプロトコルで構成されています。
BGPの細かい話はここではしませんが、IT があって当たり前の世の中とは思えないほどひ弱な仕様です。
故意や作業ミスで嘘の情報を流して通信の邪魔したり、AS同士の接続が切れた時に経路情報の更新に時間がかかって通信が迷子になったりします。割とカジュアルに。
作業ミスで世界的にインターネットがおかしくなったのだと、 2017年08月25日が思い出されますね。
また、オンプレの東京のサーバにアクセスするのは、経由する AS の数が少ないので(隣の AS に行くだけ、とか) AS同士の接続が切れてもそこそこすぐに情報が伝わって通信が復旧するけど、クラウド利用だと実は海外のサーバで経由する AS の数も多くオンプレより復旧に時間がかかることがあります。
SLA
インターネットには管理人がいないので当然 SLA はありません。あなたが見ている SLA は、あなたが契約している ISP(プロバイダ) との SLA です。
あなたが契約している ISP1 に繋がっている ISP2,3, ... が全滅したとしても、ISP1 のなかが問題ないなら SLA は守られていることになります。
まとめ
開発者へ
インターネットはひ弱です。
サイトの可用性の 9 を増やすことも大事ですが、インターネットの可用性を考慮に入れてそのコストをより良いものを作ることに回す選択肢もありかと思います。
経営者へ
インターネットはひ弱です。
自社や委託先のコントロールできる部分に何も問題なくても、ユーザが Webサイトへアクセスできなくなることがあります。また、コントコールできないので、「なんとかしろ」と言われても何もできません。
目に見えないかもしれませんがこの状況で客が来ないのと同じです。
最後に
BGPが義務教育になって、インターネットをきちんと理解してくれる人が増えることを願っています。
こくご、さんすう、せいかつ、BGP