cybozu.com の運用を支える Forest チーム

「サイボウズ・アドベントカレンダー」の7日目です(これまでの記事一覧)。


こんにちは、Forest チームの糟谷です。

Forest チームは cybozu.com のインフラの運用保守を担当するチームです。 運用保守というと具体的にはどのようなことをしているのかあまりご存知ない方もいらっしゃるかもしれません。また運用方法というのも現場によって様々だと思います。そこで今回は Forest チームで行なっている cybozu.com の運用について紹介します。

Forest 運用タスク

cybozu.com は自社でクラウド環境を構築してサービスを提供しているため、Forest チームではアプリケーションより下のレイヤーの OS やネットワーク、ハードウェアの部分まで管理しています。必然的に Forest チームのタスクはアプリ開発をしている他のチームよりタスクの幅が広くなります。具体的には次のようなタスクがあります。

  • サーバ構築 & 増設
  • 運用ツールの作成
  • インフラ各種の監視
  • 定期メンテナンス
  • 障害調査&対応
  • ドキュメント作成

今回はこれらのタスクとオペレーションフローについて簡単に紹介します。

サーバ構築 & 増設

前述のように cybozu.com は自社でクラウド環境を構築しているので物理サーバの構築 & 増設作業というものが発生します。ただサーバ構築については pxeboot と kickstart を用いた OS 自動インストールと deploy スクリプトによって半自動化されてしまっているのでそれほど大変な作業ではありません。

運用ツールの作成

全ての作業を人手で行うのは不可能なので、当然ながら効率良く作業するための運用ツールというものが必要になります。基本的には運用ツールの作成はインフラ開発チームの Hazama チームが行いますが、モノによっては Forest チームも開発しています。運用ツールには複数の VM のソフトウェアパッケージを適切にアップデートするツールや、複数の VM に対して一括で設定を適用するツールなど様々なツールがあります。

インフラ監視

安定運用するうえで大切なのがインフラの状態を知ることです。現在インフラが正常なのか異常なのか、また異常ならばどこが異常なのかがわからなければ、気づいた時にはサービスダウン、ということになりかねません。 インフラ監視は Hazama チームの監視プログラムと Zabbix で行なっています。Hazama チームの監視プログラムが主にサービスやアプリケーション部分に関わる部分の監視、 Zabbix では OS 、ネットワーク、ハードウェアに関わる部分の監視を行なっています。

定期メンテナンス

運用環境アプリケーションの更新やサーバシャットダウンを伴う定期メンテナンス作業が月に一度あります。実際のソフトウェアパッケージの更新やメモリ拡張などの作業はこの時に行なっています。因みにアプリケーションの大規模アップデートを行う際は、あらかじめ用意したコピー環境でアップデートのリハーサルをしています。

障害調査&対応

運用する上で避けられないのが障害対応です。障害対応は物理的なものからソフトウェア的なものまで原因が様々です。最近は物理マシンが増えていることもあり、数としてはハードウェア障害が増えてきています。

ドキュメント作成

ネットワークの構成図、オペレーション手順、サーバ構成手順等のドキュメントの作成、更新をします。ドキュメントを作っていないとオペレーションが属人的なものになってしまったり、人によってセットアップ手順が変わったりしてしまいます。安定運用する上ではそういった属人化をなるべく防ぐためにドキュメントを作成しています。

オペレーションフロー

Forest のタスクは運用ツールの開発、設定ファイルの修正等ありますが、運用環境へ直接オペレーションを要するタスクが比較的多いです。運用環境へのオペレーションというのは、要はコマンドを実行していくわけですが、具体的にどんなコマンドをどういった順序で実行するのか予めレビューをうけておかないとオペレーションミスがおきてしまいます。 特に障害対応時には障害回復させるつもりで実行したコマンドで状態がさらに悪化してしまうことも考えられるので、オペレーションレビューというのは必須となります。またオペレーションそのものに問題がなくとも、他部署との調整が必要となるため、すぐにはオペレーションを実施できない場合もあります。

これらの点を考慮し、Forest チームではオペレーションを実行するにあたり、オペレーションフローを設けてレビュー、承認をもらってから各種オペレーションを実施していくというルールがあります。オペレーション以外のタスクに関してもこれと似たフローを経てタスクを処理しています。

おわりに

今回は Forest チームでの運用保守で具体的に何をしているのか少し紹介させていただきました。 これまで紹介したことが全てでは無いですが、cybozu.com の運用チームの運用で何をしているのか少しでも知っていただければ幸いです。


明日は「超速で開発・リリースするための6つのこと」をお送りします。お楽しみに。