0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

重たいLLMコンテナが突然落ちてもシステムを止めない。AI不在時に決定論的ルールエンジンへ瞬時にフォールバックする耐障害性設計

0
Posted at

はじめに:AIを「単一障害点(SPOF)」にしてはいけない

LAN内システムや自動化ツールにローカルLLM(Ollama等)やクラウドAI APIを組み込む動きが盛んです。
「OSの判定」「脆弱性の要約」「機器のリプレース提案」などをAIに任せることで、柔軟なシステムが作れます。

しかし、現場で運用し始めたとき、インフラエンジニアなら誰もが背筋の凍るリスクに気づきます。

  • 「Ollamaコンテナがメモリ不足(OOM)で突然落ちたらどうなる?」
  • 「AIの推論サーバーが過負荷でタイムアウトしたら、毎朝のスキャン処理が全台エラーで止まるのか?」
  • 「クラウドAIの障害やAPI制限のせいで、LAN内資産の棚卸し業務がストップするのか?」

AIがダウンしたからといって、システム全体のコア機能(資産の検出、台帳登録、トポロジー表示)まで道連れにして落とす設計は、エンタープライズの現場では「絶対悪」 です。

AIはあくまで「付加価値(アドオン)」であるべきです。AIが死んでも、従来の「静的辞書・決定論的ルールエンジン」にミリ秒単位で切り替わり、100%の業務を継続できるフェイルソフト設計 を組み込みました。


1. 決定論的ルールエンジンの実装

AIが不在でも、OSのバージョン判定やサポート終了(EoL)の警告は、正規表現と辞書テーブルを使えば完全に決定論的(100%の再現性)に判定できます。

💻 コア実装・設定スニペット(抜粋)

# コア実装ロジック(要点抜粋)
import re

# サポート終了 (EoL) 日時辞書
EOL_DATABASE = {
    "windows 10": {"eol": True, "date": "2025-10-14", "msg": "Windows 10 はサポート終了間近です。Win11へ移行してください。"},
    "windows 7":  {"eol": True, "date": "2020-01-14", "msg": "サポート終了済みOSです。ネットワークから即時遮断してください。"},
    "ubuntu 18.04": {"eol": True, "date": "2023-05-31", "msg": "Ubuntu 18.04 LTS は標準サポート終了済みです。"},
    "ubuntu 20.04": {"eol": False, "date": "2025-04-02", "msg": "間もなくサポート終了予定です。"},
}

def analyze_asset_by_rules(raw_os: str, ports: list, banners: dict) -> dict:
    """
    LLMを一切使わず、高速かつ決定論的に資産分類・EoL判定を行う
    処理時間: 0.1ミリ秒
    """
    clean_os = (raw_os or "不明").lower()

    # 1. OSおよびEoL判定
    is_eol = False
    eol_message = "サポート期間内です。"
    for os_key, eol_info in EOL_DATABASE.items():
        if os_key in clean_os:
            is_eol = eol_info["eol"]
            eol_message = eol_info["msg"]
            break

    # 2. 稼働ポートに基づくデバイス分類
    device_category = "一般端末"
    if 445 in ports and 548 in ports:
        device_category = "NASストレージ (Synology/QNAP等)"
    elif 9100 in ports or 515 in ports:
        device_category = "プリンタ・複合機"
    elif 22 in ports and "linux" in clean_os:
        device_category = "Linuxサーバー"
    elif 3389 in ports:
        device_category = "Windowsクライアント/サーバー"

    return {
        "engine": "DETERMINISTIC_RULES", # ルールベース判定であることを明記
        "device_category": device_category,
        "is_eol": is_eol,
        "recommendation": eol_message
    }

2. スキャナー側の二重フォールバック制御

スキャナー本体では、LLMの呼び出しを try-except およびヘルスチェックでラップし、異常発生時は1秒以内にルールエンジンへフォールバック させます。


3. CI/CDでの「フェイルソフト自動検証テスト」

この耐障害性が本番で確実に機能することを保証するため、単体テストスイートを用意しています。
「あえてLLMコンテナを停止させた状態」 でテストを実行し、Web画面やスキャンAPIが正常にステータス200を返すかを自動検証します。


まとめ:プロフェッショナルのシステム設計思想

AI技術は華やかですが、実世界のインフラ運用の現場では**「どんな悪条件でも絶対に落ちない頑丈さ」** が最も高く評価されます。

  • AIを「主役」ではなく「ブースター(加速器)」と位置付ける
  • AIが落ちたら、何事もなかったかのようにルールエンジンが肩代わりする
  • ユーザー体験(UX)を1秒たりとも遮断しない

このフェイルソフト思想を持って設計することこそが、PoCで終わる「おもちゃのAI」と、本番運用に耐えうる「堅牢な製品」を分ける決定的な境界線です!


📚 さらに詳しいアーキテクチャ設計・パラメータ表・トラブルシューティング

最後までお読みいただきありがとうございます!
本記事が少しでも「役に立った」「あとで試したい」と感じていただけましたら、ぜひQiitaの 「いいね(♡)」 と 「ストック」、および アカウントのフォロー をいただけると今後の検証・執筆の大きな励みになります!

また、本記事のさらに踏み込んだ 「深層アーキテクチャ解説」「主要パラメータの技術的根拠」「現場アンチパターン・トラブルシューティング対応表」 は、以下のGitHub技術リファレンスにて公開しています。

👉 【第27弾 詳細技術リファレンス (QIITA_ARTICLE_DETAIL_27.md)】

⭐ 全14層・200パターンの自立型インフラ&オンプレAIリファレンス集(おじさんの武器庫)を順次公開中です。ぜひGitHubリポジトリへの Star (★) と X (@OjisanTechnical) のフォローもお願いいたします!
👉 GitHub リポジトリ: ojisantech/ojisan-arsenal

💡 【検証環境・個人研究(PoC)に関する注記】
本記事は、筆者個人の自宅検証環境(ホームラボ/仮想環境)において、公開情報およびOSS(オープンソースソフトウェア)を用いて独自に構築・検証した個人研究(PoC)の記録です。特定の企業・団体の実環境や業務上の非公開情報とは一切関係ありません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?