オープンソースの高可用性の実現に必要な7つのスキル

    寄稿:米国サイオス VP  Cassius Rhue
    ※この記事は翻訳されたものです。本記事の原文はこちら

    高可用性(HA)の分野では、自由に使用できるソフトウェア「オープンソース」を採用する場合、チームに必要となる重要なスキルがいくつかあります。

    今日では、MicrosoftやSIOS Technology Corp.などのベンダーにより、多くのOSに対応した高可用性クラスターが多数提供されています。これらの市販のソリューションでは、リソースの監視、依存関係の管理、フェイルオーバーやクラスターのポリシーを提供しており、何らかの形での管理があらかじめパッケージ化され、価格も設定されています。このような市販のソリューションに代わるものとして、企業の高可用性実現向けに、オープンソースという選択肢があります。

    企業が最適化、コスト削減、管理の厳格化を追求していく中で、オープンソースの可用性ソリューションへの移行を検討する企業やお客様が増えています。この記事では、皆さんのチームがオープンソースHAに移行する際に必要となる7つのスキルをご紹介します。

    1.コーディングスキル

    多くの場合、エンタープライズアプリケーション向けのプリパッケージサポートやバンドルされたサポートがないため、コンポーネントを保護するためのソリューションを開発したり、バンドルされたコンポーネントの問題を修正したり、アプリケーションの認識が適切に処理されるようにアプリケーションコネクタを記述したりする能力が必要になります。スクリプトを書ける人はたくさんいますが、チームでは、安定した開発手法と標準をどのように作成し、それを遵守するかを理解する必要があります。その基本となるのは、次のようなものです。

    • 設計とアーキテクチャの要件
    • 設計レビュー
    • コード/コードレビューと単体テスト(できれば自動化)

    2.テクノロジー環境に関する知識

      多くのエンタープライズアプリケーションでは、サービスレベル合意(SLA)およびサービスレベル目標(SLO)を満たす高可用性を提供するためには、複数のシステムとの統合が必要です。複数のエンタープライズシステムとの統合のための保護とソリューションを構築するために、チームにはテクノロジー環境に関するアプリケーションの深い認識と知識が必要になります。

      重要なアプリケーションの詳細、そのアプリケーションのテクノロジー環境、ネットワーク、ハードウェア、ハイパーバイザー、そして環境とアプリケーションの依存関係を理解している人が必要です。また、オープンソースコミュニティから提供されている、使用予定のHAテクノロジーのアーキテクチャ、機能、および制限を理解しているチームメンバーも必要です。ご自分のチームがこれらの分野にどの程度詳しく、また以下について理解しているかどうかを確認してください。

      • データの受け渡しとノード通信
      • ノード障害
      • アプリケーション管理
      • システムの復旧と再起動
      • ロギングとメッセージ
      • データの復元力と保護

      3.ビジネスプロセスに関する知識

      自社のビジネス要件、そしてビジネスプロセスを理解している人、そして会社のビジネスとそれを推進するプロセスを理解している専門家が必要です。またチームは、ソリューションの開発に使える予算がどれくらいあるのか、ビジネスがどれくらいのリスクを負うことができるのか、また、誰も口にしていない要件や特定されていない追加の要件をどのように収集するのかを確認して理解する必要があります。

      さらにチームは、ビジネス要件をソフトウェア要件に変換する方法や、ビジネスのニーズやスピードを満たし、さらにビジネスのプロセスに適合する、実行可能な最小限の高可用性ソリューションを実現するためのプロセスを管理する方法を理解していなければなりません。チームに理解している人がいない場合は、そのような人材を採用する必要があります。

      4.OS、アプリケーション、インフラの経験

      すべてをオープン化することを検討している場合、チームはオペレーティングシステム、アプリケーション、およびインフラに関する知識を持ち、Linuxのカーネルバージョン、Windowsのアップデートや修正プログラムなど、OSのさまざまなリリースサイクルを理解する必要があります。サポートする必要のあるアプリケーションが社内にある場合、アプリケーションの更新サイクル、それらの依存関係、アプリケーションとOSのサポートマトリックスの共通部分の理解にも努めなければなりません。 

      自社の環境が同質的であれば、問題ありません。さまざまなものが混在している場合は、RHEL、RHELの派生製品、SUSEの違いを理解する必要があります。LinuxとWindowsの両方を使用している場合は、これらについても知っておく必要があります。また、アプリケーションとOSの組み合わせによって、インフラがどのような違いをもたらすのかも理解しなければなりません。AWSAzureでは、GCPやオンプレミス、その他のハイパーバイザーとは高可用性のしくみが異なります。

      5.変更管理能力

      OS、インフラ、アプリケーションをしっかりと把握し、技術的、ビジネス的な知識を持った開発チームがソリューションを作成している場合でも、スクリプトを揃えることはほんの序の口です。チームには変更管理能力も必要です。

      チームは、コードの変更やバージョン、パッケージ、パッケージの場所をどのように追跡する予定ですか?アップデートや変更のリリースをどのように管理しますか?Gitなどのソースリポジトリ、Jiraなどのプロジェクト管理ツール、そしてリリーストレインに習熟していることが必要です。チームは、望ましくない影響を避けながら、コードの更新、パッチや修正の提供を行う方法を理解していなければなりません。

      6.データアナリティクスとトラブルシューティングの経験

      自社でHAソリューションを提供する場合、チームには分析とトラブルシューティングの経験が必要になります。また、アプリケーションコード、システムメッセージ、アプリケーションのエラーログやトレースファイルの相互関係を理解している人材も不可欠です。システムクラッシュが発生した場合には、トラブルシューティングのためにログを詳しく調べて根本的な原因を突き止め、データを分析して推奨事項を作成し、変更を展開する準備をしなければなりません(上記の#5を参照)。

      チームは、エラーや障害、システムクラッシュが発生していない場合でも、これらのログやトレースファイルから得られるデータがシステムの状況について何を物語っているのか把握して理解する必要があるということも、忘れてはいけません。

      7.開発、QA、パートナー、コミュニティのつながり

      正直言って、企業にとって高可用性を実現することがすべてではありませんが、オープンソースHAを利用することにした場合は、チームが優秀なだけでは足りず、サポートが必要になります。その助けを得るためには、何から始めればよいのかを理解し、コミュニティの開発者、テストの専門家、HAやアプリケーションのパートナー、そしてオープンソースコミュニティとの適切なつながりを作ることが重要です。オープンフォーラムはとても役に立ちますが、応答時間がSLAとSLOに準拠しているかどうかを再確認する必要があります。

      オープンソースソリューションは、多くの企業が柔軟性、低コスト、低リスクといった観点から選択しているオプションです。しかし、新たなスキルや管理という形で隠れたコストが発生する可能性があり、また、「独自のHAソリューションを展開する」ために必要なオープンソースプログラムという点でも隠れたリスクがあるかもしれないということを覚えておいてください。

      さいごに

      サイオステクノロジーでは、LINBIT社のオープンソースであるDRBD / Pacemaker / Corosync に日本語サポートとホットフィックスを提供するサポートサービス「LINBITクラスタスタック・サポート」を提供しております。オープンソースをベースにしたいが、商用のシステムでは万が一のためにサポートも欲しいといった場合に最適です。

      また、商用かつミッションクリティカルなシステムに対しては、スクリプト不要でシステムの高可用性を実現するHAクラスタソフトウェア「LifeKeeper」を提供しております。こちらはOSSではなく、商用ソフトウェアです。OSSを検討の際もぜひ比較してみてください。

          

       

      ビジネスを止めないシステムを実現する為のサイオスのソリューションをご検討頂ければ有難いです。

      SNSでもご購読できます。