Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

StackStormで始める運用自動化 ~入門編~

StackStorm入門(1)

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 運用自動化は、情報通信技術が民生化されて以降、現在にかけて挑戦され続けてきた大テーマです。一口に自動化といっても、さまざまな切り口が存在します。例えば、ソフトウェアのビルドやマシンリソースの調達・環境構築、または監視や通知の仕組み、あるいはCIなど、さまざまな分野で自動化のソリューションが提案され発展を遂げてきました。本稿は一般に"ワークフロー"と呼ばれるあらかじめ規定された業務プロセスフローの処理を、入力や状況に応じて自動化するソリューションの一つ「StackStorm」について、2回に分けて詳しく解説します。

目次

 初回は、StackStormを初めて知る人・使う人向けに、StackStormがどのようなもので、どのような特徴を持って、どのように使うかについて解説していきます。具体的にAWSと連携したイベントドリブンな自動化処理の設定の仕方や、細かなタスクを組み合わせた複雑なワークフローの設定方法を実際に動かしながら解説していきます。

 今回の内容によって、StackStormの機能を一通り触ることで、おおよそこれがどんなものか分かってもらえると思います。

StackStormの特徴

 ここではStackStormが、単に依存関係を解決しながら処理を実行するワークフローエンジンと何が違うかについて、機能面と運用面から見ていきます。

機能面

 機能的なStackStormの特徴として、ワークフロー処理をイベントドリブンに行うことが挙げられます。

 例えば、あなたが何がしかのサービスプロバイダーの運用担当者であったとして、サーバを構築してサービスインする作業を想像してみてください。

 まずマシンリソースを調達し、調達したマシンに対してプロビジョニングを行うと思います。そしてDNSへの登録やLBへの追加作業を行い、場合によってはこれらに加えて、リソース管理システムへの登録や、タスク管理システムへの記録などの管理・報告作業も発生するかもしれません。

 StackStormでは、こうした処理をタスク管理システムのチケットが発行されたことを検知して行ったり、パブリッククラウド管理下のリソースやソースコード管理システムのコンテンツの変更を検知してワークフロー処理を実行させたりすることが実現できます。

 もちろん、こうしたイベントドリブンな運用の自動化はStackStormがなくとも実現できます。

 例えば、Gitのローカルリポジトリに変更が加えられた際に、何らかの処理を実行したいといった場合にはGit Hooksを使えば実現できます。また、GitHubのリポジトリに対するPull RequestやIssueの作成などを検知したい場合には、GitHubが提供しているWebhookの仕組みが便利です。さらにAWSのLambdaAmazon SNSを利用することでAWSの各種サービスのイベントを検知することもできます。

 このように、それぞれのソフトウェア、サービスが提供する仕組みを個別に利用することで、それぞれのイベントを検知できます。

 しかし、各サービスごとの連携を実現させるための仕組みを個別に実装するのは、骨が折れます。

 これに対して、StackStormはさまざまなサービス間の連携を行うことを目的とした仕組み(IFTTT)の考え方をワークフローエンジンに取り入れました。

 結果StackStormを使うユーザは、どういったサービスからどのようなイベントに対して、どのような処理を行うかというワークフローを記述してやるだけで、実際にイベントを検知する仕組みや、外部アプリケーションに対する処理を実装せずに済みます。

運用面

 運用面での特徴として、StackStorm自体がScalableかつHigh Availableなアーキテクチャであるということが挙げられます。

 以下はStackStormのアーキテクチャを表しています。内部アーキテクチャについてはこの後解説しますが、ここではどの点がScalableでHigh Availableなのかを簡単に解説します。

StackStorm architecture diagram
StackStorm architecture diagram(出典:StackStorm Overview - How it Works

 まず上段の"StackStorm Sensors"というラベルの書かれた四角に注目してください。StackStormではこれらのノードで外部サービスのイベントを検知し、複数台で協調して動作する仕組みによって、システムをHigh Availableにすることができます。

 また、通知されたイベントを処理するノード(中段の"StackStorm Workers"と書かれた四角で囲まれたノード)群は状態を持たないためスケールさせることができます。これらの内部の詳しい仕組みについては、この後で詳しく解説します。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 大山 裕泰(株式会社DMM.comラボ)(オオヤマ ヒロヤス)

    DMM.com ラボ所属ソフトウェアエンジニア。アリエル・ネットワーク株式会社、グリー株式会社を経て現在に至る。最近は主にインフラ基盤の構築、運用、機能開発を行う。共著書に「次世代ネットワーク制御技術 OpenFlow入門」がある。

バックナンバー

連載:StackStorm入門

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5