バージョンが古いせいで障害を起こしてしまった件
こんにちは。今日でシルバーウィーク最終日ですね。
雨がやばすぎて外にあんまり出れなかったです。
でもドラマやアニメをたくさん見れたので良いリフレッシュになりました。かなりだらけてしまいましたが。
さて、今日は障害を起こしてしまった話をしたいと思います。
業務でrailsを触っていますがこちらのバージョンがかなり古いアプリです。
そこで最近起きる問題がAIが割と新しい記法を使ってコーディングをしてくることです。古いバージョンのアプリについてはこれがかなりきついです。
一見正しそうに見えますが、実行してみるとエラーになる。調べてもそれっぽいので原因を調べると最近のバージョンで導入されたとのこと。実行時にエラーが出るならまだいいですが、本番環境だけ起きるエラーにもこのまえ遭遇しました。(これで障害を起こしてしまいました)。内部実装だけ変化するパターンです。
昔は非効率な処理をしていたため、そのまま書くとエラーが起きるが、最近のバージョンで修正が入り、問題なく動くようになったみたいな状況です。
当然LLMはその修正を知っているため、その手法でいいじゃんって思って書くとエラーが起きる。開発者もlocalやstaging環境で動作確認をしますが、データ量が違うせいで普通にpassしてしまい、リリース後に障害が起きてしまいました。
悲しかったですし反省しました。
これを受けて、障害が起きた箇所の内部構造の調査をかなり行いました。
AIが見えるように同様の処理をしないように注意することと、チーム内での共有を行いました。でもAIも人間も当然新しい文献を参照するので、別の障害を防ぐことが出来なさそうです。
AI駆動で開発するためには:
1.本番環境とSTG環境をできる限り同じにする
これは以前までもあたりまえですよね。
時間が立つとデータ量や内容に乖離が生まれてしまいます。開発に追われていると中々基盤の調整をする時間を割けないですが、とても重要なことなのでできるだけ同じ状態に維持したいです。
最新バージョンを維持する
これも当たり前ですよね。パフォーマンス向上や脆弱性を防ぐためにも上げたほうが確実に良いです。でも古いバージョンだともう上げられなかったり、ライブラリやフレームワークとの互換性がうまくあわなかったり等の問題が生じます。破壊的更新によりコードの記法が変わりエラーが起きることもあると思います。コストが非常にあがるので放置せずにこまめに上げるようにしたいです。AIに現在のバージョンのdocumentを読み込ませる
1も2も出来ない場合ってありますよね。その場合はAIに頼りましょう。その当時のドキュメントやコードを食わせて危ないところを覚えさせるのが良いでしょう。今回障害を起こしてしまった内容をAGENETS.mdに記載するようにしました。
また、まだ私はやっていませんが、利用しているバージョンから最新のバージョンの修正した箇所やこれから修正するべき内容を参照させてみたいです。
以上1~3を心がけて開発を進めるようにしたいです。もう障害は起こしたくないです。
追記:
エンプラのシステムってAI導入でこのような障害めっちゃ起きそうですが、どうやって回避しているんでしょうか? Javaとかバージョンの違いですごい起きそう。
是非共有してくださいmm
それでは。
コメント
最初のコメントを投稿しましょう。