目標の設定、業務フローの見直し後、フローに合ったツールを導入する
――システム運用の自動化をどのような流れで進めていけばよいか教えてください。
最初に目標を設定します。自動化という言葉のとらえ方は人それぞれです。手作業の自動化と考える人も、人工知能を使ったすごい自動化システムをイメージする人もいます。何のために自動化を行うのか、人的ミスを減らす、作業効率を上げるなど、現場の視点で具体的な目標を設定するとよいでしょう。
目標を設定したら、次は業務フローの見直しです。そもそも自分たちが行っている作業は正しいかどうかを見直す必要があります。業務フローよりツールの導入を優先すると、失敗します。たとえば、最近デプロイツールとしてDockerがよく使われていますが、「Dockerを導入する」ことが目標になってしまうと、導入の結果、ツールに合わせて業務フローが捻じ曲げられ、かえって効率が悪くなってしまうかもしれません。私をはじめ、エンジニアはいろいろなツールをすぐに使いたいと思ってしまいますが、そこは一歩引いて、業務フローが正しいかどうかを先に考えましょう。
業務フローの見直しが終わったら、業務フローに合ったツールを探します。ツールが見つかったら、コストが見合うかどうかを検討し、導入します。自分で作るという方法もありです。たとえ「車輪の再発明」になったとしても、ツール開発のノウハウがビジネスの拡大につながるのなら作ってもいいかもしれません。使うか、作るかは、運用環境次第です。どちらがよいか決まった答えはないと思います。
――どこまで自動化を進めるべきか、その目安はありますか。
システムの規模が1つの目安になると思います。
1人で管理できる規模のシステムであれば、どんどん自動化を進めて作業を効率化していけるでしょう。一方、規模が大きく、管理者も多ければ、システムが複雑に分岐し、専門化しているために、自動化はもちろん、業務フローの見直しや教育などの手間が大きくなってしまうことがあります。そういうシステムで無理やり自動化を進めてもうまくいきません。規模が大きいシステムでは、現場の局所局所で自動化できる手作業がないか考えていけばよいと思います。
ツールの導入はあくまで手段であり、目標ではないことに注意
――自動化に取り組むにあたり、目標を達成するために大切なことを教えてください。
まずは手を動かしてください。ツールを使うのであれば、その仕様を眺めているだけでなく、手を動かして本当に使えるか、業務フローに合っているか試してみましょう。実際に使ってみないとツールの真の姿はわかりません。試しながらツールに対する理解を深めることが大切です。
トラブルシューティングを行うためにも、ツールへの理解が必要です。自動化を行ってもトラブルは起こり得ます。ツールは作業を自動で処理しますが、ツールの動作を設計するのは人間だからです。異常が発生したときにリカバリできるように、ツールが裏側でどのような動きをしているか理解しておくべきです。ツールの仕組みがわからず、別のプロジェクトでは使えなかったというのも残念なことです。
――自動化に失敗しないために注意しなければならないことは何でしょうか。
エンジニアが陥りやすいのは、「自分が好きなツールを導入したい」という罠ですね。苦労して使いこなせるようになったので、業務に使いたいというのはよくある話でしょう。特に、個人ではなく、部署や会社で取り組んでいると、検証に時間がかかったから是が非でも使わなければだめだ、となりがちです。先ほどもお話ししたように、目標を達成するために、業務フローに合っているからそのツールを導入するという基本姿勢からぶれないことが必要です。
現場での経験を積み、アンテナを張ってツールについて知ることが大切
――今、注目しているツールを教えてください。
HashiCorpが出しているTerraformが今一番面白いと思っています。Terraformを使えば、さまざまなクラウド環境やローカルの仮想環境に複数のリソースを設定でき、さらにリアルタイムでの設定変更も可能です。大抵のプロビジョニングツールはリソースのインストールや設定を行うだけで終わりますが、Terraformは複数のサーバを起動し、ChefやAnsibleといったツールを走らせることもできます。
クラウド環境は通常Webサイト上のコントロールパネルで設定しますが、コントロールパネルで何が行われるか理解していないと操作できません。しかも、クラウドごとにその画面や使い方が異なります。Terraformでは、サーバやストレージなどのリソースを設定ファイルに定義しておき、terraform applyコマンドを実行するだけで設定ファイルに従って構成を行います。クラウドによって設定ファイルの定義方法は変わりますが、terraform applyコマンドを実行するだけでよい点は同じです。コントロールパネルを介さずAPIを呼び出して実行するため、作業時間の短縮も可能です。クラウドの利点を生かしているという意味でも、筋の良いツールだと言えるでしょう。
――自動化に取り組みたいと考えている読者にアドバイスをお願いします。
まず、実際にサーバを用意し、ドメインを取得して運用してみましょう。自分のサーバですから、もちろん自分で管理しなければなりません。サーバがきちんと動いているかどうかを知るためには、監視ソフトウェアが必要になります。監視して動作を確認して……と運用していくうちに、障害が発生します。絶対に、障害に対応する場面に遭遇します。こういった経験は、のちにものすごく生きてきます。それは強く言っておきたいです。
自分でサーバを運用しているとわからないことがたくさん出てきます。それを自分で調べて解決する。そうやって経験を積んでいってほしい。こういったことは学校では教えてくれません。特にクラウド・仮想化環境で最新技術を活用した運用ノウハウを教えられる人はおそらくいないでしょう。現場での経験に勝るものはありません。
また、いろいろな方面にアンテナを張って、知識の引き出しを増やしておくことが大切です。どのようなツールがあってどのような機能があるかを知っているだけでも、現場での対応が違ってきます。上から振られた仕事を唯々諾々とこなすだけでなく、こういうツールを活用すれば現場の作業を効率化できると主張することもできます。
自動化のためのツールは数多くありますが、どんなに良いツールでも成果が得られるかどうかは使う人次第です。ツールについて理解し、業務フローに合っているか、正しい選択かを判断できる力を養ってください。
――ありがとうございました。
