StackStormはデータセンターのダクトテープ!?
StackStorm創立メンバーのDmitriがStackStormの紹介をする際、よくそのプレゼンテーションの中で、StackStormを「データセンターのダクトテープ」に例えています。この例えは、StackStormがもたらす自動化が、「何か全く新しい仕組みでもって実現されるもの」ではなく、既存のシステムやソフトウェアを十分に生かし、それらをつなぎ合わせて結果的に自動化を達成するものであるといった側面を表すのにピッタリの言葉だと思います。弊社インターネットマルチフィードにおいても、StackStormは社内に存在する複数のシステムを「つなぎ合わせて」自動化を達成する点で、非常に大きな役割を果たしています。弊社の取り組みの中で、StackStormを導入するに至った経緯と、その効果を以下に紹介します。
本記事と併せて、StackStorm勉強会 第2回のスライド・動画をご覧いただくと、より分かりやすいと思います。
JPNAPでの自動化の始まり、そして直面した課題
弊社はアジア最大級のIX(インターネットエクスチェンジ)である「JPNAP」を運用しています。IXは、とても簡略化して言うと巨大なL2スイッチで、お客様にはそのポートを提供し、そこに接続している他のお客様とトラフィックを交換できるようにするネットワークサービスです。弊社では、年々増え続ける新規のお申し込みや、既存の1Gから10G、10Gから100Gへのアップグレードなどに対応するべく、このポート開通作業(いわゆるSO:Service Order)を自動化する取り組みを進めてきました。
取り組み自体は2014年頃から始まり、それまでテキストファイルやExcel管理だったものをDB化したり、人が手順書を元に手作業で実施していたネットワーク機器への設定操作をツール化したりと、業務の随所で次々とシステム化が進みました。この時、それぞれのシステム・ツールは意図的に独立して開発が行われました。JPNAPは運用中のサービスであるため、新しいものを導入する際にはスムーズに行えるよう、日々の業務に対する影響は最小限になるように工夫した結果です。また各システムの導入を早め、それぞれのシステムでの成果を早く出したかったという背景もあります。
しかしある時、「それぞれのパーツはそろってきたが、これをどのようにして連携させればいいのだろうか?」といった課題に直面しました。
つまり、複数のシステムが関係し、それぞれに適切な処理を行う必要のある「業務フロー」を自動化をするためには、次の課題を解決する必要が出てきたのです。
- 複数のシステムを横断的に処理する仕組みをどうやって実装すればよいか?
- あるシステムでは処理を行う際に排他的に実施したい、つまり同時実行制御を行いたいが、これを複数のシステムを横断する処理の中でどう実現すればよいか?
特に後者は、具体的に言うとネットワーク機器に対してコンフィグ投入を行うツールの部分になります。利用しているネットワーク機器の方で排他制御ができない場合、ツール側でこれを担保する必要があります。この条件にピタッと当てはまったのが、StackStormでした。