awsの運用設計フェーズの基本を知ってシステムを安定稼働させよう

クラウドコンピューティング技術の進歩によって、大規模なサーバーを用意しなくても手軽に高度な処理能力を有するシステムを構築することが可能になっています。このクラウドコンピューティングサービスは数多くのベンダーが提供していますが、中でも代表的なものはawsでしょう。

そこで以下では、awsを用いた安定的なシステム稼働に向けて知っておきたい運用設計フェーズの基本について見ていくことにしましょう。

awsのサービスと運用のサポート


運用設計とは?

最初に、そもそも運用設計とはどういうことを言うのか、その意味するところについて見ておくことにしましょう。一般的に運用設計とは、システムを安定的に稼働させるため、また障害からの復旧や日常の業務をスムーズに行うために、ルールやプロセスを事前に定義しておくことを言います。

システムトラブルなどの障害が発生した場合に、そこから復旧させるためのルールやプロセスが明確であれば、その分迅速に問題を解決することができるはずですので、この運用設計はawsを用いたシステム開発においても非常に重要なフェーズとなっているのです。

そこで以降では、このように重要な運用設計フェーズにおいて、特に注意が必要となるいくつかのポイントについて順を追って説明していくことにします。

起こり得る障害を想定して影響を最小化するための設計を行うこと

伝統的なシステム開発においては、いかにして障害を起こさないかという点に重きが置かれていました。一方、awsを使ったシステム開発の運用設計フェーズでは、いかに万全を期したとしても障害は必ず発生するという前提をもとに、発生した障害がビジネスに与える影響をいかにして減少させるかという点が重視されています。

そのため、特に旧来型のオンプレミスのシステムをaws上に置き換えて構築するような場合には、両者のテクノロジーの違いを理解したうえで、それぞれのシステムの仕組みをしっかりと整理しておくことが必要不可欠です。

awsを使ったシステム開発では、ボタンを一つ押すだけで、データベースやストレージを簡単に生成することができてしまうため、良く考えずに開発プロセスを進めてしまいがちですが、その裏側でどのようにシステムが稼働しているかが分かっていないと、想定外のトラブルが発生した場合に、スムーズに対応することができません。

そのような事態に陥らないようにするためには、awsが提供しているベストプラクティスを上手に利用することがポイントとなります。このベストプラクティスというのは、標準的に提供されているサービスを正しく活用するためのルールブックのことです。

ルールブックを効果的に使えるようになれば、システム障害が発生しても適切に対処することができるでしょう。

障害発生時にスムーズに発生箇所を切り分けることができるよう監視すること

次に、運用設計フェーズにおいて重要なポイントの二つ目は、aws上で実際に障害が生じた際にどのようにして発生箇所を切り分けるのかという点をしっかりと把握しておくことです。

awsでは、Amazon CloudWatchなどのモニタリングサービスが提供されており、これを活用することでawsのリソースやアプリケーションを効果的に監視できるようになっています。このCloudWatchを使いこなすためには、監視項目に対するエラー回数を表すメトリクスの内容を理解するとともに、問題が起きた場合にどの箇所が影響を受けやすいのかをあらかじめ把握しておくことが大切です。

監視対象としてメトリクスをモニタリングしておけば、何らかの障害が発生した場合にも、原因の所在の目途が付きやすくなるため、スムーズに解決することができるようになるでしょう。また、新たに開発したアプリのデプロイを行ったり、新たなマーケティングキャンペーンを開始した際に、aws上で稼働しているシステムに一時的に負荷が集中することがあります。

このような負荷は障害の原因になりかねないことから、企業のシステム部門では、そういったイベントが発生しそうな場合には事前にマーケティング部門などとしっかりとコミュニケーションを行って、システムの変化に注意を払わなければなりません。

そうすることで、他部門にもシステムに関心を持ってもらうことができるだけでなく、トラブルが発生しても現場の協力を得てスムーズに解決することができるようになるはずです。


障害をスムーズに回復させる復旧方法とは

運用設計フェーズにおいて重要なポイントの三つ目は、障害が発生した場合に、それを迅速に復旧できるようにしておくことです。伝統的なオンプレミスのシステム上で障害が発生した場合には、プログラムなどのソフトウェアに加えて、サーバーやハードデスク、ネットワークスイッチやルーターといったハードウェアも対象にして障害の原因を特定しなければなりませんでした。

一方、awsのようなクラウドコンピューティングサービスでは、ハードウェアの障害についてはそれほど意識する必要はなく、基本的にはソフトウェアのみを対象に原因究明を行えばよいため、以前よりも速やかにサービスを復旧できるようになっています。

また、awsを用いたシステムでは、障害発生時に、仮想サーバー上にあるイメージコピーを使って新たなサーバーを起動し、障害が起きたサーバーと置換することが可能です。これによって暫定的にサービスを回復させておき、その後で抜本的な対策を講じることができるようになるため、システムのユーザーが障害によって影響を受ける事態を回避しやすくなるのです。

なお、容易に障害原因が判明しない場合には、とりあえずサーバー台数を増やしたり、スペック調整を行ってシステムの性能をアップさせ、その後で原因究明を行うといった対応の仕方もあり得ます。

未然予防をしっかりと行うこと

運用設計フェーズにおいて重要なポイントの四つ目は、未然予防をしっかりと行うということです。awsを使ったシステム開発では障害が発生することが前提であるとはいうものの、障害の原因となり得る事象が分かっている場合に、それを放置しておくことは愚の骨頂です。

そこで、システム開発に従事するエンジニアや彼らを擁するシステム部門においては、過去に遭遇したシステム障害の原因についてのデータを蓄積し、それと同じ状況が発生しないようにシステム開発時には原因となる事項を取り除くように努めなければなりません。

発生する障害の頻度そのものを減らせば、システムトラブルによってユーザーが影響を受けるリスクを大きく低減することができるようになりますので、未然予防は必ず実施するようにしましょう。