【ITニュース解説】Designing BackupScout: Scan Your Server for Critical Data (Part 1)
2025年09月09日に「Dev.to」が公開したITニュース「Designing BackupScout: Scan Your Server for Critical Data (Part 1)」について初心者にもわかりやすく解説しています。
ITニュース概要
サーバーで動くプロセスをスキャンし、バックアップすべき重要なものをAIで自動判別するツール「BackupScout」を紹介。Gemini APIがプロセス情報から重要度を分類するため、手動でのルール設定は不要。結果はJSONで出力され、バックアップの優先順位付けに活用できる。
ITニュース解説
サーバーは、私たちが普段利用するウェブサイトやアプリケーションを動かすためのコンピューターであり、その内部では常に数十から数百もの「プロセス」と呼ばれるプログラムが同時に動作している。これらのプロセスの中には、ウェブサイトのデータを管理するデータベースのように、停止するとサービスに致命的な影響を与える非常に重要なものもあれば、OSが内部的に使用する一時的なものまで、様々な役割と重要度のものが混在している。システムを安定して運用するためには、どのプロセスが重要で、データを失わないように定期的にバックアップを取るべきかを正確に把握することが不可欠だ。しかし、無数のプロセスを一つ一つ手動で確認し、その重要度を判断して管理するのは非常に手間のかかる作業である。
このような課題を解決するために開発されているのが「BackupScout」というツールだ。このツールは、サーバー上で動作しているプロセスを自動的にスキャンし、AIの力を借りて「バックアップの必要性がどの程度高いか」を判定することを目的としている。これにより、システム管理者は手動で複雑なルールを設定することなく、どのプロセスを優先的に保護すべきかを迅速に特定できるようになる。最終的に、BackupScoutは各プロセスの重要度を「高」「中」「低」の3段階で評価し、その結果をJSONというデータ形式のファイルに出力する。
BackupScoutがどのようにしてプロセスの重要度を判断するのか、その仕組みはいくつかのステップに分かれている。最初のステップは、サーバー上で現在動作している全てのプロセスの情報を収集することだ。このために、Pythonというプログラミング言語で利用できる「psutil」というライブラリが使われる。このライブラリは、OSの種類に関わらず、動作中のプロセスの詳細な情報を取得できる非常に便利なツールだ。BackupScoutはpsutilを使い、各プロセスに割り当てられた一意の番号である「プロセスID(PID)」、プロセスの「名前」、「プログラム本体がどこにあるかを示すパス」、そして「どのプロセスから起動されたかを示す親プロセスのID」といった基本的な情報を集める。この段階では、機密情報を含みうる詳細なデータまでは収集せず、AIが分類するために必要最小限の情報だけを取得する。
次のステップでは、収集したプロセスの情報をAIに渡し、分類を依頼する。BackupScoutでは、Googleが提供する「Gemini」というAIモデルが利用される。AIは、プロセスの名前や実行パスといった情報から、そのプロセスがどのような役割を担っているのかを推測する。例えば、プロセス名が「mysqld」であれば、AIはこれを「データベース」カテゴリに分類し、データそのものを扱うためバックアップの重要度は「高(High)」と判断する。また、「nginx」というプロセスであれば「Webサーバー」カテゴリで重要度は「中(Medium)」、「kworker」のようなOSの心臓部であるカーネルに関連するプロセスは「カーネルスレッド」というカテゴリに分類し、バックアップの対象としては重要度が「低(Low)」と判定する。このAIによる自動分類機能がBackupScoutの最大の特徴であり、人間が事前に「この名前のプロセスは重要だ」といったルールを一つ一つ定義する必要をなくしている。
しかし、実際のサーバー環境では数百ものプロセスが同時に動いていることも珍しくない。これらの情報を一度にまとめてAIに送信すると、AIが一度に処理できるデータ量の上限を超えてしまったり、通信に時間がかかりすぎたりする問題が発生する可能性がある。そこでBackupScoutは、全てのプロセス情報を小さなグループ、つまり「バッチ」に分割して処理する。例えば、20個のプロセスを一つのバッチとして、順番にAIに送信していく。さらに、一つのバッチの処理が完了するたびに、その結果をファイルに保存していく「逐次保存」という仕組みも採用されている。これにより、万が一処理の途中でネットワークエラーなどが発生して中断しても、それまでに完了した分の結果は失われない。中断した箇所から処理を再開できるため、大規模なサーバーでも安定的かつ確実にスキャンを完了させることができる。
全てのプロセスの分類が完了すると、結果はJSON形式のファイルとして出力される。このファイルには、各プロセスについて、プロセスID、名前、AIが判断したカテゴリ、そしてバックアップ重要度がまとめて記録されている。エンジニアは、このファイルを確認することで、サーバー上でどのプロセスが重要なのかを一目で把握できる。例えば、「jq」というコマンドラインツールを使えば、ファイルの中から「バックアップ重要度が『高』に分類されたプロセスだけを一覧表示する」といった操作が簡単に行える。これにより、バックアップや監視の対象とすべき重要なプロセスを素早く絞り込むことが可能になる。
BackupScoutの活用場面は多岐にわたる。最も直接的な用途は、データベースや重要なウェブアプリケーションなど、失われると困るデータを扱うプロセスのバックアップを優先的に設定することだ。また、サーバー全体に障害が発生した際の復旧計画を立てる上で、どのコンポーネントを重点的に保護すべきかを判断するための重要な情報源にもなる。さらに、システムのパフォーマンスに大きな影響を与えるプロセスを特定し、それらを重点的に監視する対象とすることで、より安定したサービス運用が実現できる。AIが分類作業を自動で行ってくれるため、エンジニアは結果の確認と、その結果に基づいたバックアップ戦略の立案という、より本質的な作業に集中できる。このようにBackupScoutは、AIを活用してサーバー管理の効率化と信頼性向上に貢献するツールなのである。