2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
本当にあった怖い話 Ansible SaaS運用編(全1記事)
リンクをコピー
記事をブックマーク
じろ氏:「本当にあった怖い話 Ansible SaaS運用編~大いなる力には大いなる責任が伴う~」というタイトルで、じろが発表します。よろしくお願いします。
最初に、これは実際にAnsibleを使って起きた事故です。本当にすごくしょうもない事故ですが、今のところ有効な再発防止策がないので、もしいい案があればハッシュタグ付きでツイートしてもらえたらと思います。そのあと、私が起こしたわけではありませんが若干脚色して話そうと思います。
(スライドを指して)こちらが自動化している環境です。特徴としては、AWS上で動くWebシステムで、1つの共有OSにそれぞれいろいろな顧客別のデータベースとアプリケーションが入っていて、Webの入口だけ分かれているような仕組みです。これは契約ごとにどんどん増えて、多い時は同時に月2契約くらい増えることもありました。
これはどうやってAnsibleを使っているかというと、include_varsです。顧客ごとの環境定義ファイルのようなものをvarsファイルとして作っています。AWSなら、VPCやSecurityGroup、Route53 CloudWatchのような定義ファイルです。Webなら、httpdやSSLの証明書。APなら、EARファイルやserver.xml、Javaのプロパティファイル。DBなら、データベース名など。
共通OS部分には追加するユーザーや起動サービスが変数として格納されていて、それをAnsible Tower実行時にinclude_varsで読み込んで、Playbookが実行されます。(スライドを指して)この一番下が増えるという意味です。
これは本当に、いろいろなことをやっています。トータルでは25ノードくらい、ワークフローのテンプレートがジョブテンプレートを何個か組み合わせてやっているような、巨大なワークフローテンプレートです。
そしてある日、このワークフローを使っていて事件が起きました。どこで起きたのか。こちらは少し脚色しています。というのも、APサーバーのXMLをテンプレートモジュールを使って展開するところで、誤って既存環境のserver.xmlのパスを書いてしまったんです。
そうすると何が起きるか。サーバーが見ているDBの参照先が変更されて、とんでもないことになりました。実際は、APサーバーが再起動しないとXMLはすぐに反映されません。すごく問題になったかというとそれほどではありませんが、これはいわゆる事故です。
この事故はどうすれば防げたのか。現時点では有効な手段を思いつきませんが、本当に「そもそも共有のOSは自動化に向いていない」と思っています。
政治的な理由でこうなってしまったので、なんともしょうがないのですが、やはり1つの環境変更が全体や既存に影響します。これが共通OSではなく個別OSなら、include_varsではなくhost_varsを使うことになるので、わりと全体への影響は下がったのではないでしょうか。コーディングの範囲ではどうしようもないと思います。
ほかにも、変更箇所が多いので変数も多いです。1環境あたり120個あるので、Varsファイルを使ってYAMLですべて入念に指差しチェックしても、たぶん限界というか、絶対にミスは起きると思います。
それを防ぐために既存環境との変数重複チェックツールを作るのは、あまり実装イメージが湧きません。Excelからvarsを自動で生成するようなマクロも考えてみましたが、そもそもExcel入力を間違えたら意味がないので、根本的な再発防止策にはならないと思っているところです。
(スライドを指して)これはちょっと恥ずかしい。現時点での暫定の再発防止策として、おふざけで書いていますが、「大いなる力には大いなる責任が伴います」。どっかで見たぞみたいなところもあると思いますが、このような文言を加えることによって、実行前にもう一度変数を確認することが、今現時点で取り得た最善の手だと思っています。
まとめです。やはり、コーディングだけではなく、自動化でいかにミスを防ぐ環境を作るかが非常に大事だと思っています。特に今の環境は、オンプレで動いていたレガシーなものをそのままAWSに持っていったようなところがあるので、マイクロサービスではありませんが、やはりいろいろな機能を分離して、あまりほかに影響しない仕組みが大事だと思っています。
自動化は大事だし便利だと思いますが、使い方を間違えると環境破壊にもつながるツールなので、やはり「大事なのは責任感」というオチがあると思います。
また、いい案をお待ちしています。私の発表は以上です。ご清聴ありがとうございました。
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05