Ansible トレイルマップ
MOUNT BUTTON

STEP 1

自動化で解決すべき
本当の課題

 このステップでは自動化でこれまで取り組んできた、そしてこれから取り組むべき課題について整理していきましょう。既にPlaybookを書いて自動化している人にとっては「今さら?」と感じるかもしれません。あえて最初のトピックとしてこのテーマを扱うのは理由があります。今、インフラの自動化は大きなパラダイムシフトを迎えており、この変化を認識して取り入れていくためには、「何を解決するのか?」という視点で自動化を見つめ直すことがとても重要です。このステップを通じて、自動化に対する新しい視点を持ち歩んでいきましょう。

これまで向き合ってきた課題

 私達がインフラ領域での自動化を考える時に真っ先に思いつくことは何でしょうか?多くの方が、構築や運用に使われる作業手順書をプログラムやスクリプトに置き換えることを思い浮かべることでしょう。これは「人の作業」に着目して、その作業を機械に置き換えることで労力や時間を節約すると同時に、人のミスを無くして品質の向上につなげています。言い換えれば、従来の自動化は「作業における労力や品質の課題」に向き合っているとも言えるでしょう。AnsibleでPlaybookを書いて自動化するのは、この課題を解決することが主目的です。

 このアプローチは長らくインフラにおける自動化の主流であり、多くのシステムや現場で実践されてきました。Playbookを書いて自動化することに違和感なく入り込めた方も多いはずです。しかし、システムの重要性が増し、構造が複雑化し、規模も拡大したことで従来の自動化では解決できない問題が出てきました。次にその問題について見ていきましょう。

新しい課題

 現在、私達が何らかのインフラの作業を行う場合はどのように進めているでしょうか?おそらく、最初に作業の概要をヒアリングし、必要な関連部署との調整を行い、その後に必要なパラメーターシートや手順書を作成し、これらドキュメントを関係者とレビューを行って、ようやく実際の作業に取り掛かる、という流れが一般的ではないでしょうか。このように調整を互いに行いながら作業を進めるのは、もちろんシステムを安定稼働させ障害を発生させないためです。多くのシステムにおいて領域ごとに担当者が別れているため、互いの作業の影響を確認しながら進めていきます。

 この「関係者で調整をしながら進める」という部分が今日の新たな課題につながっています。すなわち、システムが複雑化して規模が大きくなったことで調整すべき担当者が増えてしまい、調整に関わる労力が肥大化しているということです。皆さんの中にも、日々の仕事の大部分が打ち合わせやドキュメント作成、そして調整に費やされているという方も多いのではないでしょうか。Red Hatが自動化の支援の中で全体プロセスの可視化を行うと、ほとんどの企業で「作業前の準備・調整」が70〜90%を占めています。これはシステムの規模が大きくなり、関係者が増えるほど指数関数的に肥大化し、巨大なシステムやミッションクリティカルなシステムでは99%にも達することもあります。

 このような状況では従来の「人の作業に注目した手順の置き換え」は大きな効果に繋がりにくくなります。手順の自動化では全体のうちの10〜30%の部分(時には1%)にしか作用しないため、その一部を自動化しても相対的に効果が下がってしまうためです。自動化に取り組んでいるのに、残業がさっぱり減らない、仕事が楽にならない、あまり効果が感じられないという要因にもなっています。

 ではインフラの自動化は意味がないのでしょうか?そうではありません。自動化を「作業の調整や準備」にも作用するようにしてやれば良いのです。その方法と考え方について見ていきましょう。

これからの自動化のアプローチ

 肥大化した準備や調整に作用する自動化とは「サービス化された自動化」です。今までの作業を置き換える自動化を一歩進めて自動化をサービスとして利用できるようにします。これまで人と人とが調整を行っていた代わりにサービス化された自動化を提供し、自分の代わりにそのサービスを利用してもらいます。

 この図ではWEBアプリケーションのリリース作業を例にサービス化を説明しています。従来は3つのチームが連携して作業を行っていたところを、ネットワークチームが自分たちの作業である「ロードバランサーの閉塞・開放」といった作業をサービス化しています。サーバーチームやアプリチームは、ネットワークチームに作業を依頼する代わりに、ロードバランサーの操作が必要になった時にはこの「ボタン」を押してサービスを呼び出します。こうなるとネットワークチームは全体の工程において最初から最後まで登場する必要がなくなります。これで作業の関係者が減り準備と調整の手間を大幅に削減することが可能です。

 このように「人や組織のオーバーヘッド」に注目して、自動化した作業をサービス化し「登場人物を減らす」ことで効率化に繋げる方法をRed Hatでは「自動化2.0」と呼んでいます。対して、従来の「手順の置き換え」に注目した自動化は「自動化1.0」になります。昨今、大きな効果を出し成功した自動化事例の多くが自動化2.0の発想に基づきAnsibleを活用しています。

  対象とする課題 自動化の適用方法
自動化2.0 人や組織のオーバーヘッド サービス化
自動化1.0 手動作業における品質・コスト・スピード 手順の置き換え

自動化2.0の実現に向けて

 Ansibleで自動化2.0を実現するには、自動化1.0で作ったPlaybookを「ボタン」にしてサービスとして仕立て上げる必要があります。Playbookをボタン化する機能をAnsibleは備えており、Ansible Tower や AWX がこれを担います。ボタン山のトレイルマップではAnsibleで「自動化2.0」を実現していくための地図を示していきます。人の作業を自動化する自動化1.0から、人と組織のオーバーヘッドを解消する自動化2.0へ、共に歩んでいきましょう。

取り組んでみよう

 次のステップに進む前に以下のワークシートを使って今の状況と考えを整理してみましょう。

(1)自分やチームが取り組んできた自動化の視点とその深度(チェックを入れる)

視点 取り組み状況
出来ていない 少し出来ている 出来ている かなり出来ている ほぼ出来ている
自動化2.0          
自動化1.0          

(2)自動化2.0(ボタン)にすることで効率化できそうと感じた作業をリストアップする

ボタン化(サービス化)する作業 ボタンを押す人
例) IPアドレスの払い出し 例) サーバーチーム
例) FWのルール追加 例) アプリチーム
   
   
   
   
   
  • Ansible Weblog

    Ansibleに関する有益な情報を定期的にアップデートしています。
    ぜひご一読ください。

  • Ansibleユーザー会

    Ansibleユーザー会ではもくもく会など様々な会を実施しています。
    気軽に参加できますので、ぜひご参加ください。