システム開発時にAPIを利用するというのはよくあることですが、運用時においても役立つAPIはたくさんあります。今回はまずカテゴリについて紹介します。APIを活用することで運用負荷を軽減しましょう。
バージョン管理
最近のプロジェクトではGitが一番よく使われているかと思います。その中でも最も有名なGitHubは多数のAPIを有しており、コードの取得や更新、課題の登録や更新もAPI経由で操作が可能です。
後述するCIではエラーがあった時にGitHub上に課題を自動作成するものもあります。コードはシステムの要になりますので、GitHubのAPIを通じてシステムが連携していることが多いようです。
CI(継続的インテグレーション)
開発、テストそしてデプロイの流れを自動化する上で欠かせないのがCIです。有名なものとしてオープンソースのJenkinsがあります。また、CircleCIなどクラウドでCIを提供するサービスも数多くあります。
CIは基本的にシステム連携前提で作られていますので、APIから操作するのが基本となっています。結果はWeb上で閲覧できる他、後述するChatOpsとしてメッセージを飛ばしたり、GitHubの課題を作成したりします。
ログ管理
システムのログは日に日に増えていきます。それらをただ単に蓄積していてもストレージのムダにしかなりません。そこでログ管理系サービスが使われます。API経由でデータを登録するものもありますが、Fluentdを使ってデータを飛ばすものが多いようです。
ログ管理の場合、データの登録はAPI経由で行いつつ、ダッシュボード上でビジュアル化されます。各フレームワーク向けにプラグインやSDKを提供し、APIを直接利用するものは多くないようです。
監視
サーバやサービスの監視系の目的は主に生死管理になるでしょう。クラウドなどを使ってサーバをダイナミックに増減させている場合、監視対象もまたダイナミックに変化します。そこでAPIが利用できます。
監視系はその状態を通知するだけです。前述のCIと同様、ChatOpsとしてメッセージを飛ばすものが増えています。また、メールやSMS、自動音声による電話をかけるというものもあります。
IaaS/PaaS操作
昨今のクラウドサーバはAPI操作できるものが殆どになってきました。サーバの立ち上げ、アプリケーションのデプロイそしてサーバのシャットダウンまですべてAPI経由で操作します。管理画面もありますが、自動化を進める上ではAPIが便利でしょう。
ネットワーク操作
ネットワークというと有線、無線に限らず普遍的なものに思われますが、最近では速度をAPI経由で操作できるようになっています。最大速度は決まっていますが、速度を低速にすることで料金を下げたり、ネットワークの利用自体を止めることもできます。
業務時間だけネットワークを利用できるようにしたり、サービスの利用可否を自動的に制御する際に使われています。
情報共有
かつてはプロジェクト管理やグループウェアで行われた情報共有も、最近ではChatOpsというキーワードが聞かれるようになってきました。ChatOpsでは情報をチャットの中に一元集約し、システム開発関係者が見るべき場所を絞り込んでくれます。
これまで述べてきたような監視であったり、IaaS/PaaS操作においてもメッセージをチャット上に投げるものが増えています。システム管理者はチャットさえチェックしていればメッセージにいち早く気付けるようになります。
有名なところではSlack、Hip Chatなどがあげられます。日本発で知られているChatWorkのAPIはプレビュー版(限定公開)であり、今後のオープン化、広まりが期待されます。
運用時におけるAPI活用は主にアウトソースが目的になります。手作業でやることもできますが、工数がかかったり管理が煩雑化するので自動化によるミスやコスト低減を狙えます。
自動化したことで減った工数をさらに開発へ移動し、さらなる付加価値を生み出してはいかがでしょうか。