今回から新しい章に入ります。
内容はタイトル通り自動化についてになります。
今回は、まず自動化することの価値について、学んでいきます。
自動化する前に
自動化というものをどのように捉えるべきでしょうか?今までの内容から考えると、自動化することは、とにかく良いこと、運用コストを下げるために必要なものという印象があります。しかし、自動化はそのようにどんなことでも解決してしまうものではなく、能力を増幅するものです。自動化といっても、所詮自分が行う決められた手順を行うだけです。手順を誤れば、より問題を増やすだけの結果を生んでしまいます。また、手順書を作って、手作業することよりも、それを自動化することよりも良いのは、そのどちらも必要としない高レベルの設計によってつくられた自律的なシステムです。
なので、自動化をするならば、ただ自動化するのではなく、よく考えて自動化する必要があります。
自動化の価値
一貫性
例えば、複数のユーザーで共有して、利用するようなシステムにおいて、管理者はユーザーの追加のようなタスクを行うことになります。
このような作業は、管理者によって行われます。管理者はこの作業に慣れていますが、それゆえに(そうでなくても)この作業が毎回同じように行われることはありません。いくら注意していても機械のように毎回同じことを繰り返せる人はいません。それにより、ミスや見逃し、データ品質の問題などの信頼性に問題が生じます。
まず、自動化にはシステムへの設定に一貫性を持たせることができるというメリットがあります。
プラットフォーム
適切な設計と実装がされれば、自動化システムは多くのシステムに適用したり、利益を上げることができるプラットフォームを提供することができます。
プラットフォームは、間違いを集約してくれる利点もあります。コード中のバグの修正も一度で済みますし、人間にタスクのやり方を指示するよりも、プラットフォームを拡張して、追加のタスクを実行できるようにする方が楽です。
高速な修復
プロダクトのライフサイクルの後半で問題が見つかるほど、その修正にはコストがかかります。これは、システムが成長に伴い、複雑性を増していくからです。システムがある程度大きい場合は、間違いをすぐに見つけ出してくれる自動化システムは、修復のコストを下げてくれる可能性が高いです。
素早いアクション
システムが成長し、複雑性を増していきます。
サービスが手作業で管理できる範疇を超えてしまっている場合は、自動化なしでは、長時間にわたり動作し続けることができません。
時間の節約
時間の節約の問題は、範囲を自分に限定すると、自分がその作業を行うことと、それを自動化する労力を天秤にかけることになります。しかし、そのタスクを誰かが行う可能性を考えたとき、その人の労力を減らすことになり、全体の時間の節約になります。オペレータを運用から分離することには、大きな価値があります。
まとめ
- 自動化によりさらなる問題を起こさないように、よく考えて自動化する必要がある。
- 自分が得たいメリットが自動化により得られるかを考える
参考文献
- Betsy Seyerほか SRE サイトリライアビリティエンジニアリング オライリー 71-73