低コスト・低リスクのサービスインフラ運用の取り組み
一般的に運用者がオペレーションを行う対象は、フルマネージドサービスでない場合、サービスを提供するシステムに加え、システムを支えるミドルウェア、アプライアンス、およびそれらを管理するシステムなど多数存在します。また、提供サービスの規模・機能が拡張することで、運用者がオペレーションを行う対象はさらに、多種・多様化することが予想されます。
例えば計算機リソースを作成し、それをサービス環境に投入する場合を想像してみてください。
この場合、運用者はたくさんのオペレーション(まずサーバ管理システムを操作して計算機リソースを確保。そしてストレージからボリュームを切り出し、確保した計算機に割り当てる。続いてネットワーク設定、DNSへのホスト登録などを行い、さらにサービスコンテンツのデプロイを行った後、ロードバランサに登録し、構成管理システムへの登録など)を行う必要があります。
このように、運用者がさまざまな機器・システムに対して個別的なオペレーションを直接行う運用には、高いコストとリスクが伴います。
まず、運用者は多種多様なシステムのオペレーションに精通しなければならず、これに対する学習(教育)のコストがかかります。また、一人の運用者でカバーしきれないほどシステムが大規模・複雑化する場合には、それぞれのシステムに精通した運用者が組織的に対応しなければならず、これによって管理コストが大きくなります。
加えて、システムへのオペレーションを行う際、未熟な運用者によるオペレーションや、複雑なオペレーションを実施する場合、オペレーションミスによる障害リスクも高まります。
DMM.comラボのインフラでは、運用コストを低減させるためにStackStormを利用し、オペレーション対象のシステムを抽象化する取り組みを行っています。
例えば、先ほどの計算機リソースの作成とサービス投入の作業をStackStormがある環境で行った場合、図2のようになります。
運用者の作業は欲しい結果(新たな計算機リソースがサービスに追加されている状態)をStackStormに対して指定するだけで済み、個別の機器・システムに対するオペレーションはStackStormが実施します。このようにすることで、運用者によるシステムの運用コストが低減するだけでなく、機器やシステムの存在を運用者に意識させないことで、従来と比べて個別の機器やシステムの入れ替えを容易できるようになる効果も期待しています。
また、StackStormでは個別の機器・システムへのオペレーションや、イベントハンドリングを行うソフトウェアコンポーネントをモジュール化しており、運用者はこれまでにコミュニティによって開発されたモジュールを利用することができます。そして、それらの多くは機能的なテストを経て、多くのユーザーによって利用されるという実績を積んでいます。個別の機器・システムに対するオペレーションを、こうしたソフトウェアで行うことでオペレーションミスを防止し、より安全な運用が行えるようになると見込んでいます。
さらに、それぞれの機器・システムにおけるさまざまなケースの障害に対して、StackStormによる運用の自動化で解説されているARを活用した、障害一次対応の自動化にも取り組んでいきたいと考えています。