昨今、様々な領域においてデジタル化が加速するなか、24時間365日ひと時も停止することなくWebサイト/サービスが稼働することが求められています。高可用性はサービスが完成してから後付けできるものではなく、計画段階から単一障害点の排除や冗長化、負荷分散といった設計の工夫が必要となります。この記事ではWebサイト/サービスの停止を回避するために押さえておくべきポイントや、高可用性を実現するために活用できるAWSのサービスを紹介します。time"「全てのものはいずれ壊れる」という言葉を残しました。壊れないことを期待するのではなく、壊れても良いような仕組みを整えておくことが高可用性を実現するための第一歩となります。システムは複数のハードウェアから構成されます。SPoF)と呼びます。Webサイト/サービスであれば(a)ApacheやNginxなどのWebサーバー、(b)PHPやRubyなどで作成したAPサーバー、(c)MySQLやPostgreSQLなどのDBサーバーの3種類のサーバーから構成されます。仮に3種類のサーバーを1台ずつ用意する場合、1台のサーバーが故障するとWebサイト/サービス全体が停止します。この構成では、3台のサーバー全てが単一障害点となります。単一障害点を排除することによって、システムを構成するハードウェアの一つが故障してもシステム全体は稼働し続けることができます。次に、単一障害点を排除するためによく使用される方法である「冗長化」について解説します。冗長化システムを構成するハードウェアの中で、あるハードウェアの予備を用意しておくことを「冗長化」(redundancy)と呼びます。冗長化によって、あるハードウェアが故障したときに予備のハードウェアと交換することによってシステムを復旧させることが可能となり、可用性が向上します。Webサイト/サービスを例にすると、Webサーバー、APサーバー、DBサーバーをそれぞれ2台用意することによって、いずれかのサーバー1台が故障しても稼働し続けることができます。冗長化では予備の数を増やすほど可用性が向上しますが、必要以上に予備を用意しておくことは経済的ではありません。目標とするシステムの可用性や想定されるハードウェアの故障率などを考慮し、適切な数の予備を用意しておくことが重要です。ハードウェアの冗長化によって、サーバーの設定やプログラムの仕様も影響を受けます。冗長化する前は、Webサーバーは1台のAPサーバーと通信し、APサーバーは1台のDBサーバーと通信すれば十分でした。冗長化した後は、Webサーバーは複数台のAPサーバーと通信し、APサーバーは複数台のDBサーバーと通信する必要があります。そのためには、接続するサーバーを決定する手続きや接続したサーバーが故障している場合に別のサーバーへ接続する手続きなどが追加され、処理が複雑になります。個々のサーバーやプログラムでハードウェアの冗長化に対応することは不可能ではありませんが、プログラム開発や開発バージョンの管理などの運用負担を考えるとできるだけ避けたい業務プロセスです。複数のサーバーへ処理を振り分けることで文字通り負荷を分散し、性能を向上させるための方法です。処理を振り分ける際に故障したサーバーを除外したり、サーバーの高負荷による停止を防止したりすることで可用性を高めることができます。balancer:LB)と呼ばれます。負荷分散装置には転送先のサーバーの故障を検出する「ヘルスチェック」などの可用性を高める機能を備える製品もあります。冗長化したサーバーの前段に負荷分散装置を設けることによって、個々のサーバーやプログラムで冗長化に対応することが不要となります。Webサイト/サービスの場合、WebサーバーはAPサーバーの負荷分散装置と通信し、APサーバーはDBサーバーの負荷分散装置と通信すれば良くなります。負荷分散装置が故障した場合、配下のサーバーへ処理を振り分けられずサービスが停止します。over)などの工夫が必要となります。ネットワークからクラウドの導入・運用までトータルでサポート!クラウド導入・運用サービス資料ダウンロードAWS上のシステム設計で可用性を高めるための便利なサービスAWSには可用性を高めるためのサービスがあります。その一部をご紹介いたします。Balancing(ELB)はAWSの負荷分散サービスであり、自社で仕組みを整えることなく簡単に負荷分散を実現することができます。Balancer"の3種類があります。Balancerを利用するケースが多いです。LCU)の2つによって決定します。23.256USDの利用料金が発生します。※2019年10月現在のAWSホームページの情報を参照しております。具体的な料金については個別にご確認ください。Scalingと組み合わせ、サーバーが停止したり負荷が高くなったりした場合に、自動的に追加のサーバーを起動するように設定することが可能です。Beanstalkというサービスを利用することで簡単に素早く行うことができます。Scalingを活用した高可用性なWebサイト/サービスを自動で構築してくれるサービスです。ユーザーはプログラムをアップロードするだけで良く、設定に要する時間を短縮すると共に手作業によるヒューマンエラーの発生を軽減することができます。Beanstalkを利用して起動したサーバーなどについてはEC2などの料金が発生します。クラウドはもろい?2019年のAWS東京リージョンで発生した障害など、クラウドの障害が発生するときに、「クラウドはもろいのか?」といった議論がなされます。「クラウドはもろいのか?」という議論に答えはなく、目標とする稼働率を実現できるシステムをクラウド上で構築できるかという観点が重要になります。クラウドを利用したとしても、障害発生時に可用性を維持できるような設計になっていなければサービスは停止してしまいます。したがって、高い可用性が求められるサービスであれば、複数のリージョンに同じシステムを構築し、障害発生時に正常に稼働しているシステムに切り替えるような仕組みにするなどの対策が求められます。おわりにオンプレミスシステムでの設計と同様に、可用性が高く、かつ、運用負担ができるだけ軽い、クラウドを活用したシステム設計が重要です。AWSのサービスを活用することによって可用性の高いWebサイト/サービスを簡単迅速に構築することができます。高可用性に対するユーザーの期待は今後ますます高くなっていくと予想され、期待に応えるために知っておくべきポイントや実現方法を確認しておくことが大切です。ECS」の主な機能と使い方RECOMMENDその他のコラム2020.01.22AWSの運用設計の鍵オンプレミスと比較してクラウドにおけるシステム運用は共通点が多い一方、当然のことながら相違点もあり、その違いを理解することが効果的な運用を実現する鍵となります。Servicesで構築する方法について紹介します。2020.01.22AWSの障害対策-原因と事例を学び障害対策を考えるAWSで発生する障害にはどのようなものがあるのでしょうか。日頃からどのように備えたらいいのでしょうか。実際にAWSで発生した障害の事例がどのようなものであったかを調べてみるとともに、障害対策を具体的にまとめてみました。2020.01.15オンプレミスとAWS、どちらを選ぶ?連携するメリットとあわせて解説オンプレミスは、企業内にサーバーを始めとするシステム全体を構築するシステム形態です。最近は、オンプレミスとクラウドを併用するハイブリッドクラウドも広まっています。AWSにはハイブリッドクラウドを実現するためのサービスがいくつか用意されているので、活用してください。Azureの導入支援サービスのご相談、お問い合わせをお待ちしております。