今回は、DevOpsのアプローチでダウンタイムを最小化するための主な戦略を探っていきます。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
Alibaba Cloud Tech Share 執筆、Alex Mungai Muchiri著、Tech Shareは、技術的な知識やベストプラクティスをクラウドコミュニティ内で共有することを奨励するAlibaba Cloudのインセンティブプログラムです。
ダウンタイムはビジネスにとって大きなコストであり、インフラ管理者にとっては最大の敵です。コンピュータ・インフラ、特にサーバーやクラウド・プラットフォームに依存している業務は大変多く、そのため、IT運用管理者は、ダウンタイムを最小限に抑え、これらのコストを排除しようとしています。
ダウンタイムの影響で費用がかさむケースとしては、アクセスできないウェブサイト、応答しない API、コンピューティングサービスなどが挙げられます。その影響は、小規模なものから明らかに壊滅的なものまであり、顧客やユーザーの不満、生産能力の損失、不満を抱えた従業員という3つのグループに分類されます。例えば、ユーザーは常にサービスを期待しており、それができないときはいつでも必要としているので、顧客を失うことは非常に簡単です。また、オンラインサービスの中には、ソフトウェア開発などの業務に従事する従業員を支援するものもあるため、ダウンタイムは組織の生産性を低下させる要因となります。最終的には、インフラストラクチャ管理の責任者は、通常の勤務時間を過ぎてからの介入が多すぎることに非常に不満を感じることになるかもしれません。このチュートリアルの目的は、ダウンタイムを最小化するために採用する主な戦略のいくつかを探ることです。問題を処理するための他の多くの方法がありますが、最も基本的な方法をいくつか扱います。
インフラストラクチャの監視とアラート
データ収集システムは、ITインフラを監視する上で非常に重要です。特に、ログ、特定のエラー、システムがダウンした時間などのダウンタイムの原因を理解するのに役立つ豊富な情報を提供する必要があります。
疑いなく、適切なインフラ監視を行うことで、ダウンタイムに起因する多くの機会損失から身を守ることができます。モニタリングは、問題が発生する前に問題を検出し、運用チームに修正してもらうことができるだけでなく、ダウンタイムの以前の原因を特定するのにも役立ちます。モニタリングの対象となる側面には、リソースの有用性やアプリケーションのパフォーマンスなどがあります。集計された統計に基づいて、リソースの有効性とアプリケーションのパフォーマンスに影響を与える何かを修正するためにアクションが必要なときに通知するアラートを持つことができます。
このような監視の最も一般的な実装は、ホストサーバが情報を収集し、メトリックを計算するために集中化されたサーバにそれを送信するクライアントを持っているようなものです。中央データベースはそのような情報を保存し、可視化とアラートのためにタイムスタンプを付けます。PrometheusとGraphiteは、最も一般的に使用されている監視ソフトウェアのいくつかです。これらのツールは非常にスケーラブルで、独自のシステムに統合するのは非常に簡単です。他にもElastic stackやGraylogなどのユーティリティは、ログファイルを分析してエラーなどのメトリクスを抽出し、ダウンタイムの分析に役立ちます。ただし、すべてのメトリクスがダウンタイムの削減に役立つわけではないので、適切なモニタリングを行うことが重要です。選ばれたクライアントが提供するデフォルトの監視をそのままにしても良い場合もありますが、アプリケーションのニーズに合った監視をするように注意する必要があります。
Alibaba Cloud ECSでは、以下の4つのメトリクスを推奨しています。
- レイテンシ
- トラフィック需要
- 故障率とエラー
- リソースの飽和
ビジュアルモニタリング
ほとんどの場合、ビジュアルモニタリングには、収集したデータを集約し、ダッシュボード上にビジュアルやグラフを生成することが含まれます。この目的のために、Grafana を使用して、システムにデプロイされた Graphite、Prometheus、およびその他のモニタリング クライアントからのデータを集約することができます。
アラートの生成
アラート機能を使用することで、問題が発生した際にチームは常に注意を払うことができます。アラートツールとしてGrafanaやPrometheusのAlertmanagerを使用するのが一般的ですが、他にも多くのツールがあります。ほとんどの監視ツールと同様に、アラートツールも柔軟性が高く、Slackなどのプラットフォームに合わせてカスタマイズすることができます。効率的なアラートの鍵は、最も重要なアラートのみを使用することです。
マイクロサービスアーキテクチャ
モノリシックなシステムの非効率性の実現に伴い、最近ではマイクロサービスが非常に人気を集めています。マイクロサービスのアーキテクチャは、従来のように単一のピースとして構築されたシステムとは異なり、独立して機能する小さなソフトウェアコンポーネントの構築とテストが含まれています。それぞれの小さなコンポーネントを完全に単独で処理することができるため、障害の軽減に非常に有利です。アーキテクチャは、独自の複雑さとはいえ、非常に利用可能なシステムをもたらします。このような複雑さを解消するには、データを能動的に監視して、アクション不能なアラートからアクション可能なアラートを判断することが必要です。その点で、Kubernetesはレジリエンスの高いマイクロサービスアーキテクチャを構築するための手段となり得ます。
効率的なメンテナンス戦略
間違いなく、確実なメンテナンス戦略を持つことは、ITインフラのダウンタイムを最小限に抑える最も信頼性の高い方法の1つです。Alibaba Cloudでは、ハードウェアシステムを99.999999%の確率で維持するように努めていますが、ソフトウェアシステムも同様に、問題が発生したときに対処できるように適切なメンテナンスガイドラインでチェックする必要があります。メンテナンス戦略の一環として、システムに適したベンダーを選定してください。インフラが利用できないと、大きなダウンタイムが発生する可能性があるため、ベンダーが保証する可用性が組織の要件を満たしているかどうかを確認してください。
リスクを判断するために監査を実施することは、すべての潜在的な障害を考慮することができるため、非常に重要です。
また重要なのは組織の維持の設計であり、付着を保障するためにすべての必要な点検およびバランスが付いているスケジュールです。要約すると、効率的なメンテナンス戦略のベストプラクティスは以下の通りです。
- 地理的な地域やデータセンターにコンピューティングサービスを分散させます。また、障害のリスクを高める冗長なサーバーを排除します。
- サーバ間の往復通信を最小限に抑えます:そうすれば、サービスが中断される可能性が低くなります。
- 冗長化されたシステムを定期的に監視し、その有用性が継続しているかどうかを検査します。要件通りに機能していないシステムは常に停止し、問題が解決した後にのみ復旧させるようにします。
- 単一のウェブサーバを複数のウェブサーバにアップグレードすることで、インフラ基盤を広げます。この点では、ロードバランサーを使用して、障害が発生したサーバーとの間のトラフィックのルーティングを管理します。
- レプリケーション操作を設定することで、データベースシステムをより強固なものにすることができます。MySQLは、レプリケーション構成により、冗長化されたサーバ上でのR/Wも可能にし、単一のサーバ障害による悲惨な結果を軽減しています。
- HeartbeatやKeepaliveなどのツールを使用して、サーバ障害への対応能力を強化します。これらのツールでは、フローティングIPSを利用してサーバ間でデータを再割り当てし、障害が発生したサーバを回避します。
さて、どんなに優れたメンテナンス戦略をとっていても、その文化が良い習慣を促進していなければ、大きなダウンタイムに見舞われる可能性があります。だからこそ、リーンプログラムで提唱されているようなプロアクティブなアプローチを採用すべきなのです。あなたの戦略は、継続的な改善と洗練を受けなければなりません。
ソフトウェアの展開
ソフトウェアのデプロイメントに関しては、「少ない方がいい」ということになります。つまり、複数のパッケージを使用すると、障害が発生したり、帯域幅を消費したりする可能性が高くなるということです。ソフトウェアを構成する適切な方法は、本番環境での管理と配布を簡素化することです。各ネットワークは、サービスが遅くなったり、バグが発生したりしないように、一度に単一のパッケージをダウンロードする必要があります。
全体的に、適切な導入には時間と労力がかかりますが、適切に実施すれば、ネットワーク全体にストレスを分散させ、他のサービスが円滑に動作するための十分な帯域幅を確保して、事業活動の中断を回避することができます。新しいサービスの展開を自動化することを計画している場合は、継続的な統合、配信、およびテストのベストプラクティスを遵守してください。ベストプラクティスには以下のようなものがあります。
- 技術チームのすべてのメンバーがアクセスできる共通のリポジトリからすべてのソフトウェアを管理します。レポでは、テストファイルと設定ファイルに明確なラベルを付けて、誰もがアクセスできるようにします。
- 継続的インテグレーション パッケージを使用したテスト デプロイには、本番環境と同様の構成のモック配置環境を使用します。
- ブルーアイデプロイメントは、組織が採用できる適切なソフトウェアデプロイメントの実践例です。
ソフトウェアリリース
従来、ソフトウェアのリリースは、混乱の大きな原因となっていました。そのため、四半期ごとまたは半年ごとの間隔でスケジュールが組まれていました。しかし、より迅速なアプローチを採用すると、混乱やダウンタイムが少なくなります。ウェブアプリは毎日、モバイルアプリは週2回程度の頻度でリリースすることが推奨されています。バックエンドシステムがより小さなチャンクで更新されると、プラットフォームは稼働し続け、ダウンタイムのリスクを減らすことができます。
もう一つの重要な要素はソフトウェアのドキュメントで、リリースごとに更新する必要があります。ドキュメントは迅速な参照を提供し、そうでなければ壊滅的なことになりかねない多くのミスをなくすことができます。
健康的な職場環境
さて、これは技術的な問題ではありませんが、ダウンタイムを最小限に抑えるためには非常に重要な問題です。システムを最適に稼働させるためには、従業員を最高の状態にしておく必要がありますが、そうでなければ、従業員はダウンタイムの恐ろしい原因となります。健全な職場環境は、従業員が問題が発生したときに効果的に対処できるようにし、雇用主は常に従業員をサポートできるようにしなければなりません。
従業員が生産的でない場合、どのようなビジネスでも大きな損失を被ることになります。したがって、彼らをチェックし、彼らが感謝され、組織の一部として感じるようにすることは、マネージャーの義務です。彼らのモチベーションを維持し、個人的な問題や病気から彼らを助け、適切に扱われると、従業員は自然と組織の目標を高く評価し、目標達成のためにより良い仕事をするようになります。
事故は職場の安全性に影響を与え、生産性を低下させます。良い方法としては、従業員を訓練するためのセキュリティワークショップや訓練を実施することが挙げられます。このような安全対策は、ダウンタイムにつながる悪意のある攻撃に対する組織のリスクを軽減するために、サイバーセキュリティとオンラインの安全性に関連する問題にも取り組むべきです。従業員の推奨事項は、組織の安全戦略とプロトコルに組み込まれなければなりません。
重要なことは、さまざまなインシデントや事故に対応するための標準的なアプローチを作成することです。ハッカー攻撃、ソフトウェアのクラッシュ、その他のマシン障害は、全従業員が遵守すべき手順を定めて対処しなければなりません。さらに、インシデント対応には常に調査をしなければならず、そのような調査から得られた教訓に基づいて将来のインシデントを防ぐことができます。
結論
結論から言うと、ダウンタイムを減らして売上を上げるためには、5つの分野で改善が可能であることがわかりました。これらをまとめると以下のようになります。
1、メトリクスの監視
2、デプロイの改善
3、効果的なメンテナンス戦略
4、マイクロサービスアーキテクチャの採用
5、健康的な職場環境の維持
6、急速なリリース
Alibaba Cloudのアカウントをまだお持ちでない方は、アカウントを登録してください。アカウントに登録して、最大1200ドル相当の40以上の製品を無料でお試しください。
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ