<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ナギ＠氷河期SEの知見録</title>
	<atom:link href="https://sys-univ.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://sys-univ.com</link>
	<description>クラウド移行・基盤設計・運用設計で見落としやすい実務の落とし穴を、若手SEにも分かる形で整理します。</description>
	<lastBuildDate>Sat, 20 Jun 2026 15:23:13 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://sys-univ.com/feed/"/>
	<item>
		<title>RDS for Oracleを採用したら、オンプレ運用の前提が通用しなかった｜開発中に見えた設計ギャップと代替アプローチ</title>
		<link>https://sys-univ.com/aws/rdsforora/</link>
					<comments>https://sys-univ.com/aws/rdsforora/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Fri, 07 Oct 2022 07:20:26 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=1558</guid>

					<description><![CDATA[オンプレのOracleで長く運用してきたDBAが、RDS for Oracleに移行したとき、最初に戸惑うのは性能ではなく「いつもの操作ができない」ことでした。 SSHでログインしようとしても入れない。 ALTER SY [&#8230;]]]></description>
										<content:encoded><![CDATA[<p id="23e59adf-d553-487c-9724-95924024db01">オンプレのOracleで長く運用してきたDBAが、RDS for Oracleに移行したとき、最初に戸惑うのは性能ではなく「いつもの操作ができない」ことでした。</p>
<p id="6185da3e-ec9c-40ee-92d4-5f65693648d1">SSHでログインしようとしても入れない。<br />
ALTER SYSTEM を実行しようとしても通らない。<br />
オンプレで使っていた SYSDBA 前提の操作が、そのまま使えない。</p>
<p id="572200ef-f301-4659-aaa0-ea4f279768db">サーバーは動いている。Oracleも動いている。なのに、これまで当たり前に使っていた運用手順が通用しない。</p>
<p id="05e3217c-867a-4719-9b8b-d94ba5bc5a52">原因は、DBの設定ミスでも権限設定の漏れでもありませんでした。</p>
<p id="b34f0091-1d01-458c-b6d0-e7b48293d34d">RDSがマネージドサービスとして設計された構造上、<strong>オンプレで「当たり前」だった低レイヤーへのアクセスが、そもそも提供されていない</strong>のです。</p>
<p id="1d9661d7-0a3c-45b3-b544-64ce5e2b27dc">今回の記事で伝えたいのは、RDSが劣っているという話ではありません。</p>
<p id="87c84e1e-73a8-48b6-a6d2-21c62850e118"><strong>マネージドの恩恵とトレードオフは表裏一体です。RDSを選ぶ時点で、オンプレの運用設計をそのまま持ち込まない前提が必要になります。</strong></p>
<p id="474543b0-d2f0-45d0-8d12-024ccc0f28b5">ここがポイントです。</p>
<h2 id="dfe8c07f-febf-4183-a222-ee1ce1866274" tabindex="-1"><span id="toc1">なぜRDSではオンプレと同じ運用ができないのか</span></h2>
<p id="52f6fcfc-5a04-4a40-add4-b24b50eb27cb">RDSは、AWSがOSとDB基盤の管理を代行するサービスです。</p>
<p id="d54f800b-6b41-49fa-ac15-ae7280ad853c">パッチ適用、バックアップ、フェイルオーバー、レプリケーション。これらをAWS側に任せられる一方で、ユーザーはOSやDBの深いレイヤーに直接触れることができません。</p>
<p id="994d7d31-87d4-4bc4-8ee3-f408977beda5">オンプレのOracle運用では、DBAがOSにログインしてリソースを確認し、カーネルパラメータを見直し、SYSDBA権限でDBの内部状態を操作することがあります。しかし、RDS for Oracleではその前提が根本から変わります。</p>
<p id="f1508f73-2f2e-4510-acf0-7ff874cd2dcb">これは単なる制限ではなく、<strong>マネージドサービスとしての設計上の選択</strong>です。ただし、事前に把握していないと、開発中に次々と壁にぶつかります。</p>
<p id="c7dfebf3-0cf3-4ef0-b3a7-758f9261cbd1">今回、開発中に見えてきたギャップを整理すると、大きく以下の領域に分かれます。</p>
<figure id="19c88944-4aec-48bb-9d80-22cc6b50bb53"><a href="https://assets.st-note.com/img/1781594776-CgkyVLjhDuq7EpbdM9W3f045.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85" aria-label="画像を拡大表示"><img fetchpriority="high" decoding="async" class="is-slide" src="https://assets.st-note.com/img/1781594776-CgkyVLjhDuq7EpbdM9W3f045.png?width=1200" alt="画像" width="620" height="439" data-modal="true" /></a><figcaption></figcaption></figure>
<p id="6939640e-587e-4e5c-8ef3-55fcc3e63b96">「オンプレの感覚と、RDSで必要になる考え方」</p>
<p id="1b976eef-5bcc-41ab-9f76-1439e506ac2c">上の図は、オンプレでの感覚と、RDSで必要になる考え方の違いを整理したものです。</p>
<p id="1815f8dc-3603-4bba-aca1-5200a6f57f17">ここからは、開発中に実際に表面化した設計ギャップを、具体的に見ていきます。</p>
<h2 id="cb69c14b-8c2c-4402-b9f2-9b43451eb83f" tabindex="-1"><span id="toc2">開発中に見えた設計ギャップ</span></h2>
<h3 id="50b4b0c9-f229-4003-896e-449cd9949922" tabindex="-1"><span id="toc3">① ストレージは「空き容量」だけを見ていると詰まる</span></h3>
<p id="2c1c6af1-7cdc-4b36-aaae-5ad909d1462f">この案件では、REDOログ・ファイルのサイズを大きく設定していたこともあり、空き容量が少なくなった局面で Storage-Full が発生しました。</p>
<p id="f0353b1f-c940-45ef-aaa6-ece98dd77717">Storage-Full になると、インスタンス操作やSQL*Plusでの接続にも影響し、通常の手順では復旧しづらい状態になります。</p>
<p id="21424a87-d9d8-4252-a489-fdbfcbf58889">ここで注意したいのは、<strong>「空き容量がまだ少し残っているから大丈夫」とは限らない</strong>点です。</p>
<p id="17d2b4d8-2dbd-4e4b-bd27-1f57e6996446">Storage-Full になると、インスタンス操作やSQL*Plusでの接続にも影響し、通常の手順では復旧しづらい状態になります。</p>
<p id="11112d0a-04f2-4661-be3a-90c75277b82c">オンプレであれば、OSにログインして一時的に領域を空ける逃げ道があります。しかし、RDS for OracleではOS上で直接ファイルを操作できません。容量が詰まってから「中に入って何とかする」ことはできず、ストレージ拡張など、RDSとして提供されている操作で対応する必要があります。</p>
<p id="ad2c3c5e-0d05-4f2a-a8e2-cacd7a74b6ff">そのため、REDOログやアーカイブログのサイズ、生成量、一時的な蓄積を含めてストレージ容量を設計する必要があります。REDOログのサイズを不用意に大きくすると、容量の小さい環境では問題が表面化しやすくなります。本番環境よりも開発環境で先に問題が出るパターンです。</p>
<h3 id="e7907eec-6098-46bc-bdbd-9a38a256ff15" tabindex="-1"><span id="toc4">② アーカイブログは「出した後」の挙動まで設計する</span></h3>
<p id="6ea9ac92-fb24-4be5-ba4a-cfab89144970">この案件では、アーカイブログが一度RDS側のストレージに出力され、その後S3へ転送される構成でした。ただし、S3へ転送されるまで、また転送後にRDS側から削除されるまでにはタイムラグがあります。アーカイブログは生成後すぐに容量影響がゼロになるわけではありません。</p>
<p id="a0f5e283-74ca-4cf2-849d-0847ff9c10df">退避先を用意していても、転送されるまでの間、削除されるまでの間はRDS側のストレージを使います。</p>
<p id="5f4365ae-2f00-4622-807a-bb78489dc796">生成量が多いタイミングでは、特に容量の小さい開発環境で、この一時的な蓄積によって Storage-Full になるケースがありました。</p>
<p id="dfb84e75-b3c1-40a8-86b1-94136ac982c7">アーカイブログは「出したら終わり」ではありません。RDSでは、<strong>出力、転送、削除まで含めて容量設計する</strong>必要があります。</p>
<h3 id="a56dd6c5-c5d7-4544-ad96-6a85f640ffb2" tabindex="-1"><span id="toc5">③ ストレージは増やせるが、必要な分を即座に増やせるわけではない</span></h3>
<p id="3d489901-b916-41de-9008-9c7c33d8d54c">ストレージを拡張する際、以下の2点に注意が必要です。</p>
<p id="ca1d5aa5-5d11-4639-bf5e-4360e75f5f86"><strong>拡張サイズは現在の割り当てから10%以上でないとエラーになる</strong><br />
小刻みな拡張はできません。10%未満の増量を指定するとエラーで拒否されます。開発環境のように小さい容量で構築していると、この制約が意外と効いてきます。</p>
<p id="cb4ef364-8b33-4710-9fc3-feda623956bd"><strong>ストレージ変更後、一定時間は再度の変更ができない</strong><br />
拡張後は `storage-optimization`（ストレージ最適化）ステータスになり、完了まで数時間から数十時間かかります。ストレージ最適化が完了するか、変更から6時間が経過するまでのいずれか長い方が経過するまで、次のストレージ変更はできません。</p>
<p id="15699ebb-d9a1-42fd-82b3-53a7aed0f313">使用量が急増するケースでは、連続した拡張ができないため、<strong>「足りなくなったら少しずつ増やせばよい」という考え方が通用しない</strong>場合があります。初期サイジングを余裕を持って設計することが重要です。</p>
<h3 id="c5cdb212-0ae0-4438-a986-a7cbeb357e1c" tabindex="-1"><span id="toc6">④ オンプレで当たり前だった管理操作が、別の手段に置き換わる</span></h3>
<p id="1e936cdd-873f-438b-9fcd-1667bcff23f8">RDS for Oracleでは、オンプレのように SYSDBA で接続してDB全体を自由に操作する前提ではありません。代わりに以下の2つが用意されています。</p>
<p id="a576b522-f4b7-4236-817a-48df05816dcc"><strong>RDSのマスターユーザー（master_user）</strong><br />
DBA権限を持ちますが、システム変更に関する一部操作が制限されます。オンプレと同じSQLをそのまま実行できない場合があります。</p>
<p id="f37d9439-ee7f-442d-9338-2da5a17d2853"><strong>RDSADMINユーザー</strong><br />
ユーザーが直接使用することはできません。ただし、AWSが用意したパッケージやプロシージャを経由することで、システム変更に関する操作が可能です。</p>
<p id="4477bd25-6834-4c9c-9729-7131d09ee257">たとえばログスイッチは、以下のように変わります。</p>
<div class="code-block-container">
<pre id="ef8672b2-6f5f-45d6-be80-a26dfa861cd0" data-name="preCode"><code class="hljs php" data-name="code">-- オンプレ
ALTER SYSTEM <span class="hljs-keyword">SWITCH</span> LOGFILE;

-- RDS <span class="hljs-keyword">for</span> Oracle
EXEC rdsadmin.rdsadmin_util.switch_logfile;
</code></pre>
<div class="a-button__inner" data-v-00506f85=""><span data-v-80ab2cbc=""><span class="visually-hidden" data-v-80ab2cbc="">copy</span><i class="a-icon a-icon--copy a-icon--size_small" aria-hidden="true" data-v-80ab2cbc=""></i></span></div>
</div>
<p id="73d66936-d51c-42d7-960e-a3d4619a1f1b">対応コマンドは少しずつ増えていますが、現時点でもカバーされていない操作があります。「いつものコマンドが通らない」という場面は、移行後に発生し得る前提で考えておくべきです。移行前に、オンプレで使っているコマンド・操作の棚卸しとRDS側の代替確認が必須です。</p>
<h3 id="2b44d47a-94b9-4125-90e7-902fd5427263" tabindex="-1"><span id="toc7">⑤ 障害時に必要なファイルを、OS上から直接集められない</span></h3>
<p id="54db997b-e920-48be-b8b0-43a06eec8eb8">RDSではOSへのSSHログインができないため、ファイルへのアクセスは「Amazon RDSプロシージャ」経由に限定されます。</p>
<p id="605ddd83-ec41-4df1-9599-5629c5262b1e">DATA_PUMP_DIR 配下のファイルなど、マネジメントコンソールからダウンロードできないファイルは、RDSプロシージャを使って一旦S3にアップロードしてからダウンロードする手順が必要です。</p>
<p id="7dc41305-579c-4baa-85bd-9f26565f04bc">特に注意が必要なのがADRディレクトリです。オンプレであれば、障害時にADR配下のファイルを確認してOracleサポートへ提供することがあります。しかし、RDS for Oracleでは**「サポートから言われたファイルをOS上で探してzip化する」というオンプレの感覚では動けません。**</p>
<p id="f18791a6-5a54-4c11-be52-f2697d64e272">RDS for Oracleでは rdsadmin.rdsadmin_adrci_util などを通じてADR関連の情報取得やインシデントパッケージ作成の手段が用意されていますが、オンプレのようにOSログインでファイルを直接収集できるわけではありません。</p>
<p id="4928d6f0-29ba-4fe6-89dd-4705b99be554">OracleサポートやAWSサポートに調査資料の提供を求められた場合、何をどの手順で提供できるかは事前に確認しておく必要があります。本番障害が起きてから手順を確立しようとしても遅いです。</p>
<h3 id="7b5e9360-fddc-44a6-9b16-0c2e3abd81e5" tabindex="-1"><span id="toc8">⑥ 監査ログや診断ファイルは、出力したまま放置すると障害要因になる</span></h3>
<p id="69414185-1bdb-49bf-9592-835dbe59ca65">オンプレでは、監査ログやトレースファイルをOS上に出力し、必要に応じて整理・退避する運用を組めます。しかし、RDSではOS上で直接ファイル操作ができません。</p>
<p id="8408122d-a03a-4ed1-9446-603c3f449708">この案件では、Oracleのログイン監査で監査証跡をファイルとして出力していたところ、RDS内部のファイル保持数の上限に引っかかり、ファイル書き込みエラーが発生しました。その結果、RDSにログインできなくなる障害につながりました。</p>
<p id="85801bfc-a66a-49ab-a837-8f4a48fc1a68">RDS内部のファイル保持数には上限がありますが、その上限値はAWSから公開されておらず、ユーザーが変更することもできません。上限値が非公開である以上、「どこまで出力できるか」を事前に把握することはできません。</p>
<p id="c3f3aba7-8698-4128-85d5-7b143f525380">監査ログ、トレースファイル、ダンプファイルなどをRDS内部に出し続ける設計にする場合は、定期的なクリーンアップ処理を必ず組み込んでください。監査ログはセキュリティ要件を満たすために必要ですが、出力設計を誤ると、監査ログ自体が障害要因になります。</p>
<h3 id="46f2e014-3c86-4209-b1c0-081d0dead1ea" tabindex="-1"><span id="toc9">⑦ DBのタイムゾーン設定だけでは、Schedulerジョブの時刻は保証できない</span></h3>
<p id="6b1c51c7-5f28-42a2-bec5-00cc473ca9cd">RDS for Oracleでは、オプショングループでタイムゾーンを設定できます。しかし、それだけでOracle Schedulerジョブのタイムゾーンまで意図通りになるとは限りません。</p>
<p id="95200075-81d8-4a66-a903-aa85451a5ae8">この案件では、RDSのオプショングループでタイムゾーンを設定していても、Oracle Schedulerジョブのタイムゾーンは Etc/UTC のままでした。</p>
<p id="2a814e1a-1875-422a-a51e-6e83a1bf5864">日本時間でスケジュール実行したいジョブがある場合、Oracle Scheduler側にも追加でタイムゾーン設定が必要になります。設定漏れがあると、ジョブが意図した時刻に動きません。これは開発中には見落とされやすく、本番稼働後に発覚すると影響が大きい問題です。</p>
<div class="code-block-container">
<pre id="298c4458-e511-4cc6-95b6-bc7bb6b803b9" data-name="preCode"><code class="hljs php" data-name="code">-- Oracle Schedulerのデフォルトタイムゾーンを変更する例
BEGIN
  DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE(
    attribute =&gt; <span class="hljs-string">'default_timezone'</span>,
    value     =&gt; <span class="hljs-string">'Asia/Tokyo'</span>
  );
END;
/
</code></pre>
<div class="a-button__inner" data-v-00506f85=""><span data-v-80ab2cbc=""><span class="visually-hidden" data-v-80ab2cbc="">copy</span><i class="a-icon a-icon--copy a-icon--size_small" aria-hidden="true" data-v-80ab2cbc=""></i></span></div>
</div>
<p id="81b9ee5f-d79b-48f1-863e-7eb1b02729c7">RDSのタイムゾーン設定と、Oracle Schedulerのタイムゾーン設定は、分けて確認する必要があります。</p>
<h3 id="efb58484-89dd-493f-bc87-9f7d40fc11e4" tabindex="-1"><span id="toc10">⑧ Multi-AZは、配置が変わる前提で性能と運用を設計する</span></h3>
<p id="54203edd-0043-4a74-99d8-6bdea40d042a">Multi-AZ構成では、プライマリが常に特定AZに固定され続ける前提では設計できません。障害時やメンテナンス時のフェイルオーバーにより、プライマリの配置先AZが変わる可能性があります。</p>
<p id="345b8a85-d15d-4a27-af1a-4f9d18b6deb9">この案件では、RDSとAPサーバーが異なるAZに配置された状態が発生し、AZ間のレイテンシによる処理遅延が問題になりました。一時対応として手動フェイルオーバーで配置を寄せた場面もありましたが、本来はAPサーバーとDBのAZ配置が変わり得る前提で、レイテンシ、接続先、リトライ、監視を設計しておくべきでした。</p>
<p id="58a5ddba-29da-48e1-8387-29fd650c3d00">RDSを選ぶ時点で、<strong>「常に特定AZに固定され続ける」という前提ではなく、フェイルオーバーやメンテナンスで配置が変わり得る前提に切り替える必要があります。</strong></p>
<h3 id="bdf754e4-a92b-4b73-862e-e197f795c8f4" tabindex="-1"><span id="toc11">⑨ 停止したRDSも、7日後には自動で起動する</span></h3>
<p id="47f2b55f-7c11-410a-acb7-3ab6965d4223">RDSは、停止したまま放置できるサービスではありません。</p>
<p id="d8cf613f-0a32-4148-86b4-54331ba1bac8">Amazon RDSのDBインスタンスは、一時停止しても7日後に自動で起動します。これは、メンテナンス適用から長期間取り残されないようにするための仕様です。</p>
<p id="b0f3a593-0d87-4b53-b411-52c18905c7eb">この仕様を知らないと、開発環境や検証環境で思わぬコストが発生します。</p>
<p id="43081c60-a1c6-41b6-a7ce-8c5dcb2bd962">たとえば、金曜夜に高スペックのRDSを停止したつもりでも、7日後に自動起動し、そのまま週末に誰も気づかず動き続けることがあります。停止中はインスタンス時間の課金は発生しませんが、ストレージやバックアップの課金は残ります。さらに、自動起動後は通常どおりインスタンス時間の課金も再開します。</p>
<p id="4c1db613-6076-4c90-bab3-14eb80530688">オンプレやEC2の感覚で「止めておけば安心」と考えると、RDSではコスト事故につながります。</p>
<p id="269c9b7f-721f-4c17-8754-21de537d00a4">長期間使わない環境であれば、単に停止するだけでなく、自動起動後に再停止する仕組みや、不要環境の削除、スナップショット退避なども含めて設計する必要があります。</p>
<p id="54ebed5c-a61e-40b8-96be-d4d8b3044039">RDSでは、起動・停止も運用設計の一部です。</p>
<h2 id="2d095d79-7081-452f-a23d-e345f3a4132b" tabindex="-1"><span id="toc12">代替アプローチ：RDSでの運用をどう設計するか</span></h2>
<p id="645f1640-d3e2-4a60-8265-8138c816653b">オンプレの「低レイヤーを直接触る」アプローチはできません。しかし、RDSには別の手段が用意されています。重要なのは、オンプレのやり方を無理に持ち込むことではなく、<strong>RDSで提供されている手段に合わせて、運用設計を組み替えること</strong>です。</p>
<h3 id="79685b54-9c80-4138-a10a-3cabcfb8b153" tabindex="-1"><span id="toc13">CloudWatch Database Insights / Performance Insights：AWR/ASHの代替として使う</span></h3>
<p id="26b99100-61f5-4939-94dc-7e1a60e165cf">オンプレのOracleでは、AWR（Automatic Workload Repository）やASH（Active Session History）でボトルネックを分析するのが定番でした。RDSでもEEライセンスのBYOL環境であればこれらは使えますが、SE2ライセンス込みモデルでは利用できません。</p>
<p id="de28a089-269b-4d63-9baf-b282664e8d60">この代替として使えるのが <strong>CloudWatch Database Insights / Performance Insights系の可視化機能</strong>です。どのSQLが、どの待機イベントで詰まっているかをダッシュボードで可視化でき、問題のあるSQLをその場で特定できます。</p>
<p id="2e93cf5d-44f2-4e05-a846-e59e6dcd35c0">以前はPerformance InsightsでボトルネックとなるSQLを特定した後、別途で実行計画の調査を実施する必要がありました。現在はCloudWatch Database Insights上でOracleの実行計画を直接確認できるようになっており、SQLの詳細情報と実行計画を同一画面で確認できます。インデックス作成前後など同一クエリの実行計画を並べて比較することも可能です。</p>
<p id="09900101-31ff-43ac-b1d4-cf5f4c8c74c8">ただし、利用できる機能や保持期間は、Database Insightsの設定モードや契約条件によって変わります。実行計画の確認まで運用で使う場合は、事前に対象インスタンスで有効化状態と利用可能な機能を確認しておくべきです。</p>
<h3 id="769a4fda-72c3-41a6-ab69-c1b27d63afdf" tabindex="-1"><span id="toc14">パラメータグループ：init.oraの代替として使う</span></h3>
<p id="7fe88217-6a02-4cf3-8535-2e549d73831e">オンプレでは init.ora や SPFILE で初期化パラメータを自由に変更できましたが、RDSでは <strong>DBパラメータグループ</strong> 経由で変更します。変更不可のパラメータが存在する点と、一部パラメータの変更にインスタンス再起動が必要な点はオンプレと異なります。変更可能なパラメータの範囲を事前に確認しておくことが重要です。</p>
<h3 id="63433fb8-6eab-4f89-93f9-8eb88424fbd6" tabindex="-1"><span id="toc15">拡張モニタリング：OSメトリクスの代替として使う</span></h3>
<p id="60cc4af1-105e-40c9-a91a-4a3832a9f1a4">SSHログインができないため top や iostat は叩けませんが、<strong>拡張モニタリング</strong> を有効にすることで、OSレベルのCPU・メモリ・I/Oの詳細メトリクスをCloudWatchで確認できます。1秒間隔まで設定できるため、瞬間的な負荷スパイクの把握も可能です。</p>
<h3 id="22722b22-9436-494b-8f12-f25c50680596" tabindex="-1"><span id="toc16">スケールアップ：チューニングより先に試す選択肢</span></h3>
<p id="a241de5c-9100-46bf-8c61-17b316c8db18">クラウドの最大の強みは、数クリックでインスタンスクラスを変えられることです。チューニングに数日かけるより、インスタンスタイプをひとつ上げてCPUとメモリを倍にする、あるいはプロビジョンドIOPSを追加する方が、時間とコストの観点から合理的なケースがあります。問題の切り分けとして「リソース不足なのか」「SQLや設計の問題なのか」を早く見極めるための選択肢として、スケールアップも検討に入れてください。</p>
<h3 id="3e2381d5-52c8-4e57-bf93-07cdf06355cd" tabindex="-1"><span id="toc17">SQLチューニング：最も重要な主戦場</span></h3>
<p id="f23e2393-77bb-4e9b-b7c8-9e8df8c0a634">インフラ側が触れない分、<strong>アプリケーション・SQLレイヤーでの最適化がオンプレ以上に重要</strong>になります。実行計画の確認（Explain Plan）、適切なインデックス設計、バインド変数の利用、統計情報の更新。これらはRDSでも変わらず有効で、かつ最も効果が出やすい領域です。</p>
<h2 id="13d1e263-5d16-4508-bf10-3f7364a7ce45" tabindex="-1"><span id="toc18">示唆：RDS採用時に設計へ織り込むべきこと</span></h2>
<p id="5ae9ec17-11f7-422f-a3e3-fe64fe576590">今回挙げたギャップの中には、ドキュメントを読めば事前に分かるものもあります。たとえば、SYSDBA前提の操作がそのまま使えないことや、RDS固有の管理手段を使う必要があることは、構築前の段階で把握できます。</p>
<p id="e05d2560-be9c-4f7e-9b09-96cca903a620">一方で、Storage-Full、アーカイブログの一時蓄積、監査ログ出力、Schedulerの時刻設定、停止後の自動起動のように、実際に開発・検証環境で動かして初めて影響が見えやすいものもあります。</p>
<p id="34ba1d96-e60e-4653-853d-cc46b577171a">重要なのは、「PoCで動いたか」だけを見るのではなく、RDSを採用する時点で、運用設計・監視設計・コスト管理にこれらの制約を織り込んでおくことです。</p>
<p id="6bde0729-c307-45be-afa9-5c8e1365b6a8"><strong>容量・ストレージ挙動</strong><br />
ログの一時蓄積、Storage-Fullの発生条件、ストレージ拡張の制約を設計時に確認する。開発環境のサイジングは本番より小さくなりがちなため、これらが先に表面化しやすい。</p>
<p id="be4ad7b8-12a3-46de-bf05-ac7f55204b2e"><strong>ファイル操作・監査設計</strong><br />
大量ファイルを出力する設計がある場合、保持数の上限（非公開）と退避方法を確認する。監査ログ、トレース、ダンプファイルは、クリーンアップ処理まで運用設計に組み込む。</p>
<p id="db59cc25-bff6-45bb-9b7e-5fee62940911"><strong>権限・管理操作</strong><br />
オンプレで使っているコマンド・権限がRDSで使えるかを一覧化し、代替手段まで確認する。「使えないことがわかった」で終わらず、「RDSではどう実現するか」まで詰めておく。</p>
<p id="955c11a0-70bc-4ebb-8b05-e934d08c17e9"><strong>スケジューラと時刻設定</strong><br />
Oracle Schedulerを使うジョブがあれば、タイムゾーン設定を移行前に確認する。本番稼働後に発覚すると影響が大きい。</p>
<p id="ee332213-e6d6-49cd-99d9-9f2fce61fecd"><strong>停止運用とコスト管理</strong><br />
開発・検証環境のRDSを長期停止する場合、7日後の自動起動を前提に再停止の仕組みや削除方針を決めておく。停止中も課金される項目（ストレージ、バックアップ）があることも把握しておく。</p>
<h2 id="d8445ddb-e8f7-471a-8de7-cc78dbf0810e" tabindex="-1"><span id="toc19">まとめ</span></h2>
<p id="8d1f725c-c1ac-43cc-ba61-a78a2a342028">今回のギャップを整理すると、こうなります。</p>
<p id="fa2d04fc-aa2e-42e4-9fce-603e6333239c">RDSはAWSがOS・DB基盤を管理するトレードオフとして、ユーザーは低レイヤーに触れることができません。SYSDBA操作、OSアクセス、物理ファイル操作、一部の初期化パラメータ。これらはオンプレでは当然使えていたものが、RDSでは使えないか、別の方法に置き換わっています。</p>
<p id="e85c9306-a140-4701-97e8-66c4405155b1">一方、CloudWatch Database Insights / Performance Insightsによる実行計画の可視化、拡張モニタリング、パラメータグループといった代替手段は年々充実しています。「以前はできなかった」ことが、アップデートで可能になっていくサービスでもあります。</p>
<p id="43874d10-97f9-48d9-82c1-cb34a9521552">重要なのは「RDSでできないことを嘆く」ことではなく、**「RDSで何ができて、何はできないのかを移行前に把握しておく」**ことです。</p>
<p id="7b417c1a-c5a2-4777-ae93-32a45b7ae4d9">「起動した」「接続できた」「SQLが流れた」だけでは、RDS for Oracleを業務で使える確認にはなりません。障害時に調査できるか、容量が逼迫したときに復旧できるか、監査ログが障害要因にならないか、停止したつもりのRDSが自動起動していないか。そこまで確認して初めて「運用できる」と言えます。</p>
<p id="46be5b42-551f-41c5-9f7d-b13f7c6b123a">ただし、これはRDSが不便だという話ではありません。OSやDB基盤の管理をAWSに任せることで、パッチ適用、バックアップ、フェイルオーバー、監視連携といった運用負荷を下げられるのがRDSの価値です。</p>
<p id="2ccccaa3-41b6-4e35-a444-9d718b98a0b2">その価値を活かすためには、オンプレと同じ操作権限を求めるのではなく、RDSで提供される仕組みに合わせて運用を再設計する必要があります。</p>
<p id="02fa6571-fa86-4b50-a39c-aa07d6eb2143">オンプレの運用手法をそのまま持ち込むのではなく、RDSを選ぶ時点で、運用とチューニングのアプローチを切り替える。これが、RDS for Oracleを業務で使ううえで重要な前提になります。</p>
<p id="c575f7b1-4ca7-4267-9d55-9b2c87c07574"><strong>参考リンク</strong></p>
<ul id="fa7d4865-d16b-4318-9e71-5b3c5287c8f9">
<li>
<p id="995977d3-7c17-4071-aa75-b992eecbf4e5"><a rel="nofollow noopener" href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.ModifyingExisting.ScalingUp.html" target="_blank">Amazon RDS DBインスタンスのストレージ拡張</a></p>
</li>
<li>
<p id="aa1f68de-fc12-4f8e-8253-47121320f56e"><a rel="nofollow noopener" href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html" target="_blank">RDS for Oracleの一般的なDBAタスク</a></p>
</li>
<li>
<p id="d05a663b-ff8e-4234-a271-ae8acd9e6e9f"><a rel="nofollow noopener" href="https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/oracle-s3-integration.using.html" target="_blank">RDS for OracleとS3のファイル転送</a></p>
</li>
<li>
<p id="41882983-1b3c-438c-af41-fdc453d617c4"><a rel="nofollow noopener" href="https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.Timezone.html" target="_blank">RDS for Oracleのタイムゾーン設定</a></p>
</li>
<li>
<p id="6579f31e-6506-49ca-8841-40e74c9f124c"><a rel="nofollow noopener" href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_StopInstance.html" target="_blank">RDS DBインスタンスの一時停止と7日後の自動起動</a></p>
</li>
</ul>
<p style="font-size: 13px; color: #888; margin-top: 24px;">関連記事</p>
<p style="font-size: 14px; line-height: 1.8;">今回の話は、RDS for Oracle固有の制約というより、クラウドリフトPoCで見落としやすい設計リスクの一例です。PoCで何を確認すべきかは、以下のシリーズでも整理しています。</p>
<p style="font-size: 14px; line-height: 1.8;"><a href="https://sys-univ.com/dev/cloudlift-poc-risk-1/">【第2部・前編】クラウドリフトPoCで「動いた」は確認できた。しかし業務では使えなかった｜10の設計リスク①</a></p>
<div style="border: 1px solid #e0e0e0; border-left: 3px solid #1D9E75; border-radius: 8px; padding: 20px 24px; margin: 24px 0; background: #fff;">
<p style="font-size: 13px; color: #888; margin: 0 0 6px;">体系的に読みたい方はこちら</p>
<p style="font-size: 16px; font-weight: bold; color: #333; margin: 0 0 12px;">実務で使えるシステム開発方法論（マガジン）</p>
<p><a style="display: inline-block; background: #1D9E75; color: #fff; font-size: 14px; font-weight: bold; padding: 10px 20px; border-radius: 6px; text-decoration: none;" href="https://note.com/k_s7906/m/mc19593a012e2">マガジンを見る →</a></p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/aws/rdsforora/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【前編】システム監視の基本｜ping・エージェント・SNMP監視を整理する</title>
		<link>https://sys-univ.com/tec/monitor/</link>
					<comments>https://sys-univ.com/tec/monitor/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Tue, 18 Oct 2022 09:56:28 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=1252</guid>

					<description><![CDATA[この記事は、システム監視の基本を前編・後編に分けて解説するシリーズの前編です。 後編では、クラウド監視とFit &#38; Gap、運用で使える監視設計について整理しています。 システム開発や基盤設計に関わっていると、「 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">この記事は、システム監視の基本を前編・後編に分けて解説するシリーズの前編です。<br />
<a href="https://sys-univ.com/dev/monitoring-cloud-fit-gap/">後編</a>では、クラウド監視とFit &amp; Gap、運用で使える監視設計について整理しています。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph">システム開発や基盤設計に関わっていると、「監視」という言葉は必ず出てきます。</p>


<p class="wp-block-paragraph">「サーバは生きています。 `ping` は通っています」</p>


<p class="wp-block-paragraph">そう報告した10分後に、業務が止まった。</p>


<p class="wp-block-paragraph">原因は、Webサーバのプロセス停止だった。</p>


<p class="wp-block-paragraph">サーバ自体にはネットワーク的に到達できていたため、 `ping` 監視では異常を検知できなかった。</p>


<p class="wp-block-paragraph">答えは単純です。 `ping` <strong>が通ることと、システムが業務として使える状態であることは、まったく別の話だから</strong>です。</p>


<p class="wp-block-paragraph">死活監視。リソース監視。ログ監視。プロセス監視。ジョブ監視。URL監視。SNMP監視。</p>


<p class="wp-block-paragraph">言葉としては聞いたことがあっても、実際に「監視の仕組み」を説明しようとすると、意外と難しいものです。</p>


<p class="wp-block-paragraph">若手SEの中には、監視を「サーバが落ちたらアラートが出る仕組み」「CPUやメモリが高くなったら通知する仕組み」「ログにエラーが出たらメールが飛ぶ仕組み」と理解している人もいます。</p>


<p class="wp-block-paragraph">もちろん、間違いではありません。</p>


<p class="wp-block-paragraph">ただし、それだけでは監視設計はできません。</p>


<p class="wp-block-paragraph">監視では、何を監視するのか、どこから監視するのか、どの方式で監視するのか、どの条件で異常と判断するのか、誰に通知するのか、通知を受けた人が何を確認するのかまで決める必要があります。</p>


<p class="wp-block-paragraph">監視とは、単にアラートを出す仕組みではありません。</p>


<p class="wp-block-paragraph">システムの異常や異常予兆を、運用で対応できる形で検知する仕組みです。</p>


<p class="wp-block-paragraph">前編では、監視サーバー、監視対象サーバー、死活監視、エージェント監視、エージェントレス監視、SNMP監視、MIB/OIDの基本を整理します。</p>


<p class="wp-block-paragraph">監視を「設定」ではなく「運用で使える仕組み」として理解するために、まずは基本構造から見ていきます。</p>


<h2 class="wp-block-heading"><span id="toc1">システム監視とは何か</span></h2>


<p class="wp-block-paragraph">監視をしていなければ、障害が起きても運用側は気づけません。</p>


<p class="wp-block-paragraph">利用者から「画面が開かない」と問い合わせが来て、初めて障害を認識する。これは運用の失敗です。</p>


<p class="wp-block-paragraph">システムが正常に稼働しているか。障害の予兆がないか。それを運用で対応できる形で検知する仕組みです。</p>


<p class="wp-block-paragraph">システム監視の目的は、大きく2つあります。</p>


<ul id="9ab67f89-05a4-4ba7-8787-68937562185b" class="wp-block-list">
	<li>システムが正常に稼働しているかを確認する</li>


	<li>システムに障害予兆となる兆候がないかを確認する</li>
</ul>


<p class="wp-block-paragraph">業務システムでは、障害そのものを完全にゼロにすることはできません。</p>


<p class="wp-block-paragraph">だからこそ、障害が発生したときに早く気づく。<br />
影響範囲を把握する。<br />
一次対応につなげる。<br />
必要に応じてエスカレーションする。</p>


<p class="wp-block-paragraph">そのために監視があります。</p>


<h2 class="wp-block-heading"><span id="toc2">監視には「監視する側」と「監視される側」がある</span></h2>


<p class="wp-block-paragraph">まず押さえるべき基本は、監視には「監視する側」と「監視される側」があるということです。</p>


<p class="wp-block-paragraph">一般的なオンプレミスや仮想基盤の監視構成では、次のような役割があります。</p>


<ul id="7b9660f1-f90d-4efa-a7d3-b5c5ea173fef" class="wp-block-list">
	<li>監視サーバー</li>


	<li>監視マネージャー</li>


	<li>監視対象サーバー</li>


	<li>監視エージェント</li>


	<li>運用端末</li>


	<li>通知先</li>
</ul>


<p class="wp-block-paragraph">監視サーバー、または監視マネージャーは、監視する側です。</p>


<p class="wp-block-paragraph">監視対象サーバーは、監視される側です。</p>


<p class="wp-block-paragraph">Webサーバ、APサーバ、DBサーバ、ジョブ管理サーバ、ストレージ、ネットワーク機器などが該当します。</p>


<p class="wp-block-paragraph">監視サーバーは、監視対象に対して定期的に確認を行います。</p>


<p class="wp-block-paragraph">たとえば、Web/APサーバとの通信状況、DBサーバのCPU負荷、共有ストレージのディスク容量、ログの異常メッセージなどを収集し、異常があれば運用者や管理者へ通知します。</p>


<figure id="3d474914-d411-49d9-aab4-f7f35f63a6e5" class="wp-block-image"><a href="https://assets.st-note.com/img/1779864633-8jFXUzkivH3N6WQYcmx2IurB.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779864633-8jFXUzkivH3N6WQYcmx2IurB.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">図：監視サーバーと監視対象サーバー・機器の関係</figcaption>
</figure>


<p class="wp-block-paragraph">ここで重要なのは、監視は「何となく全体を見ている」のではないということです。</p>


<p class="wp-block-paragraph">監視対象ごとに、何を、どの方式で、どの周期で、どの閾値で、どの通知先へ送るかを細かく決めています。</p>


<p class="wp-block-paragraph"><strong>前編では、まず代表的な監視方式として、死活監視、エージェント監視、エージェントレス監視、SNMP監視を整理します。</strong></p>


<figure id="03bb1cc0-8c9b-4d90-8a50-22fe45e6eff4" class="wp-block-image"><a href="https://assets.st-note.com/img/1779897647-hTx0ODvJqKzkj8aLl1XVZF5E.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779897647-hTx0ODvJqKzkj8aLl1XVZF5E.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">これらは、どれか1つだけを選ぶものではありません。</p>


<p class="wp-block-paragraph">実際のシステムでは、複数の方式を組み合わせます。</p>


<p class="wp-block-paragraph">たとえば、次のような組み合わせです。</p>


<ul id="305fb14a-ebee-43fd-bd2b-511063e4f5f6" class="wp-block-list">
	<li>ネットワーク疎通は死活監視</li>


	<li>OS内部のCPU、メモリ、ディスクはエージェント監視</li>


	<li>ネットワーク機器やストレージはSNMP監視</li>


	<li>Webサービスの応答はURL監視</li>


	<li>クラウドリソースはCloudWatchやOCI Monitoring</li>


	<li>アプリケーションログはログ監視</li>


	<li>バッチ処理はジョブ監視</li>
</ul>


<p class="wp-block-paragraph">つまり、監視方式は「どれが正解か」ではありません。</p>


<p class="wp-block-paragraph">そのシステムで何を知りたいのか。<br />
どこまで異常を検知したいのか。<br />
どのタイミングで誰が対応するのか。</p>


<p class="wp-block-paragraph">これに応じて選びます。</p>


<h2 class="wp-block-heading"><span id="toc3">死活監視とは何か</span></h2>


<p class="wp-block-paragraph">死活監視とは、監視対象が生きているかどうかを確認する監視です。</p>


<p class="wp-block-paragraph">代表的には、監視サーバーから監視対象サーバーへ `ping` を実行し、応答があるかを確認します。</p>


<p class="wp-block-paragraph">システム開発では、死活監視というと、まず `ping` による疎通確認をイメージすることが多いです。</p>


<p class="wp-block-paragraph">`ping` は、監視サーバーから監視対象のIPアドレスへ到達できるか、相手が応答を返すかを確認するためによく使われます。</p>


<p class="wp-block-paragraph">ここで注意が必要です。</p>


<p class="wp-block-paragraph">`ping` が通ることは、システムが正常に動いていることを意味しません。</p>


<p class="wp-block-paragraph">少しネットワークの階層で見ると、`ping` で確認しているのは、ざっくり言えばネットワーク層レベルの到達性です。</p>


<p class="wp-block-paragraph"><strong>つまり、監視サーバーから監視対象のIPアドレスへ届き、相手が応答している、ということを確認しているに過ぎません。</strong></p>


<p class="wp-block-paragraph">その上で動いているWebサーバ、APサーバ、DB、ジョブ、業務アプリケーションまで正常であることを確認しているわけではありません。</p>


<p class="wp-block-paragraph">たとえば、次のような状態でも `ping` は通ることがあります。</p>


<ul id="7884b479-7556-44e5-8906-c7c4cd28ac5e" class="wp-block-list">
	<li>Webサーバプロセスが停止している</li>


	<li>APサーバのスレッドが枯渇している</li>


	<li>DBリスナーが停止している</li>


	<li>DB表領域が枯渇している</li>


	<li>業務APが内部エラーを返している</li>


	<li>ログイン画面は開くが検索処理が失敗する</li>


	<li>バッチジョブが異常終了している</li>


	<li>ディスク使用率が100%に近い</li>


	<li>メモリ不足で処理が極端に遅い</li>
</ul>


<figure id="81e8024c-56e0-4719-9e3e-cd337d10e037" class="wp-block-image"><a href="https://assets.st-note.com/img/1779867087-uK3yV49B0gN67l2mEXGnPsWt.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779867087-uK3yV49B0gN67l2mEXGnPsWt.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">図：`ping` で分かる範囲</figcaption>
</figure>


<p class="wp-block-paragraph">つまり、死活監視は重要ですが、それだけでは不十分です。</p>


<p class="wp-block-paragraph">`ping` による死活監視で分かるのは、「ネットワーク的に到達できるか」「機器やOSが応答しているか」という入口の状態です。</p>


<p class="wp-block-paragraph">一方で、業務として使える状態かどうかを確認するには、ポート監視、プロセス監視、URL監視、ログ監視、DB接続監視、ジョブ監視など、より上位の状態を見る監視が必要になります。</p>


<p class="wp-block-paragraph">なお、死活監視は `ping` だけとは限りません。</p>


<p class="wp-block-paragraph">SNMPを使って機器の稼働状態を確認する場合もあります。ネットワーク機器やストレージ、UPSなどでは、SNMPでインターフェース状態、電源状態、ファン、温度、装置状態などを取得したり、SNMP Trapで機器側から異常通知を受けたりします。</p>


<h2 class="wp-block-heading"><span id="toc4">エージェント監視とは何か</span></h2>


<p class="wp-block-paragraph">エージェント監視とは、監視対象サーバーに監視用ソフトウェアを導入し、そのエージェントがサーバ内部の状態を収集する方式です。</p>


<p class="wp-block-paragraph">監視対象サーバーの中に入って、CPU、メモリ、ディスク、プロセス、ログ、サービス状態などを確認するイメージです。</p>


<figure id="79cd6ccd-cbb9-4852-9385-9e13e5eaad60" class="wp-block-image"><a href="https://assets.st-note.com/img/1779867540-23SOQ7sP068aNKFiUfCtwj9h.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779867540-23SOQ7sP068aNKFiUfCtwj9h.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">図：エージェント監視のイメージ</figcaption>
</figure>


<p class="wp-block-paragraph">たとえば、次のような情報は、エージェントを入れた方が取得しやすくなります。</p>


<ul id="0c384743-a9f6-4b0a-8bbf-2acde8ca3319" class="wp-block-list">
	<li>CPU使用率</li>


	<li>メモリ使用率</li>


	<li>ディスク使用率</li>


	<li>ディスクI/O</li>


	<li>特定プロセスの起動状態</li>


	<li>特定サービスの状態</li>


	<li>OSログの特定メッセージ</li>


	<li>ミドルウェアログのエラー</li>


	<li>アプリケーションログの異常</li>


	<li>ファイル数やファイルサイズ</li>


	<li>独自スクリプトの実行結果</li>
</ul>


<p class="wp-block-paragraph">商用監視製品であれば、JP1、Systemwalker、Hinemosなどが代表例です。</p>


<p class="wp-block-paragraph">エージェント監視のメリットは、監視対象サーバーの内部情報を細かく取得できることです。</p>


<p class="wp-block-paragraph">たとえば、単にDBサーバに `ping` が通るかだけでなく、DBプロセスが起動しているか、DB関連ログにエラーが出ていないか、CPUやメモリが逼迫していないか、といった情報を取得できます。</p>


<p class="wp-block-paragraph">一方で、デメリットもあります。</p>


<p class="wp-block-paragraph">エージェントをインストールする必要があります。<br />
監視対象サーバーのリソースを使います。<br />
バージョン管理が必要です。<br />
OS更改やパッチ適用時に影響確認が必要です。<br />
エージェント自体が停止すると監視できません。<br />
セキュリティ上、導入や通信許可の調整が必要です。</p>


<p class="wp-block-paragraph">そのため、エージェント監視を使う場合は、「何を監視したいからエージェントが必要なのか」を明確にします。</p>


<p class="wp-block-paragraph">一方、エージェント監視のデメリットを見ると、「エージェントを入れずに済む方法はないか」という発想が生まれます。それがエージェントレス監視です。</p>


<h2 class="wp-block-heading"><span id="toc5">エージェントレス監視とは何か</span></h2>


<p class="wp-block-paragraph">エージェントレス監視とは、監視対象サーバーに監視用エージェントを導入せず、監視サーバー側からリモートで状態を確認する方式です。たとえば、サーバに到達できるかを確認するだけなら `ping` で確認できます。</p>


<p class="wp-block-paragraph"><strong>プロセス起動確認とWebサービス応答確認は違う</strong></p>


<p class="wp-block-paragraph">Webシステムでは、Apacheの `httpd` やTomcatのプロセスが起動していることを確認して、Web/APサーバが正常だと判断してしまうケースがあります。</p>


<p class="wp-block-paragraph">しかし、プロセスが起動していることと、Webサービスが正常に応答していることは別です。</p>


<p class="wp-block-paragraph">`httpd` が起動していても、アプリケーションのデプロイに失敗しているかもしれません。Tomcatが起動していても、DB接続でエラーになっているかもしれません。ロードバランサやリバースプロキシの経路が誤っていて、利用者から見ると画面に到達できないこともあります。</p>


<p class="wp-block-paragraph">そのため、Webサービスの正常性を確認するには、HTTP/HTTPSで対象URLへアクセスし、HTTPステータスコードやレスポンス内容を確認することがあります。</p>


<p class="wp-block-paragraph">たとえば、監視サーバーから `/healthcheck` や `/login` などのURLへHTTP GETリクエストを送り、HTTPステータスコードが `200` で返るか、レスポンス本文に想定した文字列が含まれるか、応答時間が閾値内かを確認します。</p>


<p class="wp-block-paragraph">この考え方は、現在でもWebサービスの正常性確認として一般的に使われます。</p>


<figure id="745a92ff-b41d-4285-b989-df5012617e4d" class="wp-block-image"><a href="https://assets.st-note.com/img/1779869601-Sz6LB0dpbAsxoPiXDWuqOfnI.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779869601-Sz6LB0dpbAsxoPiXDWuqOfnI.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">図：Webサービスの正常性確認のイメージ</figcaption>
</figure>


<p class="wp-block-paragraph">ただし、最近のシステムでは、確認の粒度を分けることが増えています。</p>


<p class="wp-block-paragraph">ロードバランサでは、配下のサーバへHTTP/HTTPSのヘルスチェックを行い、正常なターゲットだけにリクエストを振り分けます。</p>


<p class="wp-block-paragraph">コンテナやKubernetes環境では、コンテナが生きているか、リクエストを受け付けられる状態か、起動完了しているかを分けて確認します。</p>


<p class="wp-block-paragraph">また、より利用者目線で確認したい場合は、単一URLのGET確認だけでなく、外形監視やSynthetic Monitoringを使い、ログイン、検索、API呼び出しなど、実際の利用者操作に近いシナリオを定期実行することもあります。</p>


<p class="wp-block-paragraph">つまり、`/healthcheck` や `/login` のHTTP応答確認は今でも有効です。</p>


<p class="wp-block-paragraph">ただし、それだけで十分かは、システムの特性によります。</p>


<p class="wp-block-paragraph">重要なのは、`httpd` やTomcatのプロセス起動確認だけで「Webサービスが正常」と判断しないことです。</p>


<p class="wp-block-paragraph">Webサービスが業務として使えるかを確認するには、少なくともHTTP/HTTPSで実際にアクセスし、期待した応答が返ることを確認する必要があります。</p>


<p class="wp-block-paragraph">ネットワーク機器やストレージの状態を確認する場合は、SNMPで情報を取得できることもあります。クラウドサービスであれば、APIやクラウド側のメトリクスから状態を取得できる場合もあります。</p>


<p class="wp-block-paragraph">つまり、監視対象の内部にエージェントを入れなくても、監視サーバー側からリモートで確認できる内容であれば、エージェントレス監視を選択できます。</p>


<p class="wp-block-paragraph">一方で、OSログの詳細確認、独自スクリプトの実行結果、アプリケーションログの細かな異常検知、サーバ内部の詳細なメトリクス取得などは、エージェントを入れた方が扱いやすい場合があります。</p>


<p class="wp-block-paragraph">そのため、エージェントレス監視は「エージェントを入れなくて済むから楽」というだけではありません。</p>


<p class="wp-block-paragraph">監視したい内容が外部から取得できるのか。<br />
取得に必要な認証や権限をどう管理するのか。<br />
通信経路やファイアウォール設定はどうするのか。<br />
取得できる情報の粒度で運用判断できるのか。</p>


<p class="wp-block-paragraph">ここまで考えたうえで、エージェント監視にするのか、エージェントレス監視にするのかを決めます。</p>


<p class="wp-block-paragraph">代表的には、次のような方式があります。</p>


<ul id="19f65089-d6bf-49dc-af23-e33701e51e8a" class="wp-block-list">
	<li>ping</li>


	<li>TCPポート監視</li>


	<li>HTTP/HTTPS監視</li>


	<li>SNMP監視</li>


	<li>SSH経由のコマンド実行</li>


	<li>Windows WMIによる情報取得</li>


	<li>APIによる状態取得</li>


	<li>クラウドサービスのメトリクス取得</li>
</ul>


<p class="wp-block-paragraph">エージェントレス監視のメリットは、監視対象サーバーにソフトウェアを導入しなくてもよいことです。</p>


<p class="wp-block-paragraph">サーバ台数が多い場合、エージェント導入やバージョン管理の負荷を抑えられます。</p>


<p class="wp-block-paragraph">また、ネットワーク機器、ストレージ、アプライアンス製品、クラウドサービス、マネージドサービスでは、そもそもエージェントを入れられないこともあります。</p>


<p class="wp-block-paragraph">その場合は、SNMP、API、クラウドメトリクスなどを利用して監視します。</p>


<p class="wp-block-paragraph">ただし、エージェントレス監視には制約があります。</p>


<p class="wp-block-paragraph">外側から見える状態は分かるが、OS内部やアプリケーション内部の詳細までは見えないことがあります。<br />
ログファイルの中身までは見にくいことがあります。<br />
独自スクリプトの実行や詳細なメトリクス取得に制約が出ることがあります。<br />
監視サーバーやネットワーク経路に障害があると、監視できないことがあります。</p>


<p class="wp-block-paragraph">つまり、エージェントレス監視は「エージェントが不要だから簡単」という話ではありません。</p>


<p class="wp-block-paragraph">エージェントを入れない代わりに、監視サーバー側の接続方式、認証、通信経路、権限、取得できるメトリクスの範囲を設計する必要があります。</p>


<h2 class="wp-block-heading"><span id="toc6">SNMP監視とは何か</span></h2>


<p class="wp-block-paragraph">オンプレミスの監視やネットワーク機器監視でよく出てくるのが、SNMPです。</p>


<p class="wp-block-paragraph">SNMPは、Simple Network Management Protocolの略です。</p>


<p class="wp-block-paragraph">ネットワーク機器、サーバ、ストレージ、UPS、アプライアンスなどの状態を監視・管理するために使われるプロトコルです。SNMPの管理情報を扱うMIBについては、RFC 3418でもSNMPエンティティの動作を説明する管理オブジェクトとして定義されています。(<a rel="noopener" href="https://datatracker.ietf.org/doc/html/rfc3418?utm_source=chatgpt.com" target="_blank">IETF Datatracker</a>)</p>


<p class="wp-block-paragraph">SNMP監視では、一般的に次のような役割があります。</p>


<ul id="0deaf5dd-8f46-4e15-97c5-f688f2b2e994" class="wp-block-list">
	<li>SNMPマネージャー</li>


	<li>SNMPエージェント</li>


	<li>MIB</li>


	<li>OID</li>


	<li>SNMP Get</li>


	<li>SNMP Trap</li>
</ul>


<figure id="0011e75c-9e38-4623-bd1b-39a229524bca" class="wp-block-image"><a href="https://assets.st-note.com/img/1779870234-LcWArTznZi5odl42ERh9Bjwm.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779870234-LcWArTznZi5odl42ERh9Bjwm.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">図：SNMP監視のイメージ</figcaption>
</figure>


<p class="wp-block-paragraph">SNMPマネージャーは、監視する側です。</p>


<p class="wp-block-paragraph">SNMPエージェントは、監視される機器側で動作し、機器の状態情報を持っています。</p>


<p class="wp-block-paragraph">SNMP Getは、マネージャーがエージェントに対して「この情報を教えて」と問い合わせる方式です。</p>


<p class="wp-block-paragraph">SNMP Trapは、機器側からマネージャーへ「異常が起きた」と通知する方式です。</p>


<p class="wp-block-paragraph">たとえば、ネットワーク機器でインターフェースがDownした場合、機器側からSNMP Trapが飛ぶことがあります。</p>


<p class="wp-block-paragraph">監視サーバーはそのTrapを受け取り、アラートとして運用者へ通知します。</p>


<h2 class="wp-block-heading"><span id="toc7">SNMP監視でつまずきやすいOIDとMIB</span></h2>


<p class="wp-block-paragraph">SNMPの説明では、OIDやMIBという言葉が当たり前のように出てきます。</p>


<p class="wp-block-paragraph">しかし、これを正しく理解していないと、</p>


<p class="wp-block-paragraph">「MIBファイルを監視製品に読み込ませれば、監視できるんですよね」</p>


<p class="wp-block-paragraph">という誤解につながります。</p>


<p class="wp-block-paragraph">これは危険です。</p>


<p class="wp-block-paragraph">まず、OIDから整理します。</p>


<p class="wp-block-paragraph">OIDは、Object Identifierの略です。</p>


<p class="wp-block-paragraph">一言でいえば、監視対象機器の中にある<strong>データの住所</strong>です。</p>


<p class="wp-block-paragraph">ネットワーク機器やサーバは、人間が話すように「CPU使用率を教えてください」と理解してくれるわけではありません。</p>


<p class="wp-block-paragraph">SNMPでは、監視マネージャーが、監視対象機器に対して、</p>


<p class="wp-block-paragraph">「この番号の情報をください」</p>


<p class="wp-block-paragraph">と問い合わせます。</p>


<p class="wp-block-paragraph">たとえば、あるネットワーク機器のCPU使用率を表すOIDが、次のような番号だったとします。</p>


<pre class="wp-block-code"><code>1.3.6.1.4.1.9.9.109.1.1.1.1.5</code></pre>


<p class="wp-block-paragraph">copy</p>


<p class="wp-block-paragraph">監視マネージャーは、このOIDを指定して、監視対象機器に問い合わせます。</p>


<p class="wp-block-paragraph">すると、機器側のSNMPエージェントは、</p>


<pre class="wp-block-code"><code>80</code></pre>


<p class="wp-block-paragraph">copy</p>


<p class="wp-block-paragraph">のように値を返します。</p>


<p class="wp-block-paragraph">この場合、人間から見ると「CPU使用率が80%」という意味です。</p>


<p class="wp-block-paragraph">しかし、機器や監視マネージャーのやり取りとしては、基本的には「どのOIDの値を取るか」という話になります。</p>


<p class="wp-block-paragraph">つまり、OIDは、監視対象機器の中にある監視項目の住所です。</p>


<p class="wp-block-paragraph">次にMIBです。</p>


<p class="wp-block-paragraph">MIBは、Management Information Baseの略です。</p>


<p class="wp-block-paragraph">一言でいえば、<strong>OIDという数字の住所と、人間が理解できる意味を対応づける辞書</strong>です。</p>


<figure id="0f702ce6-df03-45e0-84a6-af46607db64e" class="wp-block-image"><a href="https://assets.st-note.com/img/1779871713-k9XwrUd2tsmnZzRebYSNLOEl.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779871713-k9XwrUd2tsmnZzRebYSNLOEl.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">図：MIBとOIDを使った監視のイメージ</figcaption>
</figure>


<p class="wp-block-paragraph">人間が、毎回、</p>


<pre class="wp-block-code"><code>1.3.6.1.4.1.9.9.109.1.1.1.1.5</code></pre>


<p class="wp-block-paragraph">copy</p>


<p class="wp-block-paragraph">という数字を見ても、それが何を意味するのかは分かりません。</p>


<p class="wp-block-paragraph">そこで、ベンダーが提供するMIBファイルを使います。</p>


<p class="wp-block-paragraph">MIBには、たとえば次のような対応関係が定義されています。</p>


<pre class="wp-block-code"><code>1.3.6.1.4.1.9.9.109.1.1.1.1.5
=
CPUの5分平均使用率</code></pre>


<p class="wp-block-paragraph">copy</p>


<p class="wp-block-paragraph">実際には、製品ごとの正式な項目名や階層構造で定義されていますが、考え方としてはこのようなものです。</p>


<p class="wp-block-paragraph">つまり、OIDは「住所」です。<br />
MIBは「住所録」または「辞書」です。</p>


<p class="wp-block-paragraph">OIDが分かれば、監視マネージャーは対象機器から値を取得できます。<br />
MIBがあれば、そのOIDが何を意味するのかを人間が理解しやすくなります。</p>


<p class="wp-block-paragraph">ここまでは、SNMP監視の基本です。</p>


<p class="wp-block-paragraph">ただし、実務で本当に重要なのはここからです。</p>


<p class="wp-block-paragraph"><strong>MIBを登録しただけでは監視設計は終わらない</strong></p>


<p class="wp-block-paragraph">MIBファイルを監視製品に読み込ませると、製品固有のOIDやTrapの意味を解釈できるようになります。</p>


<p class="wp-block-paragraph">しかし、それだけでは監視設計は終わりません。</p>


<p class="wp-block-paragraph">MIBは、あくまで辞書です。</p>


<p class="wp-block-paragraph">辞書を入れただけでは、</p>


<ul id="6054cf22-62b5-4bed-9acd-3bfb6b4e9daa" class="wp-block-list">
	<li>どのOIDを監視するのか</li>


	<li>どの値を警告とするのか</li>


	<li>どの値を異常とするのか</li>


	<li>どのTrapを通知対象にするのか</li>


	<li>どのTrapは通知しないのか</li>


	<li>何分継続したら異常にするのか</li>


	<li>誰に通知するのか</li>


	<li>通知を受けた人が何を確認するのか</li>
</ul>


<p class="wp-block-paragraph">は決まりません。</p>


<p class="wp-block-paragraph">ここを決めるのが監視設計です。</p>


<p class="wp-block-paragraph">たとえば、CPU使用率のOIDを監視するとします。</p>


<p class="wp-block-paragraph">CPU使用率が80%になったら、必ず異常でしょうか。</p>


<p class="wp-block-paragraph">そうとは限りません。</p>


<p class="wp-block-paragraph">夜間バッチの時間帯だけ一時的にCPUが上がるシステムもあります。<br />
バックアップ処理中だけCPUやI/Oが上がることもあります。<br />
短時間のスパイクであれば、業務影響がない場合もあります。<br />
一方で、CPU使用率が70%程度でも、長時間継続すれば性能劣化の予兆かもしれません。</p>


<p class="wp-block-paragraph">つまり、単に「CPU使用率のOIDを監視する」だけでは不十分です。</p>


<p class="wp-block-paragraph">次のように、運用で判断できる条件まで落とす必要があります。</p>


<pre class="wp-block-code"><code>CPU使用率が90%以上
かつ
5分以上継続した場合は警告

CPU使用率が95%以上
かつ
10分以上継続した場合は異常

ただし、夜間バッチ時間帯は別閾値とする</code></pre>


<p class="wp-block-paragraph">copy</p>


<p class="wp-block-paragraph">もちろん、これは例です。</p>


<p class="wp-block-paragraph">実際の閾値は、システムの特性、性能要件、通常時の負荷、ピーク時間帯、バッチ処理、運用体制に応じて決めます。</p>


<p class="wp-block-paragraph"><strong>MIBを入れただけで監視を始めると何が起きるか</strong></p>


<p class="wp-block-paragraph">よくない進め方は、ベンダーのMIBファイルを監視サーバーに登録し、デフォルト設定に近い形で対象機器の監視を一斉に始めてしまうことです。</p>


<p class="wp-block-paragraph">この場合、運用開始後にアラートが大量に出ることがあります。</p>


<p class="wp-block-paragraph">いわゆる、アラートの大洪水です。</p>


<p class="wp-block-paragraph">なぜそうなるのか。</p>


<p class="wp-block-paragraph">主な理由は3つあります。</p>


<p class="wp-block-paragraph">1つ目は、<strong>通知すべきイベントと、通知しなくてよいイベントを分けていない</strong>ことです。</p>


<p class="wp-block-paragraph">機器や製品は、さまざまなTrapや状態変化を出します。</p>


<p class="wp-block-paragraph">その中には、本当に即時対応が必要な障害もあります。</p>


<p class="wp-block-paragraph">一方で、単なる情報通知、状態変化、復旧通知、一時的な警告、運用上は無視してよいメッセージもあります。</p>


<p class="wp-block-paragraph">これらをすべて同じように通知すると、運用者は大量のアラートを受けることになります。</p>


<p class="wp-block-paragraph">2つ目は、<strong>閾値や継続時間をシステム特性に合わせていない</strong>ことです。</p>


<p class="wp-block-paragraph">CPU、メモリ、ディスクI/O、ネットワーク使用率などは、システムによって通常値が違います。</p>


<p class="wp-block-paragraph">業務ピーク時にCPUが高くなるシステムもあります。<br />
夜間バッチ中にI/Oが急増するシステムもあります。<br />
月次処理の日だけ負荷が上がるシステムもあります。</p>


<p class="wp-block-paragraph">それを考慮せず、一般的な閾値だけで監視すると、正常な業務処理まで異常として検知してしまいます。</p>


<p class="wp-block-paragraph">3つ目は、<strong>テスト工程で実際のログやアラートを精査していない</strong>ことです。</p>


<p class="wp-block-paragraph">監視条件は、設計時点の机上検討だけでは決めきれません。</p>


<p class="wp-block-paragraph">特に、ログ監視やTrap監視は、実際にシステムを動かしてみないと、どのメッセージがどれくらい出るのか分からないことがあります。</p>


<p class="wp-block-paragraph">システムテスト、運用テスト、本番リハーサルで、業務データ、日次処理、月次処理、ピーク時のトランザクション、バックアップ、ジョブ、外部連携などを動かして初めて、大量のログやイベントが出てきます。</p>


<p class="wp-block-paragraph">その中から、</p>


<ul id="17fc5f4a-a5db-4403-8071-0f27f566e94c" class="wp-block-list">
	<li>本当に通知すべきもの</li>


	<li>通知は不要だが記録しておくもの</li>


	<li>除外してよいもの</li>


	<li>閾値や継続時間を見直すべきもの</li>


	<li>一次対応手順に落とすべきもの</li>
</ul>


<p class="wp-block-paragraph">を精査する必要があります。</p>


<p class="wp-block-paragraph">これをやらずに本番稼働すると、運用開始後に大量のアラートが出ます。</p>


<p class="wp-block-paragraph">すると、運用者はアラートを見切れなくなります。</p>


<p class="wp-block-paragraph">最悪なのは、本当に重要な障害が、不要なアラートの中に埋もれてしまうことです。</p>


<p class="wp-block-paragraph">監視は、アラートをたくさん出せばよいわけではありません。</p>


<p class="wp-block-paragraph">運用者が判断できる形で、必要な異常を検知することが重要です。</p>


<h2 class="wp-block-heading"><span id="toc8">SNMP監視も詳細設計の対象である</span></h2>


<p class="wp-block-paragraph">ここまで見ると分かるように、SNMP監視は単にMIBを登録する作業ではありません。</p>


<p class="wp-block-paragraph">MIBを登録する。<br />
OIDを選ぶ。<br />
Trapを受ける。<br />
閾値を決める。<br />
重大度を決める。<br />
通知先を決める。<br />
除外条件を決める。<br />
テスト工程で実際の発報状況を確認する。<br />
運用手順と対応づける。<br />
<br />
ここまで含めて、SNMP監視も詳細設計の中で決めるべき重要な領域です。</p>


<h2 class="wp-block-heading"><span id="toc9">前編のまとめ｜監視の基本構造を押さえる</span></h2>


<p class="wp-block-paragraph"><strong>監視には「監視する側」と「監視される側」がある<br />
</strong>監視サーバーが監視対象であるWeb/AP/DBサーバ、ネットワーク機器などに対して、定期的に状態を確認する構造が基本です。</p>


<p class="wp-block-paragraph"><strong>`ping` が通ることと、システムが業務として使えることは別である<br />
</strong>死活監視は、あくまでネットワーク的な到達性の確認です。プロセス、DB、アプリケーションまで正常かどうかは、別の監視で確認する必要があります。</p>


<p class="wp-block-paragraph"><strong>監視方式は、監視したい内容に応じて組み合わせる<br />
</strong>死活監視、エージェント監視、エージェントレス監視、SNMP監視は、どれか一つを選ぶものではありません。監視したい内容に応じて組み合わせます。</p>


<p class="wp-block-paragraph"><strong>MIBを登録しただけでは監視設計は終わらない</strong><br />
OIDの選定、閾値、継続時間、通知先、除外条件まで決めて初めて、運用で使える監視になります。</p>


<p class="wp-block-paragraph"><strong>アラートは多ければよいわけではない</strong><br />
閾値やシステム特性を考慮せず監視を始めると、アラートの大洪水が起きます。テスト工程で実際の発報内容を精査することが必要です。</p>


<p class="wp-block-paragraph">監視は、製品を入れて設定するだけの作業ではありません。<br />
監視対象、監視方式、閾値、検知条件、除外条件、重大度、通知先、一次対応手順まで決める設計作業です。</p>


<p class="wp-block-paragraph">後編では、クラウド監視に進みます。</p>


<p class="wp-block-paragraph">AWS CloudWatchやOCI Monitoringを使えば、自前の監視サーバーが不要になることもあります。</p>


<p class="wp-block-paragraph">ただし、<strong>「クラウド監視サービスを使えば、監視設計が楽になる」は半分正解で半分誤解</strong>です。</p>


<p class="wp-block-paragraph">クラウドでも、何を監視するか。どの値を異常とするか。誰に通知するか。一次対応をどうするか。これらは自分たちで決める必要があります。</p>


<p class="wp-block-paragraph">むしろ、オンプレと違い「気づかないうちにコストが膨らむ」という、クラウド固有のリスクも監視の対象になります。</p>


<p class="wp-block-paragraph"><a href="https://sys-univ.com/dev/monitoring-cloud-fit-gap/">後編</a>では、AWS CloudWatchやOCI Monitoringなどのクラウド監視、オンプレミスからクラウド移行時の監視Fit &amp; Gap、監視設計で決めるべき項目を整理しています。</p>
<p style="font-size: 13px; color: #888; margin-top: 24px;">あわせて読みたい</p>
<p style="font-size: 14px; line-height: 1.8;"><a href="https://sys-univ.com/dev/functional-nonfunctional-requirements/">機能要件と非機能要件の違い</a><br />
<a href="https://sys-univ.com/dev/system-dev-overview/">システム開発の流れを現場目線で理解する｜前編</a><br />
<a href="https://sys-univ.com/dev/requirements-definition/">要件定義の正体</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/tec/monitor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【前編】詳細設計で決めること｜基本設計を「構築・テスト・運用できる形」に落とし込む工程</title>
		<link>https://sys-univ.com/dev/detailed-design-overview/</link>
					<comments>https://sys-univ.com/dev/detailed-design-overview/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Sat, 20 Jun 2026 06:17:15 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2635</guid>

					<description><![CDATA[※この記事は「詳細設計で決めること」3部作の前編です。後編①・後編②はnote（有料）で公開しています。 はじめに 基本設計では、要件をシステム構成、処理方式、運用方式に落とし込みます。 では、詳細設計では何をするのでし [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">※この記事は「詳細設計で決めること」3部作の前編です。後編①・後編②はnote（有料）で公開しています。</p>
<p><strong>はじめに</strong></p>



<p class="wp-block-paragraph">基本設計では、要件をシステム構成、処理方式、運用方式に落とし込みます。</p>


<p class="wp-block-paragraph">では、詳細設計では何をするのでしょうか。</p>


<p class="wp-block-paragraph">詳細設計と聞くと、サーバのパラメータを決める、ミドルウェアの設定値を書く、クラウドサービスの設定項目を埋める、といったイメージを持つ人もいるかもしれません。</p>


<p class="wp-block-paragraph">もちろん、それらは詳細設計の重要な要素です。</p>


<p class="wp-block-paragraph">しかし、詳細設計は、単にパラメータ表を埋める工程ではありません。</p>


<p class="wp-block-paragraph">基本設計で決めた方式を、実際に構築・設定・テスト・運用できる粒度まで落とし込む工程です。</p>


<p class="wp-block-paragraph">たとえば、基本設計で「ログを1か月保持する」と決めたなら、詳細設計では、どのログファイルを対象にするのか、どのディレクトリに出力するのか、どの周期でローテーションするのか、圧縮するのか、何世代残すのか、バックアップ対象に含めるのか、容量監視をどうするのかまで具体化します。</p>


<p class="wp-block-paragraph">基本設計で「7時までに業務を開局する」と決めたなら、詳細設計では、その運用要件をジョブ、スクリプト、監視、起動停止、開局前チェックに落とします。</p>


<p class="wp-block-paragraph">どのジョブを何時に起動するのか。<br />
どのスクリプトを実行するのか。<br />
どの戻り値を正常とするのか。<br />
終了遅延をどう検知するのか。<br />
開局前チェックで何を確認するのか。<br />
どの監視を再開するのか。</p>


<p class="wp-block-paragraph">これは一見すると運用設計の話に見えます。</p>


<p class="wp-block-paragraph">しかし、<strong>詳細設計では、この運用要件を実際の製品設定、ジョブ定義、スクリプト仕様、監視設定、手順書の粒度に落とします。</strong>ここで落とし込みが甘いと、運用試験や本番移行前に手戻りが発生します。</p>


<p class="wp-block-paragraph">つまり、詳細設計とは、基本設計で決めた方針を、OS、ミドルウェア、DB、ジョブ、監視、バックアップ、クラウドサービス、運用スクリプト、手順、試験観点へ展開する工程です。</p>


<p class="wp-block-paragraph">構築担当者が設定値を判断しなければならない。<br />
テスト担当者が期待値を確認できない。<br />
運用スクリプトが作られていない。<br />
ジョブは定義されているが、異常時の分岐が分からない。<br />
監視項目はあるが、閾値や通知先が決まっていない。<br />
バックアップは設定されているが、リストア手順がない。</p>


<p class="wp-block-paragraph">こうした問題は、詳細設計の時点で「構築できる粒度」「テストできる粒度」「運用できる粒度」まで落とし込めていないことから起きます。</p>


<p class="wp-block-paragraph">この記事では、基盤SEの目線で、詳細設計で何を具体化するのかを整理します。</p>


<h2 class="wp-block-heading"><span id="toc1">この記事で持ってほしい問い</span></h2>


<p class="wp-block-paragraph">詳細設計書を見るときは、設定値そのものだけを追ってはいけません。</p>


<p class="wp-block-paragraph">ここで挙げる問いは、記事全体を通して持ってほしい視点です。<br />
各章の末尾では、その領域ごとの確認観点を3つに絞って整理します。</p>


<p class="wp-block-paragraph">この記事では、次の問いを持ちながら読んでください。</p>


<ul id="32e7ccd3-58ff-4edc-8aea-8a0f187493cc" class="wp-block-list">
	<li>この設定値は、基本設計のどの方針を受けているのか</li>


	<li>なぜこの値でよいと言えるのか</li>


	<li>構築担当者が、この設計書を見て同じ設定を再現できるか</li>


	<li>テスト担当者が、期待値を判断できるか</li>


	<li>運用担当者が、障害時に使える設計になっているか</li>


	<li>監視、ログ、バックアップ、ジョブ、スクリプト、手順書とつながっているか</li>


	<li>この設計で品質を確保できると説明できるか</li>
</ul>


<p class="wp-block-paragraph">詳細設計は、設定値を埋める作業ではありません。</p>


<p class="wp-block-paragraph">基本設計で決めた方式を、構築、テスト、運用、保守に接続し、「なぜこの設計でよいのか」を説明できる状態にする工程です。</p>


<p class="wp-block-paragraph">この問いを持って読むと、詳細設計書の見え方が変わります。</p>


<h2 class="wp-block-heading"><span id="toc2">詳細設計は基本設計の続きである</span></h2>


<p class="wp-block-paragraph">詳細設計は、基本設計と切り離された工程ではありません。</p>


<p class="wp-block-paragraph">基本設計で決めた内容を、実際に構築・設定できるレベルに落とし込むのが詳細設計です。</p>


<p class="wp-block-paragraph">基本設計では、たとえば次のようなことを決めます。</p>


<ul id="9f39a30f-e887-4d15-a1e8-6bba27dda93a" class="wp-block-list">
	<li>システム構成</li>


	<li>処理方式</li>


	<li>サーバ構成</li>


	<li>ネットワーク構成</li>


	<li>DB構成</li>


	<li>ストレージ方式</li>


	<li>ジョブ・バッチ方式</li>


	<li>監視方式</li>


	<li>ログ方式</li>


	<li>バックアップ・リストア方式</li>


	<li>セキュリティ方式</li>


	<li>運用方式</li>
</ul>


<p class="wp-block-paragraph">一方、詳細設計では、それらをより具体的な設定、パラメータ、ファイル、ジョブ、スクリプト、手順、テスト可能な期待値に落としていきます。</p>


<p class="wp-block-paragraph">たとえば、基本設計で「Web/AP/DBの3層構成」と決めたなら、詳細設計では、各サーバのホスト名、IPアドレス、OS設定、導入ミドルウェア、待ち受けポート、接続先、タイムアウト、ログ出力先、起動停止順序を決めます。</p>


<p class="wp-block-paragraph">基本設計で「監視する」と決めたなら、詳細設計では、監視対象、監視方式、監視間隔、閾値、検知条件、通知先、抑止条件、一次対応手順まで落とします。</p>


<p class="wp-block-paragraph">基本設計で「バックアップを取得する」と決めたなら、詳細設計では、対象ファイル、対象DB、取得コマンド、実行ジョブ、取得時刻、世代数、保管先、削除条件、リストア手順、戻し先、確認方法まで落とします。</p>


<p class="wp-block-paragraph">詳細設計は、基本設計で決めたことを「誰が見ても同じ構成で作れる状態」にするための工程です。</p>


<p class="wp-block-paragraph">詳細設計を、構築担当者向けの設定メモにしてはいけません。</p>


<p class="wp-block-paragraph">詳細設計書は、構築担当者だけのためにあるわけではありません。テスト担当者、運用担当者、レビュー担当者、障害対応者、後続保守担当者も参照します。</p>


<p class="wp-block-paragraph">そのため、詳細設計では、単に設定値を書くのではなく、なぜその設定にしているのか、基本設計のどの方針を受けているのか、どのテストで確認するのか、運用上どの手順や監視とつながるのかを意識します。</p>


<h2 class="wp-block-heading"><span id="toc3">詳細設計とパラメータ設計・環境定義</span></h2>


<p class="wp-block-paragraph">開発標準によっては、詳細設計、パラメータ設計、環境定義を分けて整理することがあります。</p>


<p class="wp-block-paragraph">考え方としては、次のように整理できます。</p>


<p class="wp-block-paragraph">詳細設計は、基本設計で決めた方式を、製品・ミドルウェア・クラウドサービスの設定や構築単位に落とし込む工程です。</p>


<p class="wp-block-paragraph">パラメータ設計は、その中でも、OS、ミドルウェア、DB、ジョブ管理製品、監視製品、バックアップ製品、クラウドサービスなどの設定値を具体化する作業です。</p>


<p class="wp-block-paragraph">環境定義は、実際に構築される環境ごとの設定値を一覧化する成果物です。</p>


<p class="wp-block-paragraph">ただし、実務上は、詳細設計とパラメータ設計、環境定義を一体的に進めることも多くあります。特に基盤領域では、製品ごとの詳細設計書と、環境ごとのパラメータ一覧を合わせて管理することが一般的です。</p>


<p class="wp-block-paragraph">ここで押さえるべきなのは、<strong>すべての製品パラメータを案件ごとにゼロから検証するわけではない、ということ</strong>です。</p>


<p class="wp-block-paragraph">OS、Web/APサーバ、DB、ジョブ管理、監視、バックアップ製品、クラウドサービスには、膨大な設定項目があります。これらをすべて個別に妥当性検証することは、現実的ではありません。</p>


<p class="wp-block-paragraph">そのため、多くのプロジェクトでは、過去案件で実績のある標準構成や製品デフォルト値をベースにし、基本設計で定めた処理方式、性能要件、運用要件、セキュリティ要件に影響するパラメータを重点的に設計します。</p>


<p class="wp-block-paragraph">「デフォルトだから見なくてよい」ではありません。</p>


<p class="wp-block-paragraph">案件固有の要件に影響するパラメータを洗い出し、変更する項目については設定値と根拠を示します。</p>


<p class="wp-block-paragraph">一方、変更しない項目についても、環境定義として値を明示しておくことで、構築後の確認、障害時の調査、後続保守で参照できる状態にしておきます。</p>


<p class="wp-block-paragraph">詳細設計とは、全パラメータを網羅的に説明する工程ではありません。基本設計で決めた方式と、実際の製品設定・環境定義をつなぐ工程です。</p>


<h2 class="wp-block-heading"><span id="toc4">詳細設計は品質保証ストーリーの一部である</span></h2>


<p class="wp-block-paragraph">詳細設計は、構築担当者のための設定表ではありません。</p>


<p class="wp-block-paragraph">基本設計で決めた方式を、構築・テスト・運用へつなげることで、「なぜこの設計で品質を確保できると判断したのか」を説明する材料になります。</p>


<p class="wp-block-paragraph">特に大規模プロジェクトでは、設計値やパラメータ値に対して、根拠を求められることがあります。</p>


<p class="wp-block-paragraph">なぜこの値なのか。<br />
なぜデフォルト値でよいのか。<br />
なぜこの監視項目で足りるのか。<br />
なぜこの試験で確認できたと言えるのか。<br />
なぜこの構成で性能要件を満たすと判断したのか。</p>


<p class="wp-block-paragraph">このとき、詳細設計書に設定値だけが並んでいても説明できません。</p>


<p class="wp-block-paragraph">必要なのは、次の接続です。</p>


<ul id="39bb756f-5806-4ba7-90eb-bd16074ea7dd" class="wp-block-list">
	<li>基本設計で定めた方式</li>


	<li>非機能要件</li>


	<li>製品仕様</li>


	<li>標準構成・過去実績</li>


	<li>設定値の根拠</li>


	<li>テスト観点</li>


	<li>監視・運用での確認方法</li>
</ul>


<p class="wp-block-paragraph">一方で、すべての製品パラメータやすべての操作パターンを案件ごとに完全検証することはできません。</p>


<p class="wp-block-paragraph">製品内部の制御仕様、バージョン差分、特定条件でのみ発生する挙動まで、設計段階で完全に予見することは現実的ではありません。</p>


<p class="wp-block-paragraph">たとえば、通常利用では問題が出ないものの、特定の処理タイミング、特定の負荷条件、特定の運用操作が重なった場合だけ、製品内部の制御仕様によって処理遅延やエラーが発生することがあります。</p>


<p class="wp-block-paragraph">こうした事象は、要件や設計から自然に導けるものではなく、製品仕様、バージョン差分、既知不具合、過去事例に依存します。マニュアルやベンダー情報に明示されていなければ、設計段階で完全に予見することは困難です。</p>


<p class="wp-block-paragraph">だからこそ、詳細設計では、次の項目を重点的に設計します。</p>


<ul id="de11d93f-e406-478b-9714-1d7b75358ff6" class="wp-block-list">
	<li>基本設計で決めた処理方式に影響する項目</li>


	<li>性能・可用性・運用・セキュリティに影響する項目</li>


	<li>案件固有要件により変更する項目</li>


	<li>過去実績や標準構成で注意点が分かっている項目</li>
</ul>


<p class="wp-block-paragraph">変更する項目には、設定値と根拠を残します。</p>


<p class="wp-block-paragraph">変更しない項目については、製品デフォルト値または標準構成を採用し、環境定義として管理します。これは、すべてのデフォルト値を個別に検証したという意味ではありません。構築後の確認、障害時の調査、保守引継ぎのために、実際の設定状態を参照できるようにするためです。</p>


<p class="wp-block-paragraph">テストも同じです。</p>


<p class="wp-block-paragraph">テストは、見えない全パターンを無限に洗い出すものではありません。要件定義、基本設計、詳細設計で決めた内容に対して、Vモデルに沿って確認観点を展開するものです。</p>


<p class="wp-block-paragraph">詳細設計で目指すべきなのは、トラブルゼロを保証することではありません。</p>


<p class="wp-block-paragraph">要件と設計に基づいて、どこを重点的に設計し、どこを標準値として採用し、どこを試験で確認し、どこを運用監視で検知するのかを説明できる状態にすることです。</p>


<p class="wp-block-paragraph">これが、詳細設計における品質保証ストーリーです。</p>


<h2 class="wp-block-heading"><span id="toc5">詳細設計で見るべきなのは「設定値」ではなく「接続性」である</span></h2>


<p class="wp-block-paragraph">詳細設計というと、どうしても設定値に目が行きます。</p>


<p class="wp-block-paragraph">OSのパラメータ。<br />
ApacheやTomcatの設定。<br />
DBの初期化パラメータ。<br />
ジョブ管理製品のジョブ定義。<br />
監視製品の閾値。<br />
クラウドサービスの設定項目。</p>


<p class="wp-block-paragraph">もちろん、これらは大事です。</p>


<p class="wp-block-paragraph">しかし、詳細設計で見るべきなのは、設定値そのものだけではありません。</p>


<p class="wp-block-paragraph">基本設計、構築、テスト、運用がつながっているかです。</p>


<p class="wp-block-paragraph">たとえば、ログ設計であれば、以下がつながっている必要があります。</p>


<ul id="7a1d5e0c-cdca-4deb-93ab-52af06482cf2" class="wp-block-list">
	<li>基本設計：ログを1か月保持する</li>


	<li>詳細設計：logrotate設定、退避先、圧縮有無、世代数</li>


	<li>構築：設定ファイルの配置、権限設定、反映</li>


	<li>テスト：ログローテーション確認、容量監視確認</li>


	<li>運用：ログ確認手順、障害調査手順、バックアップ対象</li>
</ul>


<p class="wp-block-paragraph">このつながりがないと、詳細設計書は単なる設定一覧になります。</p>


<p class="wp-block-paragraph">一見すると設計書は埋まっているのに、後工程で漏れます。</p>


<p class="wp-block-paragraph">ログ保持期間は決まっているが、ローテーション設定がない。<br />
ログ出力先は決まっているが、容量監視がない。<br />
バックアップ対象に含まれていない。<br />
障害時にどのログを見るのか手順書に書かれていない。</p>


<p class="wp-block-paragraph">こうした漏れは、詳細設計の段階で「設定値を決めること」だけを目的にしていると起きます。</p>


<p class="wp-block-paragraph">詳細設計で見るべきなのは、設定値が正しいかだけではありません。</p>


<p class="wp-block-paragraph">その設定が、基本設計の方針とつながっているか。<br />
構築手順に落ちるか。<br />
テストで確認できるか。<br />
運用手順や監視とつながるか。<br />
障害時に使えるか。</p>


<p class="wp-block-paragraph">ここまで見て初めて、詳細設計として成立します。</p>


<h2 class="wp-block-heading"><span id="toc6">詳細設計は製品・ミドルウェア単位で分かれやすい</span></h2>


<p class="wp-block-paragraph">基本設計では、処理方式や運用方式の単位で設計することが多くあります。</p>


<p class="wp-block-paragraph">一方、詳細設計では、製品・ミドルウェア・クラウドサービス単位で設計書が分かれることが多くなります。</p>


<p class="wp-block-paragraph">たとえば、次のような詳細設計書です。</p>


<ul id="20bfa6c2-64a6-4731-90cd-ab2b3b5fb308" class="wp-block-list">
	<li>OS詳細設計書</li>


	<li>Webサーバ詳細設計書</li>


	<li>APサーバ詳細設計書</li>


	<li>DB詳細設計書</li>


	<li>ジョブ詳細設計書</li>


	<li>バックアップ詳細設計書</li>


	<li>監視詳細設計書</li>


	<li>ログ詳細設計書</li>


	<li>ストレージ詳細設計書</li>


	<li>ネットワーク詳細設計書</li>


	<li>セキュリティ詳細設計書</li>


	<li>運用スクリプト設計書</li>


	<li>クラウドサービス詳細設計書</li>
</ul>


<p class="wp-block-paragraph">これは、詳細設計が実際の構築対象に近づくからです。</p>


<p class="wp-block-paragraph">構築担当者は、OSを設定し、Webサーバを設定し、APサーバを設定し、DBを設定し、ジョブ管理製品にジョブを登録し、監視製品に監視項目を設定します。</p>


<p class="wp-block-paragraph">そのため、詳細設計も自然と製品・ミドルウェア・クラウドサービス単位になります。</p>


<p class="wp-block-paragraph">ただし、ここで注意が必要です。</p>


<p class="wp-block-paragraph">製品単位で詳細設計書を分けると、設計対象を管理しやすくなる一方で、処理方式としてのつながりが見えにくくなることがあります。</p>


<p class="wp-block-paragraph">たとえば、バックアップ方式は、DB詳細設計、ストレージ詳細設計、ジョブ詳細設計、監視詳細設計、運用スクリプト設計にまたがります。</p>


<p class="wp-block-paragraph">ログ方式は、OS詳細設計、ミドルウェア詳細設計、監視詳細設計、バックアップ詳細設計にまたがります。</p>


<p class="wp-block-paragraph">ジョブ方式は、ジョブ管理製品の詳細設計だけでなく、実行スクリプト、ログ出力、異常終了時の通知、運用手順、運転スケジュールにまたがります。</p>


<p class="wp-block-paragraph">つまり、詳細設計では、製品単位で分けることと、処理方式として横断的につなぐことの両方が必要です。</p>


<p class="wp-block-paragraph">ここを意識しないと、各詳細設計書は存在するのに、全体としてつながっていない状態になります。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph">ここまで、詳細設計の考え方を整理してきました。</p>


<p class="wp-block-paragraph">ここから先は、基盤SEが実際に詳細設計で具体化する領域を、OS、Web/AP、DB、ジョブ、監視、ログ、バックアップ、セキュリティ、運用スクリプトに分けて見ていきます。</p>


<p class="wp-block-paragraph">特に、<strong>ジョブ管理規約とスクリプトの戻り値設計、正常系だけで終わらせない単体試験、特権IDや本番作業統制の考え方は、現場でトラブルを起こしやすいポイント</strong>です。</p>


<p class="wp-block-paragraph">詳細設計を「設定表作成」で終わらせず、構築・テスト・運用で使える成果物にするための具体論を整理します。</p>


<p class="wp-block-paragraph">この先、後編①ではOS・Web/AP・DB・ジョブを、後編②では監視・ログ・バックアップ・セキュリティ・運用スクリプトを扱います。</p>


<p class="wp-block-paragraph">&#8211; OS詳細設計で見るべき観点<br />
&#8211; Web/APサーバ詳細設計で性能・運用とつなげる考え方<br />
&#8211; DB詳細設計で性能・バックアップ・セキュリティをどう見るか<br />
&#8211; ジョブ詳細設計で事故りやすい戻り値設計<br />
&#8211; ジョブ管理規約とスクリプトのコーディング規約をそろえる理由<br />
&#8211; 監視・ログ・バックアップ設計で後工程に漏れを出さない見方<br />
&#8211; セキュリティ詳細設計を技術設定だけで終わらせない考え方<br />
&#8211; 運用スクリプトの設計・試験で見落としやすいポイント<br />
&#8211; 詳細設計でやってはいけないこと</p>


<h2 class="wp-block-heading"><span id="toc7">「前編まとめ｜詳細設計の本質」</span></h2>


<p class="wp-block-paragraph">前編では、詳細設計を単なるパラメータ表ではなく、基本設計で決めた方式を構築・テスト・運用・保守へ接続する工程として整理しました。</p>


<p class="wp-block-paragraph">設定値を埋めることではなく、基本設計、構築、テスト、運用がつながっているかを見ること。トラブルゼロを保証することではなく、どこを重点設計し、どこを試験で確認し、どこを運用監視で検知するかを説明できる状態にすること。</p>


<p class="wp-block-paragraph">これが詳細設計の本質です。</p>


<p class="wp-block-paragraph">その本質を踏まえて、詳細設計でやってはいけないことを4つ整理します。</p>


<p class="wp-block-paragraph"><strong>基本設計とのつながりを見ない<br />
</strong>詳細設計は、基本設計で決めた方式を具体化する工程です。基本設計との対応が見えない詳細設計は、ただの設定メモになります。</p>


<p class="wp-block-paragraph"><strong>製品パラメータを埋めるだけで終わる<br />
</strong>詳細設計では設定値を決めますが、それだけでは不十分です。構築、テスト、運用、障害対応までつながる粒度で設計します。</p>


<p class="wp-block-paragraph"><strong>設定値の理由を書かない<br />
</strong>なぜその値にしたのかが分からないと、レビューも保守もできません。推奨値なのか、性能要件から決めたのか、製品制約なのか、運用要件なのかを残します。</p>


<p class="wp-block-paragraph"><strong>全パラメータを保証したつもりになる<br />
</strong>詳細設計は、すべての製品パラメータやすべての組み合わせ挙動を案件ごとに完全検証する工程ではありません。要件・方式・リスクに影響する項目を重点的に設計し、標準構成やデフォルト値に依拠する範囲を明確にします。</p>


<p class="wp-block-paragraph">領域ごとの具体的な注意点は、後編①・②で整理します。</p>


<p class="wp-block-paragraph">後編①ではOS・Web/AP・DB・ジョブを、後編②では監視・ログ・バックアップ・セキュリティ・運用スクリプトを扱います。</p>


<p class="wp-block-paragraph">扱う論点の多くは、「知っているか、知らないか」で後工程の品質が大きく変わるものです。設計書の体裁は整っているのに、システムテストや本番移行前に手戻りが発生する。その原因の多くは、詳細設計のこの段階で見落とされています。</p>
<div style="margin: 8px 0;"><a style="display: block; border: 1px solid #1D9E75; border-radius: 6px; padding: 12px 16px; text-decoration: none; color: #333; background: #f9fffc;" href="https://note.com/k_s7906/n/nf951f05b0822"> <span style="font-size: 12px; color: #1d9e75;">note</span><br />
<span style="font-size: 14px; font-weight: bold;">【後編①】詳細設計で決めること｜OS・Web/AP・DB・ジョブ編</span> </a></div>
<div style="margin: 8px 0;"><a style="display: block; border: 1px solid #1D9E75; border-radius: 6px; padding: 12px 16px; text-decoration: none; color: #333; background: #f9fffc;" href="https://note.com/k_s7906/n/n4f9e92eefd75"> <span style="font-size: 12px; color: #1d9e75;">note</span><br />
<span style="font-size: 14px; font-weight: bold;">【後編②】詳細設計で決めること｜監視・ログ・バックアップ・セキュリティ・運用スクリプト編</span> </a></div>
<div style="border: 1px solid #e0e0e0; border-left: 3px solid #1D9E75; border-radius: 8px; padding: 20px 24px; margin: 24px 0; background: #fff;">
<p style="font-size: 13px; color: #888; margin: 0 0 6px;">体系的に読みたい方はこちら</p>
<p style="font-size: 16px; font-weight: bold; color: #333; margin: 0 0 12px;">実務で使えるシステム開発方法論（マガジン）</p>
<a style="display: inline-block; background: #1D9E75; color: #fff; font-size: 14px; font-weight: bold; padding: 10px 20px; border-radius: 6px; text-decoration: none;" href="https://note.com/k_s7906/m/mc19593a012e2">マガジンを見る →</a></div>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/detailed-design-overview/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【後編】システム監視の基本｜クラウド監視と「運用で使える監視設計」</title>
		<link>https://sys-univ.com/tec/monitoring-cloud-fit-gap/</link>
					<comments>https://sys-univ.com/tec/monitoring-cloud-fit-gap/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Sat, 20 Jun 2026 14:32:46 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2671</guid>

					<description><![CDATA[※この記事は「システム監視の基本」前編・後編シリーズの後編です。 前編はこちら 監視には、監視する側である監視サーバーや監視マネージャーがあり、監視される側である Webサーバ、APサーバ、DBサーバ、ストレージ、ネット [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">※この記事は「システム監視の基本」前編・後編シリーズの後編です。<br />
前編は<a href="https://sys-univ.com/dev/monitor/">こちら</a></p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph">監視には、監視する側である監視サーバーや監視マネージャーがあり、監視される側である</p>


<p class="wp-block-paragraph">Webサーバ、APサーバ、DBサーバ、ストレージ、ネットワーク機器があります。<br />
<br />
また、死活監視、エージェント監視、エージェントレス監視、SNMP監視といった方式があり、監視したい内容に応じて使い分ける必要があります。</p>


<p class="wp-block-paragraph">前編で特に強調したのは、ping が通ることと、システムが業務として正常に使えることは別だという点です。</p>


<p class="wp-block-paragraph">サーバに到達できること。<br />
プロセスが起動していること。<br />
ポートが待ち受けていること。<br />
HTTP/HTTPSで応答が返ること。<br />
業務シナリオが正常に完了すること。<br />
<br />
これらは、それぞれ確認しているレベルが違います。<br />
<br />
また、SNMP監視では、MIBやOIDを理解することも重要です。<br />
ただし、MIBを登録しただけでは監視設計は終わりません。<br />
<br />
どのOIDを監視するのか。<br />
どの値を警告・異常とするのか。<br />
どのTrapを通知対象にするのか。<br />
どのアラートを除外するのか。<br />
テスト工程で発報内容をどう精査するのか。<br />
<br />
ここまで考えて初めて、監視は運用で使える仕組みになります。<br />
<br />
後編では、クラウド監視に話を進めます。<br />
<br />
AWS CloudWatchやOCI Monitoringのようなクラウドネイティブな監視では、自前の監視サーバーを構築しなくても、メトリクス、ログ、アラームを扱える場合があります。<br />
<br />
しかし、クラウド監視サービスを使えば、監視設計が不要になるわけではありません。<br />
<br />
標準メトリクスで足りるのか。 エージェントやプラグインが必要なのか。 どの条件でアラームを出すのか。 誰に通知するのか。 通知を受けた人が何を確認するのか。<br />
<br />
クラウドでも、オンプレミスでも、監視の本質は同じです。<br />
<br />
監視は、アラートを出すための設定ではありません。障害に気づき、判断し、対応につなげるための設計です。</p>



<h2 class="wp-block-heading"><span id="toc1">クラウド監視とは何か</span></h2>


<p class="wp-block-paragraph">ここまで説明してきた監視構成は、どちらかというとオンプレミスや従来型の監視製品を前提にしています。<br />
<br />
一方、クラウドでは考え方が少し変わります。<br />
<br />
クラウドでは、クラウドベンダーが用意する監視サービスを使って、仮想サーバ、ストレージ、ロードバランサ、データベース、ネットワーク、サーバレス、コンテナなどのメトリクス、ログ、イベントを収集できます。<br />
<br />
そのため、従来のように自前で監視サーバーを立てて、すべてのサーバに監視エージェントを導入し、監視製品を運用する、という構成が必ずしも必要ではありません。ただし、ここで誤解してはいけないことがあります。<br />
<br />
クラウド監視サービスがあることと、監視設計が不要になることは別です。<br />
クラウド監視サービスは、監視を実現するための部品です。<br />
<br />
何を監視するのか。 どの値を異常とするのか。 どの条件で通知するのか。 通知を受けた人が何を確認するのか。 既存システムで行っていた監視を新システムでも継続するのか。<br />
<br />
ここは、設計で決める必要があります。<br />
<br />
特にオンプレミスからクラウドへ移行する業務システムでは、既存監視の引き継ぎが大きな論点になります。</p>


<h2 class="wp-block-heading"><span id="toc2">クラウド監視サービスの代表例</span></h2>


<p class="wp-block-paragraph">クラウド監視サービスは、クラウドベンダーごとに用意されています。<br />
<br />
AWSであれば、CloudWatch。 Azureであれば、Azure Monitor。 Google Cloudであれば、Cloud Monitoring。 OCIであれば、OCI Monitoring。<br />
<br />
それぞれ名称や機能の範囲は異なりますが、基本的には、クラウド上のリソースからメトリクス、ログ、イベントを収集し、条件に応じてアラームや通知につなげるためのサービスです。<br />
<br />
この記事では、AWSでよく使われるCloudWatchを中心に説明します。<br />
<br />
あわせて、Oracle DatabaseやOracle製品を利用している業務システムではOCIが選択肢になることもあるため、OCI Monitoringについても簡単に触れます。</p>


<h2 class="wp-block-heading"><span id="toc3">AWS CloudWatchの場合</span></h2>


<p class="wp-block-paragraph">AWS CloudWatchは、AWS上のリソースを監視するための代表的なサービスです。<br />
<br />
EC2、RDS、ELB、EBS、Lambda、ECS、EKSなど、AWS上の多くのサービスはCloudWatchにメトリクスを出力できます。<br />
<br />
たとえば、EC2であればCPU使用率、ネットワーク送受信量、ディスクI/Oなどを確認できます。<br />
<br />
RDSであれば、CPU使用率、DB接続数、ストレージ容量、読み書きIOPSなどを確認できます。ELBであれば、リクエスト数、ターゲットの正常性、HTTPエラー数、レスポンスタイムなどを確認できます。<br />
<br />
CloudWatchでは、こうしたメトリクスに対してアラームを設定できます。</p>


<p class="wp-block-paragraph">たとえば、CPU使用率が一定時間以上高い状態が続いたら通知する。 RDSの空き容量が少なくなったら通知する。 ELB配下の正常ターゲット数が減ったら通知する。 アプリケーションログに特定のエラーメッセージが出たら通知する。<br />
<br />
このように、CloudWatchはAWS上のシステム監視における基本的な部品になります。ただし、CloudWatchを使えばすべてが自動で完璧に監視されるわけではありません。<br />
<br />
標準メトリクスで足りるのか。 詳細監視が必要なのか。 CloudWatch Agentを入れてOS内部のメモリやディスク使用率を取得するのか。 アプリケーションログをCloudWatch Logsへ送るのか。 ログのどの文字列を異常として拾うのか。 アラーム閾値をどう設定するのか。 通知先をどうするのか。 通知を受けた人が何を確認するのか。<br />
<br />
これらは設計が必要です。<br />
<br />
<strong>特にオンプレミスからAWSへ移行する場合、既存の監視をCloudWatchだけでそのまま置き換えられるとは限りません。<br />
</strong><br />
JP1、Systemwalker、Zabbix、PFM for Oracle、Oracle Enterprise Managerなどで見ていた監視項目が、CloudWatchの標準メトリクスだけで同じ粒度で取得できるとは限らないからです。<br />
<br />
そのため、AWSへ移行する場合でも、CloudWatchで何が見えるかだけではなく、既存監視で何を見ていたのか、新システムでも同じ監視が必要なのか、必要ならCloudWatchで代替できるのか、できない場合は何で補うのかを整理する必要があります。</p>


<h2 class="wp-block-heading"><span id="toc4">OCI Monitoringの場合</span></h2>


<p class="wp-block-paragraph">OCIでも、クラウドネイティブな監視サービスがあります。<br />
代表的なのがOCI Monitoringです。<br />
<br />
OCI Monitoringを使うと、OCI上のコンピュート、ストレージ、ロードバランサ、データベース、ネットワーク関連リソースなどのメトリクスを収集し、条件に応じてアラームを設定できます。<br />
<br />
OCIのComputeインスタンスでは、プラグインを有効化することで、インスタンスの状態やメトリクスを取得できる構成もあります。<br />
ただし、OCI Monitoringを使えば、Oracle Databaseの性能監視や既存の運用監視がすべて自動で置き換わるわけではありません。<br />
<br />
Oracle Databaseを利用している業務システムでは、OCI Monitoringで見るもの、Oracle Database側の機能で見るもの、OEMで見るもの、ログ監視で見るもの、運用手順で確認するものを分けて考える必要があります。<br />
<br />
特に、既存システムでOracle Database、Oracle Enterprise Manager、AWR、ASH、Performance Hub、PFM for Oracleなどを利用していた場合、クラウド移行後にどの監視を何で代替するのかを整理する必要があります。<br />
<br />
Oracle系システムでは、DB性能、待機イベント、SQL、セッション、表領域、アラートログなど、DB内部の監視観点が重要になることがあります。<br />
そのため、OCI Monitoringだけで考えるのではなく、Oracle Databaseの監視機能や既存運用を含めて、全体として監視設計を行う必要があります。</p>


<h2 class="wp-block-heading"><span id="toc5">クラウド移行では、既存監視のFit &amp; Gapが必要</span></h2>


<p class="wp-block-paragraph">クラウド移行といっても、完全な新規開発ばかりではありません。<br />
<br />
実務では、既存のオンプレミスシステムをクラウドへ移すリフト＆シフトや、移行後に段階的にクラウドネイティブ化していくケースが多くあります。<br />
<br />
その場合、移行前のシステムで行っていた監視を、移行後にどう引き継ぐかが大きな論点になります。<br />
<br />
既存環境では、JP1、Systemwalker、Zabbix、PFM for Oracle、Oracle Enterprise Managerなどで、OS、ジョブ、ログ、DB性能、表領域、待機イベント、SQL、アラートログなどを監視していたかもしれません。<br />
<br />
では、それをクラウド移行後に同じように見られるのでしょうか。答えは、簡単ではありません。<br />
<br />
クラウド移行後の監視Fit &amp; Gapでは、少なくとも次の3つに整理して考える必要があります。</p>


<h3 class="wp-block-heading"><span id="toc6">1. 既存監視を標準機能で置き換えられるもの</span></h3>


<p class="wp-block-paragraph">PFM for Oracleや既存監視製品で見ていた内容を、OEM、AWR、ASH、Performance Hub、CloudWatch、Performance Insights、Database Insightsなどで代替できる場合は、新環境の標準機能に寄せる判断があります。<br />
<br />
この場合、既存監視をそのまま機械的に移植するのではなく、新環境で標準的に提供されている監視機能を使い、運用をシンプルにできないかを検討します。</p>


<h3 class="wp-block-heading"><span id="toc7">2. 標準機能だけでは置き換えられないもの</span></h3>


<p class="wp-block-paragraph">一方で、既存監視で見ていた項目が、新環境の標準機能では取得できない、または同じ粒度で監視できない場合もあります。</p>


<p class="wp-block-paragraph">その場合は、代替方式を検討します。<br />
<br />
別のメトリクスで代替できるのか。 ログ監視で拾えるのか。 スクリプトで補完できるのか。 外部監視製品やAPMを使うのか。 そもそも新環境でも本当に必要な監視なのか。<br />
<br />
ここを整理せずに進めると、オンプレでは見えていた異常が、クラウド移行後に見えなくなることがあります。</p>


<h3 class="wp-block-heading"><span id="toc8">3. 代替するか、捨てるか、運用でカバーするもの</span></h3>


<p class="wp-block-paragraph">標準機能で置き換えられない監視については、最終的に判断が必要です。<br />
<br />
手組みしてでも実装するのか。 別製品を追加して実現するのか。 運用手順でカバーするのか。 監視対象から外すのか。<br />
<br />
監視を外す場合は、障害検知が遅れる可能性、一次対応への影響、サービスレベルへの影響を説明し、リスク受容として顧客と合意する必要があります。<br />
<br />
<strong>ここで重要なのは、プロジェクト側だけで勝手に決めないことです。</strong><br />
<br />
既存システムで実装されていた監視には、多くの場合、過去の障害、運用上の要請、監査対応、顧客側の不安、サービスレベル上の理由があります。</p>


<p class="wp-block-paragraph"><strong>そのため、単に「新しい製品ではできないのでやりません」とは言いにくいことがあります。</strong><br />
<br />
技術的には実現できない。 実現はできるがコストが高すぎる。 手組みすれば可能だが保守性が悪い。 運用カバーで十分と判断できる。 リスクを受容して監視対象から外す。<br />
<br />
こうした判断を、要件、コスト、運用負荷、障害時の影響、顧客の期待値を踏まえて整理します。<br />
<br />
クラウド移行時の監視設計で重要なのは、既存監視を機械的に移植することではありません。<br />
<br />
業務システムとして必要な異常検知、性能把握、一次対応、エスカレーションが、新システムでも成立するかを確認することです。<br />
<br />
そのうえで、できること、できないこと、代替すること、やめることを顧客と合意する。ここまで含めて、新システムの監視設計です。</p>


<h2 class="wp-block-heading"><span id="toc9">監視対象・目的で見た監視の種類</span></h2>


<p class="wp-block-paragraph">ここで重要なポイントは、「監視方式」と「監視対象・監視目的」を混同しないことです。</p>


<figure id="01dd46e9-c086-4f2b-9484-1ffe80cff962" class="wp-block-image"><a href="https://assets.st-note.com/img/1779939462-wkvQSbt3dUW9gZh2X16aoJji.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779939462-wkvQSbt3dUW9gZh2X16aoJji.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">この中で、若手SEが特に理解しておくべきなのは、死活監視だけでは業務正常性は分からないという点です。<br />
<br />
サーバに ping が通っていても、Web画面がエラーになっているかもしれません。 Web画面が開いても、検索処理が失敗するかもしれません。 DBプロセスが起動していても、表領域が枯渇して更新できないかもしれません。 バックアップジョブが正常終了していても、リストアできないかもしれません。<br />
<br />
だからこそ、監視設計では「何をもって正常と判断するのか」を決める必要があります。</p>


<h2 class="wp-block-heading"><span id="toc10">監視方式は「何を知りたいか」から選ぶ</span></h2>


<p class="wp-block-paragraph">監視方式を選ぶときに大事なのは、製品や流行から入らないことです。</p>


<p class="wp-block-paragraph">まず決めるべきなのは、「何を知りたいのか」です。</p>


<p class="wp-block-paragraph">サーバが起動しているかを知りたいなら、死活監視です。<br />
Webサービスが応答しているかを知りたいなら、URL監視です。<br />
OS内部のCPUやメモリを知りたいなら、リソース監視です。<br />
DBプロセスが動いているかを知りたいなら、プロセス監視です。<br />
DBとしてログインできるかを知りたいなら、DB接続監視です。<br />
ログに異常メッセージが出ていないか知りたいなら、ログ監視です。<br />
ストレージやネットワーク機器の状態を知りたいなら、SNMP監視や製品API監視です。<br />
クラウドリソースの状態を知りたいなら、CloudWatchやOCI Monitoringなどのクラウド監視サービスです。<br />
<br />
監視方式は、目的によって変わります。</p>


<p class="wp-block-paragraph">逆に言えば、監視方式だけを決めても意味がありません。<br />
<br />
「SNMPで監視します」では不十分です。<br />
<br />
SNMPで何を監視するのか。<br />
どのOIDを見るのか。<br />
どのTrapを受けるのか。<br />
重大度をどう判定するのか。<br />
通知先はどこか。<br />
一次対応手順は何か。<br />
<br />
ここまで決めて初めて、監視設計になります。</p>


<h2 class="wp-block-heading"><span id="toc11">監視設計で決めること</span></h2>


<p class="wp-block-paragraph">監視設計では、最低限、次のような項目を決めます。</p>


<ul id="aac39da1-6e06-4279-85fd-eeb17571226b" class="wp-block-list">
	<li>監視対象</li>


	<li>監視項目</li>


	<li>監視方式</li>


	<li>監視間隔</li>


	<li>閾値</li>


	<li>検知条件</li>


	<li>除外条件</li>


	<li>重大度</li>


	<li>通知先</li>


	<li>通知方法</li>


	<li>監視抑止条件</li>


	<li>メンテナンス時の扱い</li>


	<li>一次対応手順</li>


	<li>エスカレーション先</li>


	<li>復旧確認方法</li>


	<li>監視設定の変更手順</li>


	<li>監視条件の見直しタイミング</li>
</ul>


<p class="wp-block-paragraph">たとえば、CPU使用率の監視でも、単に「CPUを監視する」では足りません。</p>


<p class="wp-block-paragraph">CPU使用率が何％を超えたら警告なのか。 何分継続したら異常なのか。 瞬間的なスパイクは除外するのか。 夜間バッチ中は閾値を変えるのか。 警告と異常で通知先を分けるのか。 通知を受けたら、運用者は何を見るのか。 AP担当、DB担当、基盤担当のどこへ連絡するのか。</p>


<p class="wp-block-paragraph">ここまで決める必要があります。</p>


<p class="wp-block-paragraph">監視は、アラートを出すことが目的ではありません。</p>


<p class="wp-block-paragraph">アラートを受けた人が判断できることが目的です。</p>


<h2 class="wp-block-heading"><span id="toc12">監視でよくある誤解</span></h2>


<p class="wp-block-paragraph">監視でよくある誤解は、次の3つです。</p>


<figure id="59bc268a-5fde-4fc3-bf71-02ccf400d777" class="wp-block-image"><a href="https://assets.st-note.com/img/1779939287-3CtOcH6zIBeSJyEZlQTMhb07.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779939287-3CtOcH6zIBeSJyEZlQTMhb07.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">そのため、監視設計は、設計時点で決めて終わりではありません。<br />
システムテスト、運用テスト、本番リハーサル、本番稼働後の初期期間を通じて、見直す前提が必要です。</p>


<h2 class="wp-block-heading"><span id="toc13">若手SEに持ってほしい監視の見方</span></h2>


<p class="wp-block-paragraph">若手SEにまず持ってほしいのは、「監視は設定項目ではなく、運用の入口である」という見方です。<br />
<br />
監視アラートは、障害対応のスタート地点です。<br />
<br />
アラートが出た瞬間に、運用者は判断を求められます。<br />
<br />
これは本当に障害なのか。<br />
無視してよい通知なのか。<br />
すぐにエスカレーションすべきなのか。<br />
まず手順書に沿って確認すべきなのか。<br />
復旧したと言える条件は何か。</p>


<p class="wp-block-paragraph">この判断ができるように設計するのが、監視設計です。</p>


<p class="wp-block-paragraph">監視サーバーがある。<br />
エージェントが入っている。<br />
CloudWatchにメトリクスが出ている。<br />
OCI Monitoringにアラームがある。 MIBを読み込ませた。<br />
<br />
それだけでは、監視設計としては不十分です。<br />
重要なのは、検知した後に運用が動けることです。</p>


<h2 class="wp-block-heading"><span id="toc14">まとめ</span></h2>


<p class="wp-block-paragraph">クラウド監視サービスを使えば、メトリクス、ログ、アラームを扱いやすくなります。しかし、監視設計が不要になるわけではありません。<br />
<br />
特にオンプレミスからクラウドへ移行する業務システムでは、既存監視をどう扱うかが重要です。<br />
<br />
既存監視を標準機能で置き換えられるもの。<br />
標準機能だけでは置き換えられないもの。<br />
代替するか、捨てるか、運用でカバーするもの。</p>


<p class="wp-block-paragraph">この3つに分けて、Fit &amp; Gapを整理する必要があります。<br />
<br />
監視で大事なのは、たくさん検知することではありません。<br />
本当に検知すべき異常を、運用で対応できる形で検知することです。<br />
監視は、アラートを出すための設定ではありません。<br />
障害に気づき、判断し、対応につなげるための設計です。</p>


<p class="wp-block-paragraph">詳細設計の中で監視をどう設計するか、ログ監視条件をシステムテスト以降にどう見直すか、監視と運用手順をどうつなげるかについては、以下の記事でも詳しく整理しています。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph"><a href="https://sys-univ.com/dev/monitor/">前編</a>では、監視サーバーの構成、死活監視、エージェント監視、エージェントレス監視、SNMP監視の基本を整理しています。</p>


<p style="font-size: 13px; color: #888; margin-top: 24px;">あわせて読みたい</p>
<p style="font-size: 14px; line-height: 1.8;"><a href="https://sys-univ.com/dev/detailed-design-part2-monitoring-security/">詳細設計で決めること 後編②｜監視・ログ・バックアップ・セキュリティ・運用スクリプト</a><br />
<a href="https://sys-univ.com/dev/functional-nonfunctional-requirements/">機能要件と非機能要件の違い</a><br />
<a href="https://sys-univ.com/dev/system-dev-overview/">システム開発の流れを現場目線で理解する｜前編</a><br />
<a href="https://sys-univ.com/dev/requirements-definition/">要件定義の正体</a></p>
<div id="gtx-trans" style="position: absolute; left: 8px; top: 997.906px;">
<div class="gtx-trans-icon"> </div>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/tec/monitoring-cloud-fit-gap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Windows Update エラー0x80080008の対処法｜Cドライブ容量不足と確認手順</title>
		<link>https://sys-univ.com/incident/winuperr/</link>
					<comments>https://sys-univ.com/incident/winuperr/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Sun, 27 Mar 2022 01:58:58 +0000</pubDate>
				<category><![CDATA[トラブル]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=768</guid>

					<description><![CDATA[Windows Updateで累積更新プログラムを適用しようとしたとき、エラーコード「0x80080008」が表示され、更新に失敗することがあります。 このエラーは、原因を一つに限定できるものではありません。 Cドライブ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Windows Updateで累積更新プログラムを適用しようとしたとき、エラーコード「0x80080008」が表示され、更新に失敗することがあります。</p>
<p>このエラーは、原因を一つに限定できるものではありません。</p>
<p>Cドライブの空き容量不足、Windows Updateのキャッシュ不整合、関連サービスの異常、システムファイル破損、WSUS配信側の問題など、複数の原因で発生する可能性があります。</p>
<p>ただし、まず確認したいのは <strong>Cドライブの空き容量</strong> です。</p>
<p>実際の対応事例では、累積更新プログラム「KB5011495」の適用時に、Cドライブの空き容量不足が原因でエラー0x80080008が発生しました。</p>
<hr />
<h2><span id="toc1">まず試す対処法</span></h2>
<p>エラー0x80080008が発生した場合は、次の順番で確認します。</p>
<ol>
<li>
<p>Cドライブの空き容量を確認する</p>
</li>
<li>
<p>不要ファイルを削除する</p>
</li>
<li>
<p>端末を再起動する</p>
</li>
<li>
<p>Windows Updateを再実行する</p>
</li>
<li>
<p>更新履歴から失敗しているKB番号を確認する</p>
</li>
<li>
<p>Microsoft Update カタログから個別適用を試す</p>
</li>
<li>
<p>それでも直らない場合は、Windows Update関連サービスやシステムファイル破損を確認する</p>
</li>
</ol>
<p>最初から複雑な解析に入るよりも、まずは容量不足や再起動待ちなど、簡単に確認できるところから見ていくのが現実的です。</p>
<hr />
<h2><span id="toc2">発生したエラー</span></h2>
<p>Windows Updateの実行中に、次のようなエラーが表示されました。</p>
<blockquote>
<p>更新に失敗しました。<br />
いくつかの更新プログラムのインストールに問題がありましたが、後で再試行します。<br />
エラーコード：0x80080008</p>
</blockquote>
<p>今回のケースでは、WSUSから更新プログラムをダウンロードするところまでは正常に完了していました。</p>
<p>しかし、クライアント端末側で更新プログラムを適用する段階で失敗していました。</p>
<p>つまり、ダウンロードではなく、インストール処理で問題が発生していたということです。</p>
<hr />
<h2><span id="toc3">原因1：Cドライブの空き容量不足</span></h2>
<p>最初に確認すべきなのは、Cドライブの空き容量です。</p>
<p>累積更新プログラムは、更新ファイルをダウンロードするだけではありません。</p>
<p>端末上で、展開、一時ファイル作成、バックアップ、ロールバック用データの保持などを行います。</p>
<p>そのため、更新プログラムのファイルサイズ以上に空き容量が必要になることがあります。</p>
<p>今回の事例では、更新プログラム「KB5011495」の適用に約6GB程度の空き容量が必要でした。</p>
<p>対象端末ではCドライブの空き容量が不足しており、その結果、0x80080008で更新に失敗していました。</p>
<h3><span id="toc4">対処</span></h3>
<p>次のような方法でCドライブの空き容量を確保します。</p>
<ul>
<li>
<p>ダウンロードフォルダの不要ファイルを削除する</p>
</li>
<li>
<p>デスクトップ上の大容量ファイルを移動する</p>
</li>
<li>
<p>ドキュメント、ピクチャ、ビデオ配下の不要ファイルを整理する</p>
</li>
<li>
<p>一時ファイルを削除する</p>
</li>
<li>
<p>必要なファイルをDドライブや共有フォルダへ移動する</p>
</li>
</ul>
<p>空き容量を確保したら、端末を再起動し、Windows Updateを再実行します。</p>
<hr />
<h2><span id="toc5">原因2：Windows Updateのキャッシュ不整合</span></h2>
<p>Cドライブの空き容量を確保しても失敗する場合は、Windows Updateのキャッシュ不整合を疑います。</p>
<p>過去の更新失敗、中断、ネットワーク切断、強制再起動などにより、更新プログラムの一時ファイルやダウンロード情報が中途半端な状態で残ることがあります。</p>
<p>この状態になると、Windows Updateを再実行しても同じエラーで失敗する場合があります。</p>
<h3><span id="toc6">対処</span></h3>
<p>まずはWindows Updateトラブルシューティングツールを実行します。</p>
<p>Windowsの設定画面から、次の順番で確認します。</p>
<pre><code class="language-text">設定
→ システム
→ トラブルシューティング
→ その他のトラブルシューティングツール
→ Windows Update
</code></pre>
<p>環境によって表示名や場所が異なる場合があります。</p>
<p>企業端末の場合は、WSUSや端末管理ツールと連携していることがあります。</p>
<p>独断で更新キャッシュを削除すると、管理側の状態と不整合になる可能性があります。</p>
<p>社内端末では、社内の標準手順や保守サポートの指示に従って対応してください。</p>
<hr />
<h2><span id="toc7">原因3：Windows Update関連サービスの異常</span></h2>
<p>Windows Updateは、複数のサービスに依存しています。</p>
<p>代表的なサービスは次のとおりです。</p>
<ul>
<li>
<p>Windows Update</p>
</li>
<li>
<p>BITS</p>
</li>
<li>
<p>暗号化サービス</p>
</li>
</ul>
<p>これらのサービスが停止している、起動に失敗している、またはセキュリティソフトの影響を受けている場合、更新プログラムの適用に失敗することがあります。</p>
<h3><span id="toc8">確認ポイント</span></h3>
<p>次の点を確認します。</p>
<ul>
<li>
<p>Windows Updateサービスが起動しているか</p>
</li>
<li>
<p>BITSが起動しているか</p>
</li>
<li>
<p>暗号化サービスが起動しているか</p>
</li>
<li>
<p>サービス起動時にエラーが出ていないか</p>
</li>
<li>
<p>イベントログにWindows Update関連のエラーが出ていないか</p>
</li>
</ul>
<p>個人PCであればサービスの再起動を試す方法もあります。</p>
<p>ただし、企業端末の場合は、管理ポリシーや端末管理ツールの影響を受けることがあります。</p>
<p>社内端末では、独断でサービス設定を変更せず、管理部門の手順に従ってください。</p>
<hr />
<h2><span id="toc9">原因4：システムファイルやコンポーネントストアの破損</span></h2>
<p>Windows Updateに必要なシステムファイルやコンポーネントストアに問題がある場合も、0x80080008が発生することがあります。</p>
<p>この場合、Windows Updateを何度再実行しても改善しないことがあります。</p>
<h3><span id="toc10">対処</span></h3>
<p>管理者権限のコマンドプロンプトで、次のコマンドを実行します。</p>
<pre><code class="language-cmd">sfc /scannow
</code></pre>
<p>このコマンドは、Windowsのシステムファイルに破損がないかを確認し、修復を試みるものです。</p>
<p>完了までに時間がかかる場合があります。</p>
<p>処理中はコマンドプロンプトを閉じたり、端末を再起動したりしないでください。</p>
<p>必要に応じて、DISMによる修復も実行します。</p>
<pre><code class="language-cmd">DISM /Online /Cleanup-Image /RestoreHealth
</code></pre>
<p>DISMは環境によって数十分かかることがあります。</p>
<p>進行率が途中で止まっているように見える場合でも、すぐに中断せず、処理が完了するまで待つ必要があります。</p>
<p>ただし、これらの操作は端末の状態を変更します。</p>
<p>企業端末では、必ず社内の標準手順や保守サポートの指示に従って実行してください。</p>
<hr />
<h2><span id="toc11">原因5：WSUS配信側の問題</span></h2>
<p>WSUS環境では、クライアント端末だけでなく、配信側の状態も確認する必要があります。</p>
<p>特に、複数端末で同時にエラー0x80080008が発生している場合は、WSUSやグループポリシー側の問題も疑います。</p>
<h3><span id="toc12">確認ポイント</span></h3>
<p>次の点を確認します。</p>
<ul>
<li>
<p>WSUS上で対象更新プログラムが承認されているか</p>
</li>
<li>
<p>必要な前提更新プログラムが配信されているか</p>
</li>
<li>
<p>端末が正しいコンピュータグループに所属しているか</p>
</li>
<li>
<p>WSUSの同期やダウンロードが失敗していないか</p>
</li>
<li>
<p>グループポリシーが正しく適用されているか</p>
</li>
</ul>
<p>今回の事例では、更新プログラムのダウンロードまでは完了していました。</p>
<p>そのため、WSUS配信そのものではなく、クライアント端末側の容量不足が原因でした。</p>
<p>一方で、ダウンロード自体が始まらない、同じグループの端末で一斉に失敗する、といった場合はWSUS側も確認が必要です。</p>
<hr />
<h2><span id="toc13">Microsoft Update カタログから個別適用する</span></h2>
<p>Windows Updateを再実行しても失敗する場合は、Microsoft Update カタログから該当する更新プログラムを直接ダウンロードし、個別適用する方法があります。</p>
<p>確認するポイントは次のとおりです。</p>
<ul>
<li>
<p>失敗しているKB番号</p>
</li>
<li>
<p>対象OSのバージョン</p>
</li>
<li>
<p>32bit / 64bit の違い</p>
</li>
<li>
<p>サーバーOSかクライアントOSか</p>
</li>
<li>
<p>既に適用済みの更新プログラムとの関係</p>
</li>
</ul>
<p>誤った更新プログラムを適用しようとすると、別のエラーにつながる可能性があります。</p>
<p>必ず対象端末のOSバージョンとKB番号を確認してください。</p>
<hr />
<h2><span id="toc14">単独端末か、複数端末かで切り分ける</span></h2>
<p>0x80080008が発生したときは、単独端末の問題なのか、複数端末で同時に起きている問題なのかを確認します。</p>
<h3><span id="toc15">単独端末だけで発生している場合</span></h3>
<p>次のような端末固有の問題を疑います。</p>
<ul>
<li>
<p>Cドライブの空き容量不足</p>
</li>
<li>
<p>更新キャッシュ不整合</p>
</li>
<li>
<p>再起動待ち</p>
</li>
<li>
<p>システムファイル破損</p>
</li>
<li>
<p>端末固有のサービス異常</p>
</li>
</ul>
<h3><span id="toc16">複数端末で同時に発生している場合</span></h3>
<p>次のような共通基盤側の問題を疑います。</p>
<ul>
<li>
<p>WSUS配信設定</p>
</li>
<li>
<p>グループポリシー</p>
</li>
<li>
<p>プロキシ</p>
</li>
<li>
<p>ネットワーク</p>
</li>
<li>
<p>セキュリティ製品</p>
</li>
<li>
<p>端末管理ツール</p>
</li>
</ul>
<p>すべての端末で同じ作業を繰り返す前に、端末個別の問題なのか、共通基盤側の問題なのかを切り分けることが重要です。</p>
<hr />
<h2><span id="toc17">まとめ</span></h2>
<p>Windows Updateでエラー0x80080008が発生した場合、まず確認したいのはCドライブの空き容量です。</p>
<p>実際の事例では、累積更新プログラム「KB5011495」の適用時に、Cドライブの空き容量不足が原因で更新に失敗しました。</p>
<p>対処としては、不要ファイルを削除するか、Dドライブや共有フォルダへファイルを移動し、空き容量を確保したうえでWindows Updateを再実行します。</p>
<p>ただし、0x80080008は容量不足だけで発生するエラーではありません。</p>
<p>容量を確保しても解消しない場合は、次の観点を順番に確認します。</p>
<ul>
<li>
<p>Windows Updateのキャッシュ不整合</p>
</li>
<li>
<p>Windows Update関連サービスの異常</p>
</li>
<li>
<p>システムファイルやコンポーネントストアの破損</p>
</li>
<li>
<p>WSUS配信側の問題</p>
</li>
<li>
<p>グループポリシーや端末管理ツールの影響</p>
</li>
</ul>
<p>まずは容量不足から確認する。</p>
<p>それでも直らなければ、端末側と配信基盤側を分けて切り分ける。</p>
<p>この順番で確認すると、原因を絞り込みやすくなります。</p>
<hr />
<h2><span id="toc18">詳しい現場視点の解説について</span></h2>
<p>この記事では、Windows Updateエラー0x80080008の対処手順を中心に整理しました。</p>
<p>実際の現場では、Windows Updateの失敗がOutlook、Teams、インターネット接続、業務システムの利用制限につながることがあります。</p>
<p>そのため、単なる端末トラブルではなく、運用設計として事前に潰しておくことも重要です。</p>
<p>WSUS運用、問い合わせ対応、FAQが機能しにくい理由、事前通知や自動削除の考え方については、別記事で詳しく整理する予定です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/incident/winuperr/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【後編②】詳細設計で決めること｜基本設計を「構築・テスト・運用できる形」に落とし込む工程</title>
		<link>https://sys-univ.com/dev/detailed-design-part2-monitoring-security/</link>
					<comments>https://sys-univ.com/dev/detailed-design-part2-monitoring-security/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Sat, 20 Jun 2026 07:37:45 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2656</guid>

					<description><![CDATA[※この記事は「詳細設計で決めること」3部作の後編②です。前編・後編①はこちら、本編はnoteで公開しています。 前編では詳細設計の考え方を、後編①ではOS・Web/AP・DB・ジョブの設計観点を整理しました。 後編②では [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">※この記事は「詳細設計で決めること」3部作の後編②です。<a href="https://sys-univ.com/dev/detailed-design-overview/">前編</a>・<a href="https://sys-univ.com/dev/detailed-design-part1-os-db-job/">後編①</a>はこちら、本編はnoteで公開しています。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph">前編では詳細設計の考え方を、後編①ではOS・Web/AP・DB・ジョブの設計観点を整理しました。</p>


<p class="wp-block-paragraph">後編②では、監視、ログ、バックアップ・リストア、セキュリティ、運用スクリプトの5領域を扱います。これらは、システムを「作る」工程よりも「運用する」工程に深く関わる領域です。設計時点では正しく見えても、実際の業務データが入り、本番相当の運用サイクルが回り始めて初めて問題が見えてくる領域でもあります。</p>


<p class="wp-block-paragraph">各章は独立して参照できますが、前編の品質保証ストーリーと後編①の設計観点を踏まえて読むと、各論点の背景が理解しやすくなります。</p>


<h2 class="wp-block-heading"><span id="toc1">詳細設計で具体化する主な領域</span></h2>


<h3 class="wp-block-heading"><span id="toc2">5. 監視詳細設計</span></h3>


<p class="wp-block-paragraph">監視詳細設計では、システムの異常をどのように検知し、誰に通知し、どのように一次対応へつなげるかを具体化します。</p>


<p class="wp-block-paragraph">監視対象、監視方式、監視間隔、閾値、重大度、通知先、通知方法、抑止条件、メンテナンス時の扱い、一次対応手順との対応などが対象です。</p>


<p class="wp-block-paragraph">監視詳細設計では、監視項目を増やせばよいわけではありません。</p>


<p class="wp-block-paragraph">本当に検知すべき異常を、運用で対応できる形で検知することが目的です。</p>


<p class="wp-block-paragraph">この「本当に検知すべき異常を見極める」という点で、最も設計が難しい領域がログ監視です。</p>


<p class="wp-block-paragraph">前編で、詳細設計は「どこを試験で確認し、どこを運用監視で検知するかを説明できる状態にする」工程だと整理しました。ログ監視は、その考え方が最も問われる領域の一つです。</p>


<p class="wp-block-paragraph"><strong>なぜなら、監視条件の正しさは、設計時点では確認できないからです。</strong></p>


<p class="wp-block-paragraph">設計時点では、システム全体に本番相当の負荷がかかっているわけではありません。業務データも十分に入っていないことが多く、日次処理、月次処理、ピーク時のトランザクション、本番相当の運用操作もまだ十分に流れていません。</p>


<p class="wp-block-paragraph">そのため、監視対象のエラーログに、本来検知すべきメッセージが設計時点で出ているとは限りません。</p>


<p class="wp-block-paragraph">`error`、`fail`、`fatal`、`exception` といったキーワードをベンダー確認や製品マニュアルをもとに監視条件へ入れることはできます。しかし、そのキーワードを含むログが、本当にアラートとして通知すべき異常なのか、あるいは製品やミドルウェアが通常運転の中で出力する無視可能なメッセージなのかは、設計時点だけでは判断しきれないことがあります。</p>


<p class="wp-block-paragraph">システムテスト以降、業務データが入り、日回し、月回し、本番に近いトランザクションが流れるようになると、初めて大量のログメッセージが出てきます。</p>


<p class="wp-block-paragraph">その中には、確実に検知すべきエラーもあります。<br />
一方で、エラーのように見えても運用上は無視してよい標準的な出力もあります。</p>


<p class="wp-block-paragraph">この見極めをしないまま本番稼働すると、運用開始後に大量のアラートが発生します。</p>


<figure id="ca67c97c-d770-422d-a484-f9519dc0b2ce" class="wp-block-image"><a href="https://assets.st-note.com/img/1779785746-OxHBRg0kTYCIVE81Jv3KcQze.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779785746-OxHBRg0kTYCIVE81Jv3KcQze.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">監視設計で怖いのは、アラートが出ないことだけではありません。アラートが出すぎて、運用者が判断できなくなることも同じくらい危険です。</p>

<div style="margin: 16px 0;"><a style="display: block; border: 1px solid #1D9E75; border-radius: 6px; padding: 12px 16px; text-decoration: none; color: #333; background: #f9fffc;" href="https://note.com/k_s7906/n/n4f9e92eefd75"> <span style="font-size: 12px; color: #1d9e75;">続きはnoteで読む ¥500</span><br />
<span style="font-size: 14px; font-weight: bold;">監視の続き、ログ・バックアップ/リストア・セキュリティ・運用スクリプト詳細設計の解説はこちら →</span> </a></div>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/detailed-design-part2-monitoring-security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【後編①】詳細設計で決めること｜基本設計を「構築・テスト・運用できる形」に落とし込む工程</title>
		<link>https://sys-univ.com/dev/detailed-design-part1-os-db-job/</link>
					<comments>https://sys-univ.com/dev/detailed-design-part1-os-db-job/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Sat, 20 Jun 2026 07:14:43 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2648</guid>

					<description><![CDATA[※この記事は「詳細設計で決めること」3部作の後編①です。前編はこちら、後編②はnoteで公開しています。 前編では、詳細設計を単なるパラメータ表ではなく、基本設計で決めた方式を構築・テスト・運用・保守へ接続する工程として [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">※この記事は「詳細設計で決めること」3部作の後編①です。前編は<a href="https://sys-univ.com/dev/detailed-design-overview/">こちら</a>、後編②はnoteで公開しています。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<p class="wp-block-paragraph">前編では、詳細設計を単なるパラメータ表ではなく、基本設計で決めた方式を構築・テスト・運用・保守へ接続する工程として整理しました。</p>


<p class="wp-block-paragraph">後編①では、その考え方をOS、Web/APサーバ、DB、ジョブの4領域に展開します。これらは、システムの処理方式と性能・可用性を直接左右する領域であり、設計の甘さが構築工程やシステムテストで手戻りとして現れやすい領域でもあります。</p>


<p class="wp-block-paragraph">前編を読んでいない方は、先に前編をお読みいただくと、各章の「なぜその観点が重要か」が伝わりやすくなります。ただし、担当領域の章だけを辞書的に参照する使い方でも成立するように書いています。</p>


<h2 class="wp-block-heading"><span id="toc1">詳細設計で具体化する主な領域</span></h2>


<h3 class="wp-block-heading"><span id="toc2">1. OS詳細設計</span></h3>


<p class="wp-block-paragraph">OS詳細設計では、サーバの基本的な設定を具体化します。</p>


<p class="wp-block-paragraph">ホスト名、IPアドレス、ディスク構成、ファイルシステム、ユーザ、グループ、権限、時刻同期、名前解決、OSパッケージ、サービス起動設定、カーネルパラメータ、ログ設定、セキュリティ設定などが対象になります。</p>


<p class="wp-block-paragraph">OS詳細設計は、単にOSをインストールするための設定表ではありません。そのサーバがシステム内でどの役割を担うのかを反映する設計書です。</p>


<p class="wp-block-paragraph">Webサーバなのか、APサーバなのか、DBサーバなのか、運用管理サーバなのか。役割によって、必要なパッケージ、起動サービス、ファイアウォール設定、ログ、監視、権限は変わります。</p>


<p class="wp-block-paragraph">また、OS詳細設計は、運用にも直結します。</p>


<ul id="426e798c-eab2-4bd5-b3b9-ece9d95207ce" class="wp-block-list">
	<li>OSログをどこに出すのか</li>


	<li>syslog や messages を何日保持するのか</li>


	<li>ログローテーションをどう行うのか</li>


	<li>rootログインを許可するのか</li>


	<li>sudo権限を誰に与えるのか。</li>


	<li>時刻同期がずれた場合にどう検知するのか</li>


	<li>不要サービスを停止しているか</li>


	<li>OSパッチ適用をどう行うのか</li>
</ul>


<p class="wp-block-paragraph">こうした内容は、構築だけでなく、監視、ログ、セキュリティ、運用手順とつながります。</p>


<p class="wp-block-paragraph">特にOSログのローテーションは、監視設計とセットで確認します。</p>


<p class="wp-block-paragraph">たとえば、`/var/log/messages` のようなOSログをログ監視製品で監視している場合、ログローテーション方式によって、監視対象が意図せずずれることがあります。</p>



<p class="wp-block-paragraph">ログローテーションには、ファイルをリネームして新しいログファイルを作る方式、コピーしてから元ファイルを空にする方式、アプリケーションやsyslogにログファイルを再オープンさせる方式などがあります。</p>


<p class="wp-block-paragraph">一方、ログ監視製品によっては、単にファイル名だけを見ているのではなく、監視開始時点のファイル実体やファイルハンドルを追跡する挙動になることがあります。</p>


<p class="wp-block-paragraph">この挙動を理解しないまま、`logrotate`、`cp`、`touch` などを組み合わせてログローテーションを設計すると、監視製品がローテーション後の古いファイルを追い続け、新しい `/var/log/messages` に出力されたエラーを拾えなくなる場合があります。</p>


<p class="wp-block-paragraph">その結果、実際の /var/log/messages にはエラーが大量に出ているのに、監視製品はそのログを見ていないため、アラートが発報されない、という事態が起きます。</p>


<figure id="7e83e152-7e48-4751-bede-d4b5ca5b351a" class="wp-block-image"><a href="https://assets.st-note.com/img/1779786528-zetXfkuImaxs2YhrpyMi6ANE.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779786528-zetXfkuImaxs2YhrpyMi6ANE.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">これは、OSログ設計だけを見ていると気づきにくい問題です。</p>


<p class="wp-block-paragraph"><strong>ログローテーションの設計は、OS詳細設計、ログ詳細設計、監視詳細設計の境界にあります。</strong></p>


<p class="wp-block-paragraph">そのため、OSログをローテーションする場合は、次の点を確認します。</p>


<ul id="9b896dc5-037c-4a8c-b62e-c632c2976375" class="wp-block-list">
	<li>ログ監視製品が、ファイル名で監視するのか、ファイル実体を追跡するのか</li>


	<li>ローテーション後に、監視対象が新しいログファイルへ正しく切り替わるのか</li>


	<li>copytruncate、リネーム、再オープンなど、どのローテーション方式を採用するのか</li>


	<li>syslogやアプリケーション側でログファイルの再オープンが必要か</li>


	<li>ローテーション後も、監視キーワードが検知されるか</li>


	<li>ログローテーション試験で、監視アラートまで確認しているか</li>
</ul>


<p class="wp-block-paragraph">OSログのローテーションは、単に古いログを退避するだけの設定ではありません。</p>


<p class="wp-block-paragraph">監視対象のログを、ローテーション後も監視し続けられるかまで含めて設計します。</p>


<p class="wp-block-paragraph">ここを確認しないまま本番稼働すると、ログは出ているのに監視できていない、という非常に危険な状態になります。</p>


<p class="wp-block-paragraph">実際の現場でも、ログローテーション後に監視製品が古いログファイルを追い続け、新しい messages を監視できていなかった、というトラブルは起こりえます。</p>


<p class="wp-block-paragraph">OS詳細設計で検討すべき主な観点は以下のとおりです。</p>


<ul id="f8f24815-9105-4b2a-9ba4-2e5da175b847" class="wp-block-list">
	<li>ホスト名、IPアドレス、名前解決</li>


	<li>ディスク構成、マウントポイント、ファイルシステム</li>


	<li>ユーザ、グループ、sudo権限</li>


	<li>起動サービス、不要サービス停止</li>


	<li>時刻同期、タイムゾーン</li>


	<li>OSログ、ログローテーション</li>


	<li>ログ監視製品との連携</li>


	<li>ローテーション後の監視継続確認</li>


	<li>パッケージ、リポジトリ、パッチ適用方針</li>


	<li>OSセキュリティ設定</li>


	<li>監視対象となるプロセス・リソース</li>
</ul>


<p class="wp-block-paragraph">この章で確認したい問いは、次の3つです。</p>


<ul id="dc5ba7b1-57f0-402c-9d40-3e49e151bb35" class="wp-block-list">
	<li>サーバの役割に応じて、必要なOS設定・サービス・権限が整理されているか</li>


	<li>ログローテーション後も、監視製品が本来のログを監視し続けられるか</li>


	<li>パッチ適用、不要サービス停止、sudo権限はセキュリティ設計と整合しているか</li>
</ul>

<div style="margin: 16px 0;"><a style="display: block; border: 1px solid #1D9E75; border-radius: 6px; padding: 12px 16px; text-decoration: none; color: #333; background: #f9fffc;" href="https://note.com/k_s7906/n/nf951f05b0822"> <span style="font-size: 12px; color: #1d9e75;">続きはnoteで読む ¥500</span><br />
<span style="font-size: 14px; font-weight: bold;">Web/APサーバ・DB・ジョブ詳細設計で見るべき観点の解説はこちら →</span> </a></div>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/detailed-design-part1-os-db-job/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【第2部・前編】クラウドリフトPoCで「動いた」は確認できた。しかし業務では使えなかった｜10の設計リスク① 可用性・性能・ストレージ・バックアップ・監視</title>
		<link>https://sys-univ.com/dev/cloudlift-poc-risk-1/</link>
					<comments>https://sys-univ.com/dev/cloudlift-poc-risk-1/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Thu, 18 Jun 2026 15:04:41 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2561</guid>

					<description><![CDATA[※この記事は途中まで無料でお読みいただけます。続きはnote（有料）で公開しています。 「PoCでは問題なかったのに、構築に入ったら次々と課題が出てきた」 「接続確認はできていたのに、業務処理を流すと性能が出ない」 「バ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">※この記事は途中まで無料でお読みいただけます。続きはnote（有料）で公開しています。</p>
<p>「PoCでは問題なかったのに、構築に入ったら次々と課題が出てきた」</p>


<p class="wp-block-paragraph">「接続確認はできていたのに、業務処理を流すと性能が出ない」</p>


<p class="wp-block-paragraph">「バックアップは成功していたのに、戻す手順や時間を詰めていなかった」</p>


<p class="wp-block-paragraph">「共有ストレージとして使えると思ったのに、既存アプリのファイル更新方式と合わなかった」</p>


<p class="wp-block-paragraph">クラウドリフトでは、こうしたことが実際に起こります。</p>


<p class="wp-block-paragraph">PoCでEC2上のアプリは起動した。EFS上のファイルは読み書きできた。FSx経由のファイル共有も確認した。RDS上で主要なアプリ機能も動いた。CloudWatch Logsにもログは出力された。バックアップジョブも正常終了した。</p>


<p class="wp-block-paragraph">しかし、それだけでは、クラウドリフトPoCとしては足りません。</p>


<p class="wp-block-paragraph">「動いた」という確認は、業務が回るという確認とは別だからです。</p>


<p class="wp-block-paragraph">クラウドリフトで本当に怖いのは、PoCで「動いた」と判断したあとに、設計・構築・試験・運用の段階で後から手戻りになることです。</p>


<p class="wp-block-paragraph">性能が出ない。名前解決が想定どおりに動かない。Auto Scaling後に監視やジョブ実行対象として認識されない。EFS上のファイル更新方式が既存アプリと合わない。CloudWatch LogsのS3エクスポートが運用時間内に終わらない。バックアップの保持期間が業務要件とずれる。ライセンスやデータ転送量のコストが見積から漏れている。</p>


<p class="wp-block-paragraph">こうした問題は、現場では個別の設定ミスや確認不足に見えます。</p>


<p class="wp-block-paragraph">しかし、多くのプロジェクトで、PoCや設計段階で潰すべきリスクが残ったまま後工程へ進み、結果として大きな手戻りや追加対応につながる場面を見てきました。</p>


<p class="wp-block-paragraph">この記事は、クラウドリフトPoCを扱う全3部作の第2部前編です。</p>


<p class="wp-block-paragraph">第1部では、クラウドリフトの失敗が構築後ではなく、構築前のPoC不足から始まることを整理しました。</p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/n2508ef11c5da" target="_blank">【第1部】クラウドリフトの失敗は構築前に始まっている｜PoC不足が手戻り・コスト超過・納期遅延を招く理由</a></p>


<p class="wp-block-paragraph">第2部では、その続きとして、クラウドリフトPoCで見落とすと手戻りになりやすい10の設計リスクを整理します。</p>


<p class="wp-block-paragraph">第2部は、前編と後編に分けています。</p>


<p class="wp-block-paragraph">前編で扱うのは、クラウド基盤として業務を受け止めるために必要な、次の5項目です。</p>


<p class="wp-block-paragraph">１.可用性・信頼性<br />
２.性能・キャパシティ<br />
３.ストレージ<br />
４.バックアップ<br />
５.運用・監視</p>


<p class="wp-block-paragraph">後編では、構築後に運用・保守・統制・コスト管理で詰まりやすい、次の5項目を扱います。</p>


<p class="wp-block-paragraph">６.ジョブ管理・アプリ配布<br />
７.セキュリティ・アクセス管理<br />
８.ライセンス・製品サポート<br />
９.DB・OS・ミドルウェア互換性<br />
１０.コスト・キャパシティ管理</p>


<p class="wp-block-paragraph">つまり第2部では、「PoCで動いたか」ではなく、「その方式で設計・試験・運用・見積まで成立するか」を、10の観点から確認していきます。</p>


<p class="wp-block-paragraph">この記事で整理する設計リスクは、机上で作ったチェックリストではありません。</p>


<p class="wp-block-paragraph">大規模なクラウドリフト案件で、PoCを実施し、有識者も交えてリスクを潰しにいった中で見えてきた論点をもとにしています。</p>


<p class="wp-block-paragraph">RDS for OracleのDBA権限制約、EFS上での複数ノードによるファイル更新の競合、FSxのKerberos/SPN認証、名前解決経路とTTLの切替挙動、マネージドサービスのパッチ適用と自社セキュリティルールの整合などは、PoCで事前に確認しておくべき代表的な論点です。</p>


<p class="wp-block-paragraph">一方で、事前に検証していても、後工程で表面化した問題もありました。</p>


<p class="wp-block-paragraph">別AZ起動後のOS内ルート情報による通信不能、CloudWatch LogsのS3エクスポート制約、EBSの容量縮小、S3クロスアカウントのオブジェクト所有者問題、RHELとAmazon LinuxのOS設定差分、cloud-initによるSSH設定上書き、Auto Scalingの意図しないEC2再作成などです。</p>


<p class="wp-block-paragraph">「PoCで潰せたこと」と「PoCで潰しきれなかったこと」。</p>


<p class="wp-block-paragraph">その両方を踏まえて、現時点でクラウドリフトPoCに必要なチェック観点を整理したのが、この第2部です。</p>


<p class="wp-block-paragraph">PoCは、AWSサービスが使えるかを確認する作業ではありません。</p>


<p class="wp-block-paragraph">既存業務の処理方式、運用方式、復旧方式、名前解決、バックアップ、監視、ジョブ、ファイル更新方式、DB運用、ライセンス、コストが、クラウド上の構成で成立するかを確認する作業です。</p>


<p class="wp-block-paragraph">以下の図は、クラウドリフトPoCで見るべき10の設計リスクを整理したものです。</p>


<figure id="2118ca12-0523-4f8e-a747-7e39994cfe58" class="wp-block-image"><a href="https://assets.st-note.com/img/1781148756-H1k5XfuGSpOYVE7oC6cMPLbD.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1781148756-H1k5XfuGSpOYVE7oC6cMPLbD.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">それぞれ、単なるチェックリストではありません。</p>


<p class="wp-block-paragraph">見落とすと、設計、試験、運用、見積、スケジュールにどう跳ね返るのかまで含めて整理します。</p>


<p>&nbsp;</p>


<h2 class="wp-block-heading"><span id="toc1">PoC観点を強化するきっかけになった個別事例</span></h2>


<p class="wp-block-paragraph">以下は、クラウドリフトPoCの観点を見直すきっかけになった個別事例です。</p>


<p class="wp-block-paragraph">本記事では、これらの個別事例に加え、PoCで事前に潰せた設計論点も含めて、クラウドリフトPoCで見るべきリスクを整理しています。</p>


<ul id="1a0e441c-ac89-4f07-8ad7-b95fc4b0bfcb" class="wp-block-list">
	<li><a rel="noopener" href="https://note.com/k_s7906/n/n01ff5e3330f2" target="_blank">【AWS】別AZで起動したWindowsが通信不能に｜原因はVPCではなく「OS内のルート情報」だった</a></li>


	<li><a rel="noopener" href="https://note.com/k_s7906/n/n000caf76011a" target="_blank">CloudWatch Logsのログエクスポートが失敗した話｜「ジョブは動く」と「運用で回る」は別物</a></li>


	<li><a rel="noopener" href="https://note.com/k_s7906/n/n03d820268f37" target="_blank">バックアップ設定の「5日保存」は、5営業日分とは限らない｜AWS Backupの保持期間から考える、詳細設計の落とし穴</a></li>


	<li><a rel="noopener" href="https://note.com/k_s7906/n/n106d90e8da09" target="_blank">EBSは増やせても、簡単には減らせない｜RHEL環境で見落とした「容量縮小＝ディスク移行」という現実</a></li>


	<li><a rel="noopener" href="https://note.com/k_s7906/n/n64cdcb4dc668" target="_blank">S3バケットにあるのに取得できない｜クロスアカウント構成で見落とした「オブジェクト所有者」の罠</a></li>


	<li><a rel="noopener" href="https://note.com/k_s7906/n/neb6728ddb119" target="_blank">RHELで使えた設定方法が、Amazon Linuxでは使えなかった｜MTU設定に見る、OS差分と永続化確認の落とし穴</a></li>


	<li><a rel="noopener" href="https://note.com/k_s7906/n/n573bfeb6172e" target="_blank">EBSは見えているのにマウントできない？｜AMIコピーで起きた落とし穴</a></li>


	<li><a rel="noopener" href="https://note.com/k_s7906/n/n503fa7d94498" target="_blank">AMIからRHELインスタンスを起動したらSSHログインできなくなった｜cloud-initが上書きする設定を知らないと、復旧以前に入れなくなる</a></li>


	<li><a rel="noopener" href="https://note.com/k_s7906/n/n438ecca4afd0" target="_blank">EC2を止めただけなのに再作成？Auto Scaling運用の落とし穴｜クラウドの自動化は、作業者の意図までは読んでくれない</a></li>
</ul>


<p class="wp-block-paragraph">なお、後編では購入者特典として、10項目全体を整理したExcel資料「クラウドリフトPoC設計リスクチェックリスト」も添付します。</p>


<p class="wp-block-paragraph">PoC計画、設計レビュー、リスク洗い出しのたたき台として使えるようにしています。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<h2 class="wp-block-heading"><span id="toc2">1. 可用性・信頼性</span></h2>


<p class="wp-block-paragraph"><strong>EC2が起動しただけでは、業務復旧とは言えない</strong></p>


<p class="wp-block-paragraph">クラウドリフトでは、可用性設計が軽く見られることがあります。</p>


<p class="wp-block-paragraph">EC2は再作成できる。<br />
RDSはMulti-AZにできる。<br />
Auto Scalingを使えば復旧できる。<br />
ロードバランサー配下に置けば切り替えられる。</p>


<p class="wp-block-paragraph">マネージドサービスがすべてやってくれるように見えるからです。</p>


<p class="wp-block-paragraph">しかし、業務システムの復旧は、EC2が起動することではありません。</p>


<p class="wp-block-paragraph">業務処理が再開できることです。</p>


<p class="wp-block-paragraph">Auto Scalingを使う場合でも、EC2が新しく作られれば終わりではありません。</p>


<p class="wp-block-paragraph">実際の復旧方式では、障害ノードをロードバランサー配下から切り離し、AMIから新規EC2を作成し、cloud-initやUser Dataを使って初期設定を反映し、ホスト名を付与し、DNSに登録し、監視エージェントやミドルウェアを起動する、といった一連の処理が必要になります。</p>


<p class="wp-block-paragraph">ここで重要なのは、単にスクリプトを書けるかどうかではありません。</p>


<p class="wp-block-paragraph">実行タイミングです。</p>


<p class="wp-block-paragraph">ホスト名の付与が監視エージェントやミドルウェアの起動より後になると、誤ったホスト名でサービスが起動し、監視登録やジョブ実行対象の認識がずれることがあります。</p>


<p class="wp-block-paragraph">そのため、cloud-initのどの段階で設定を反映するのか、User Dataで実行するのか、設定ファイル側で制御するのか、サービス起動順序をどうするのかまで確認しなければなりません。</p>


<p class="wp-block-paragraph">さらに、ロードバランサーのヘルスチェックに戻す条件、監視対象への再登録、ジョブ実行対象としての認識、ログ収集先の切替、障害解析のために旧EC2を残すかどうかも決める必要があります。</p>


<p class="wp-block-paragraph"><strong>Auto Scalingは復旧方式の一部であって、復旧方式そのものではありません。</strong></p>


<p class="wp-block-paragraph">AWS側が支援してくれるのは、インスタンスの再作成、ロードバランサーのヘルスチェック、マネージドサービスの切替といった基盤機能の部分です。</p>


<p class="wp-block-paragraph">一方で、作り直されたEC2を業務システムとして使える状態に戻す設計は、利用者側の責任です。</p>


<p class="wp-block-paragraph">ホスト名、DNS登録、監視エージェント、ミドルウェア起動順序、ジョブ実行対象への再登録、ログ収集先の切替、復旧後の業務確認は、クラウドが自動で判断してくれるわけではありません。</p>


<p class="wp-block-paragraph">PoCでは、EC2が作られるかではなく、作られたEC2が業務システムの構成要素として正しく組み込まれるかを確認する必要があります。</p>


<p class="wp-block-paragraph">この復旧の流れは、文章だけでは見落とされやすいため、図に整理すると次のようになります。</p>


<figure id="c5cb7384-ed8c-4dc6-bb8e-908714d3ea47" class="wp-block-image"><a href="https://assets.st-note.com/img/1780912470-JUEa2GQSfdWHXsqlP8ToN5OD.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1780912470-JUEa2GQSfdWHXsqlP8ToN5OD.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph"><strong>保守停止と障害検知は分けて考える</strong></p>


<p class="wp-block-paragraph">Auto Scalingでは、EC2が意図せず停止した場合に、期待する台数を維持するため、新しいEC2が作られることがあります。</p>


<p class="wp-block-paragraph">これは可用性の観点では便利です。</p>


<p class="wp-block-paragraph">しかし、運用の観点では注意が必要です。</p>


<p class="wp-block-paragraph">保守作業としてEC2を停止したいだけでも、停止方法や事前の切り離し手順が適切でなければ、Auto Scaling側では障害や不足状態として扱われることがあります。</p>


<p class="wp-block-paragraph">作業者は「保守のために止めた」と思っている。<br />
しかし、Auto Scalingは期待台数を維持する仕組みとして、元の台数へ戻そうとします。</p>


<p class="wp-block-paragraph">その結果、意図しないEC2が作られ、監視、ジョブ、ログ、ライセンス、コストの前提が崩れることがあります。</p>


<p class="wp-block-paragraph">このようなことが起こります。</p>


<p class="wp-block-paragraph">つまり、Auto Scalingを使うなら、障害時にどう復旧するかだけでなく、保守時にどう止めるかも設計しなければなりません。</p>


<p class="wp-block-paragraph">保守作業時には、Auto Scalingグループの期待台数を変更するのか。<br />
インスタンス保護を使うのか。<br />
スケーリングを一時停止するのか。<br />
ロードバランサーから切り離して作業するのか。<br />
作業後にどう戻すのか。</p>


<p class="wp-block-paragraph">この運用手順を決めずにAuto Scalingを使うと、「自動復旧」が「作業者の意図しない再作成」になります。</p>


<p class="wp-block-paragraph">クラウドの自動化は、作業者の意図までは読んでくれません。</p>


<p class="wp-block-paragraph">PoCでは、障害時の自動復旧だけでなく、保守停止、再起動、切り離し、再登録、戻し忘れの検知まで確認する必要があります。</p>


<p class="wp-block-paragraph"><strong>別AZで起動できても、通信できるとは限らない</strong></p>


<p class="wp-block-paragraph">別AZでEC2を起動できたとしても、通信できるとは限りません。</p>


<p class="wp-block-paragraph">VPC、サブネット、ルートテーブル、Security Groupが正しく見えていても、OS内に残っている静的ルート、永続ルート、NIC設定、メトリック設定が移行後のネットワーク構成と合わないことがあります。</p>


<p class="wp-block-paragraph">その場合、AWS側のネットワーク設定だけを見ても原因にたどり着けません。</p>


<p class="wp-block-paragraph">クラウド移行では、ネットワークの問題を見るときに、どうしてもVPC側へ目が向きます。</p>


<p class="wp-block-paragraph">ルートテーブルは正しいか。<br />
Security Groupは開いているか。<br />
NACLで落ちていないか。<br />
サブネットの関連付けは正しいか。<br />
Transit GatewayやVPN経路は正しいか。</p>


<p class="wp-block-paragraph">もちろん、それらは重要です。</p>


<p class="wp-block-paragraph">しかし、OS内に固定で設定されていたルート情報、古いネットワークアダプタ前提の設定、特定AZや特定サブネットのIPを前提にした設定が残っていると、AWS側のネットワークが正しくても通信できないことがあります。</p>


<p class="wp-block-paragraph">特にWindowsサーバでは、GUI上のネットワーク設定だけでなく、永続ルート、メトリック、複数NIC構成、過去に追加した静的経路などが影響することがあります。</p>


<p class="wp-block-paragraph">PoCでは、EC2が起動するか、疎通確認が一度通るかだけでなく、OS内のルート情報、再起動後の永続化、AZ変更後の通信経路まで確認する必要があります。</p>


<p class="wp-block-paragraph">「AWS側の設定は正しいのに通信できない」という状態は、原因調査に時間がかかります。</p>


<p class="wp-block-paragraph">だからこそ、PoCの段階で、OS内のネットワーク前提まで確認しておく必要があります。</p>


<p class="wp-block-paragraph"><strong>名前解決は、クラウドリフトにおける最重要設計論点</strong></p>


<p class="wp-block-paragraph">クラウドリフトでは、名前解決が非常に重要です。</p>


<p class="wp-block-paragraph">オンプレでは、サーバ名、IPアドレス、DNS登録、参照経路が長期間固定されている前提で運用されていることがあります。</p>


<p class="wp-block-paragraph">しかし、クラウドでは、EC2の再作成、AZ変更、復旧方式、切替方式によって、同じIPアドレス、同じ物理名、同じ参照経路で戻ってくるとは限りません。</p>


<p class="wp-block-paragraph">そのため、必要に応じてDNSやRoute 53のレコードを書き換える設計が必要になります。</p>


<p class="wp-block-paragraph">ここで注意すべきなのは、「DNSを書き換えればよい」という単純な話ではないことです。</p>


<p class="wp-block-paragraph">参照元がAWS内のEC2なのか。<br />
別VPCなのか。<br />
オンプレミスのクライアントなのか。<br />
AD DNSを見ているのか。<br />
オンプレDNSからRoute 53へフォワードしているのか。<br />
Route 53 Private Hosted Zoneを直接見ているのか。</p>


<p class="wp-block-paragraph">この経路によって、復旧時に変更すべき場所が変わります。</p>


<p class="wp-block-paragraph">特にハイブリッド構成では、Route 53 ResolverのInbound endpoint、Outbound endpoint、転送ルールの設計も重要になります。</p>


<p class="wp-block-paragraph">オンプレ側からAWS内の名前を解決するのか。<br />
AWS側からオンプレDNSへ問い合わせるのか。<br />
どのドメインを、どのDNSへフォワードするのか。</p>


<p class="wp-block-paragraph">また、名前解決は成功するか失敗するかだけでなく、問い合わせにどれくらい時間がかかるかも重要です。</p>


<p class="wp-block-paragraph">オンプレDNS、Route 53 Resolver、AD DNS、別VPCのDNSをまたぐ構成では、フォワード先の設定、再帰問い合わせ、リトライ挙動によって、名前解決の遅延がアプリケーションの応答時間やタイムアウトに影響することがあります。</p>


<p class="wp-block-paragraph">この設計を誤ると、AWS側では名前解決できているのに、オンプレ端末や業務サーバからは名前解決できない、という状態になります。</p>


<p class="wp-block-paragraph">場合によっては、クラウド側のレコードを変更したつもりでも、参照元が別のDNSサーバを見ていて、期待した名前解決にならないことがあります。</p>


<p class="wp-block-paragraph">ここを知らずに進むと、基盤結合試験まで発見されないことがあります。</p>


<p class="wp-block-paragraph">システムテストのユースケースが甘いと、本番切替後に初めて通信できない、接続先が違う、名前解決できない、という形で発覚する可能性があります。</p>


<p class="wp-block-paragraph">クラウドリフトでは、DNSは単なる付帯設定ではありません。</p>


<p class="wp-block-paragraph">復旧方式、切替方式、運用方式そのものに関わる設計要素です。</p>


<p class="wp-block-paragraph"><strong>DNSキャッシュとTTLも見落としやすい</strong></p>


<p class="wp-block-paragraph">切替直後は、クライアントやアプリケーションが古い名前解決結果をキャッシュしているため、一見すると通信できているように見えることがあります。</p>


<p class="wp-block-paragraph">しかし、TTLが切れて再度名前解決が行われたタイミングで、参照先DNS、Route 53、オンプレDNS、Resolver経路、レコード状態のどこかに不整合があると、名前解決エラーや接続先誤りとして表面化します。</p>


<p class="wp-block-paragraph">また、OS、JVM、ミドルウェア、接続プール、プロキシなどが名前解決結果や接続先情報を保持していると、Route 53側のTTLだけを見ていても切替挙動を説明できません。</p>


<p class="wp-block-paragraph">DNS再解決を契機に接続先が変わり、TLS証明書のホスト名検証、DB接続、認証処理、接続プールの再接続で失敗することもあります。</p>


<p class="wp-block-paragraph">特にアプリケーションサーバやバッチ処理では、起動時に解決した接続先情報をプロセス内で保持し続けることがあります。</p>


<p class="wp-block-paragraph">その場合、DNSレコードを変更しても、アプリケーションが再起動されるまで新しい接続先を見に行かないことがあります。</p>


<p class="wp-block-paragraph">逆に、TTL経過後に再解決された瞬間に、今まで見えていた接続先と別の接続先へ向かい、初めて問題が出ることもあります。</p>


<p class="wp-block-paragraph">PoCでは、切替直後だけでなく、TTL経過後、キャッシュクリア後、アプリ再起動後、接続プール再作成後の挙動まで確認しておく必要があります。</p>


<p class="wp-block-paragraph">DNSは、切替直後に疎通できればよいわけではありません。</p>


<p class="wp-block-paragraph">TTLが切れた後、キャッシュが消えた後、アプリが再接続した後に、同じように業務が継続できるかを見る必要があります。</p>


<p class="wp-block-paragraph"><strong>RDS Multi-AZも「切り替われば終わり」ではない</strong></p>


<p class="wp-block-paragraph">RDSがフェイルオーバーして待機系へ切り替わった場合、DBとしては復旧していても、Web/APサーバとのAZ配置が変わることがあります。</p>


<p class="wp-block-paragraph">Web/APはAZ-A中心に残り、RDSのプライマリだけAZ-Bへ切り替わると、Web/APからDBへの通信がAZまたぎになります。</p>


<p class="wp-block-paragraph">実務では、切替直後は一時的な縮退状態として許容し、業務影響を見ながらフェイルバックする方針を取ることもあります。</p>


<p class="wp-block-paragraph">また、DBがフェイルオーバーしても、アプリケーション側が正しく再接続できるとは限りません。</p>


<p class="wp-block-paragraph">コネクションプールが古い接続を保持したままになる。<br />
接続リトライの回数や間隔が足りない。<br />
DNS再解決が走らない。<br />
一時的な接続断をアプリが異常終了として扱う。</p>


<p class="wp-block-paragraph">このような場合、RDSとしては復旧していても、アプリケーションは接続エラーを出し続けることがあります。</p>


<p class="wp-block-paragraph">PoCや障害試験では、DBの切替だけでなく、アプリ側の再接続、リトライ、コネクションプールの挙動まで確認する必要があります。</p>


<p class="wp-block-paragraph">ここで重要なのは、切り替わるかどうかではありません。</p>


<p class="wp-block-paragraph">切り替わった後の配置で、画面応答、バッチ処理、帳票処理、データ転送量、運用手順に問題が出ないかを確認することです。</p>


<p class="wp-block-paragraph"><strong>PoCで見るべき観点</strong></p>


<ul id="df12add0-1e3a-46b1-9e18-b4c01a835530" class="wp-block-list">
	<li>障害時に、どの単位で、どこまで自動復旧するのか</li>


	<li>そのEC2は、自動で作り直してよいサーバなのか</li>


	<li>Auto Scaling後に、ホスト名、DNS登録、OS設定、監視エージェント、ミドルウェア起動まで再現できるか</li>


	<li>cloud-initやUser Dataの実行タイミングが、サービス起動順序と矛盾していないか</li>


	<li>ロードバランサーのヘルスチェック、切り離し、復帰の条件は明確か</li>


	<li>保守作業としてEC2を停止した場合と、障害として停止した場合を、Auto Scalingがどう扱うか</li>


	<li>保守時にスケーリング停止、期待台数変更、インスタンス保護などの運用手順が必要か</li>


	<li>別AZ起動後に、OS内の静的ルート、永続ルート、NIC設定、メトリック設定が移行後の構成と合っているか</li>


	<li>参照元ごとに、どのDNSサーバを経由して名前解決しているか</li>


	<li>DNS問い合わせの遅延、リトライ、再帰問い合わせがアプリケーション応答やタイムアウトに影響しないか</li>


	<li>Route 53 ResolverのInbound/Outbound endpoint、転送ルールがハイブリッド構成に合っているか</li>


	<li>EC2再作成、AZ変更、切替後に、DNSやRoute 53のレコード変更が必要になるか</li>


	<li>DNSキャッシュやTTL経過後に、参照元から再度正しく名前解決できるか</li>


	<li>OS、JVM、ミドルウェア、接続プール、プロキシが独自に名前解決結果を保持していないか</li>


	<li>RDSがフェイルオーバーした後、Web/APとのAZ配置や通信経路に問題が出ないか</li>


	<li>DB切替後に、アプリ側の再接続、リトライ、コネクションプールの再作成が正しく行われるか</li>


	<li>縮退状態を許容するのか、フェイルバックするのか</li>


	<li>復旧後に何を確認すれば業務再開と言えるのか</li>
</ul>


<p class="wp-block-paragraph">可用性は、サーバが再起動することではありません。</p>


<p class="wp-block-paragraph">自動復旧できるものと、手動で戻すべきものを切り分けること。<br />
切り替わった後の配置、性能、縮退運用、フェイルバック方針まで確認すること。<br />
そして、業務が再開できる状態を説明できること。</p>


<p class="wp-block-paragraph">ここまで見て、初めてクラウドリフトにおける可用性設計です。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<h2 class="wp-block-heading"><span id="toc3">2. 性能・キャパシティ</span></h2>


<p class="wp-block-paragraph"><strong>動いたことと、業務時間内に処理できることは違う</strong></p>


<p class="wp-block-paragraph">性能面において最も危険なのは、単純な正常系テストで『動いた』と満足してしまうことです。</p>


<p class="wp-block-paragraph">EC2上でアプリが起動した。<br />
DBに接続できた。<br />
バッチが1回流れた。<br />
ファイルを読み書きできた。</p>


<p class="wp-block-paragraph">しかし、それだけでは性能要件を満たしたことにはなりません。</p>


<p class="wp-block-paragraph">現場では、日次の夜間バッチだけが重いとは限りません。</p>


<p class="wp-block-paragraph">週次処理、月次処理、締め処理、大量帳票、ファイル集計、洗い替え処理など、特定日だけ極端に重くなる処理があります。</p>


<p class="wp-block-paragraph">通常日の軽いデータや単発の小さな検証だけで判断すると危険です。</p>


<p class="wp-block-paragraph">性能が出るかどうかは、インスタンスタイプ選定とも切り離せません。</p>


<p class="wp-block-paragraph">オンプレからクラウドへ移行する場合、既存サーバのCPU、メモリ、ディスクI/O、ネットワーク使用量をそのまま見ても、クラウド上の適切なインスタンスタイプが自動的に決まるわけではありません。</p>


<p class="wp-block-paragraph">オンプレ環境では、CPU性能をSPECintや独自の換算指標で見ていたとしても、AWS上ではインスタンスタイプごとにvCPU数、メモリ量、ネットワーク性能、EBS帯域、CPU世代、ファミリー特性が異なります。</p>


<p class="wp-block-paragraph">そのため、単純に「CPUが何個あるからこのタイプ」「メモリが何GBあるからこのタイプ」と決めるのは危険です。</p>


<p class="wp-block-paragraph">バッチサーバのように、大量データを読み込み、ソートし、一時領域を使い、一定時間内にまとめて処理するサーバでは、CPUだけでなくメモリやI/Oが効いてくることがあります。</p>


<p class="wp-block-paragraph">一方で、Web/APサーバのように、1件あたりの処理は軽くても、多数のリクエストやトランザクションをさばくサーバでは、vCPU数、同時実行性能、スレッド数、コネクションプールの設計が効いてくることがあります。</p>


<p class="wp-block-paragraph">CPUが足りないのか。<br />
メモリが足りないのか。<br />
I/Oが詰まっているのか。<br />
ネットワークが詰まっているのか。<br />
同時実行数に対してスレッドやコネクションプールが足りないのか。</p>


<p class="wp-block-paragraph">ここを見ずにインスタンスタイプだけを上げると、コストだけが増えて、性能問題が解消しないことがあります。</p>


<p class="wp-block-paragraph">また、拡張性を残すことも重要です。</p>


<p class="wp-block-paragraph">最初からそのファミリーの最大サイズ、または上限に近いタイプを選んでしまうと、負荷が増えたときに同じ考え方でスケールアップできません。</p>


<p class="wp-block-paragraph">「性能が足りなければタイプを上げればよい」と考えていたのに、すでに上限に近いタイプを選んでいたため、設計変更、構成変更、スケールアウト方式の見直しが必要になることがあります。</p>


<p class="wp-block-paragraph">PoCでは、今の負荷を処理できるかだけでなく、将来の増加分をどこまで同じ構成で吸収できるかも確認しておく必要があります。</p>


<p class="wp-block-paragraph">同じファミリー内のサイズ変更で対応できるのか。<br />
メモリ最適化、コンピューティング最適化、汎用系など、ファミリー選定から見直す必要があるのか。<br />
スケールアップではなく、スケールアウトや処理分散を考えるべきなのか。</p>


<p class="wp-block-paragraph">この判断は、性能設計であり、同時にコスト見積やキャパシティ管理の前提にもなります。</p>


<p class="wp-block-paragraph">PoCで見るべきなのは、単に「このタイプで動いたか」ではありません。</p>


<p class="wp-block-paragraph">このタイプで本番負荷に耐えられるのか。<br />
将来の増加に対して拡張余地があるのか。<br />
同じファミリー内で上げればよいのか、ファミリー選定から見直すべきなのか。<br />
見積、性能試験計画、キャパシティ管理の前提として説明できるのか。</p>


<p class="wp-block-paragraph">ここまで確認しないと、設計段階でインスタンスタイプを決められず、試験やサービス開始後に「タイプを変えれば済むと思っていたのに、そう簡単ではなかった」という状態になります。</p>


<p class="wp-block-paragraph">EFSを使う場合、標準的なバースト前提では、重いバッチ処理を安定して処理できないことがあります。</p>


<p class="wp-block-paragraph">EFSのバーストスループットは、クレジットの蓄積と消費で動きます。</p>


<p class="wp-block-paragraph">軽い処理を続けている間はクレジットが回復しますが、重いバッチを集中的に流すとクレジットを一気に使い切り、ベースラインスループットまで落ちることがあります。</p>


<p class="wp-block-paragraph">また、EFSの性能を見るときは、単純な転送量だけでは不十分です。</p>


<p class="wp-block-paragraph">読み取り中心なのか、書き込み中心なのか。<br />
大きなファイルを少数扱うのか、小さなファイルを大量に扱うのか。<br />
`ls`、`find`、属性確認、ディレクトリ走査のようなメタデータ操作が多いのか。</p>


<p class="wp-block-paragraph">この違いによって、同じデータ量でもボトルネックの出方は変わります。</p>


<p class="wp-block-paragraph">特に小さなファイルが大量にあり、バッチ処理でディレクトリを再帰的に走査するような場合、データ転送量よりもメタデータ操作が効いてくることがあります。</p>


<p class="wp-block-paragraph">そのため、通常日のPoCでは問題なかったのに、月次締め処理や大量ファイル処理だけ極端に遅い、という現象が起こります。</p>


<p class="wp-block-paragraph">バッチ処理がEFSから大量のファイルを読み込み、CPUとI/Oを同時に使い切るような処理であれば、エラスティックスループットやプロビジョンドスループットを検討する必要があります。</p>


<p class="wp-block-paragraph">重要なのは、単に性能が出るかどうかではありません。</p>


<p class="wp-block-paragraph">最も重い処理を、最も重い条件で流したときに、どのスループットモードが必要なのか。<br />
一時的に性能を上げる運用が可能なのか。<br />
処理後に下げられるのか。<br />
変更に制約はないのか。<br />
戻し忘れた場合にどれだけ課金されるのか。<br />
見積上、その運用を説明できるのか。</p>


<p class="wp-block-paragraph">ここまで含めて検証する必要があります。</p>


<p class="wp-block-paragraph">もし、インフラ側の調整だけでは性能要件を満たせない場合は、バッチ処理の分割、コミット単位の見直し、ソート処理の方式、DBアクセス方式、ログ出力方式など、アプリケーションや処理方式の見直しに波及します。</p>


<p class="wp-block-paragraph">性能PoCの最大のポイントは、軽い処理で「動いた」と確認することではありません。</p>


<p class="wp-block-paragraph">最も重い処理を、最も重い条件で流し、必要な性能、構成、課金、運用手順、そしてアプリ改修要否まで判断することです。</p>


<p class="wp-block-paragraph"><strong>PoCで見るべき観点</strong></p>


<ul id="0b5ddee6-6393-432f-87fa-1917fed911ec" class="wp-block-list">
	<li>週次・月次・締め処理など最も重いバッチを本番相当データで流せるか</li>


	<li>既存サーバのCPU、メモリ、I/O、ネットワーク使用量をもとに、アプリケーション特性に合ったインスタンスタイプやファミリーを選べているか</li>


	<li>バッチサーバ、Web/APサーバ、DBサーバなど、役割ごとにvCPU、メモリ、I/O、ネットワークの見方を分けているか</li>


	<li>最初から最大サイズや上限に近いタイプを選んでおらず、将来のスケールアップ余地を残しているか</li>


	<li>同じファミリー内のサイズ変更で足りるのか、ファミリー変更やスケールアウト設計まで必要になるのか</li>


	<li>EFS、EBS、DB、ネットワーク、EC2インスタンスのどこがボトルネックになるか</li>


	<li>EFSを使う場合、バースト、エラスティック、プロビジョンドのどのスループットモードが必要か</li>


	<li>一時的に性能を上げ、処理後に下げる運用が現実的にできるか</li>


	<li>インフラ側の性能調整で足りない場合、アプリ改修や処理方式変更が必要になるか</li>


	<li>読み取り/書き込み比率、大量小ファイル、`ls`/`find`などのメタデータ操作が性能ボトルネックにならないか</li>
</ul>


<p class="wp-block-paragraph">性能は、CPUやメモリの数字だけで決まるものではありません。</p>


<p class="wp-block-paragraph">業務処理が、必要な時間内に、必要な量を、安定して処理できるか。<br />
そして、その性能を必要なときだけ使い、不要なときにはコストを抑える運用ができるか。</p>


<p class="wp-block-paragraph">ここまで見て、初めてクラウドリフトにおける性能設計です。</p>


<hr class="wp-block-separator has-alpha-channel-opacity" />

<h2 class="wp-block-heading"><span id="toc4">3. ストレージ</span></h2>


<p class="wp-block-paragraph"><strong>共有できることと、業務で使えることは違う</strong></p>


<p class="wp-block-paragraph">ストレージは、クラウドリフトPoCで大きな手戻りになりやすい領域です。</p>


<div style="margin: 16px 0;"><a style="display: block; border: 1px solid #1D9E75; border-radius: 6px; padding: 12px 16px; text-decoration: none; color: #333; background: #f9fffc;" href="https://note.com/k_s7906/n/n742f150cf39c"><br />
<span style="font-size: 12px; color: #1d9e75;">続きはnoteで読む ¥500</span><br />
<span style="font-size: 14px; font-weight: bold;">ストレージ以降（リスク3〜5）の解説はこちら →</span><br />
</a></div>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/cloudlift-poc-risk-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【第2部・後編】クラウドリフトPoCで「動いた」は確認できた。しかし運用では使えなかった｜10の設計リスク② ジョブ・セキュリティ・ライセンス・DB互換性・コスト</title>
		<link>https://sys-univ.com/dev/cloudlift-poc-risk-2/</link>
					<comments>https://sys-univ.com/dev/cloudlift-poc-risk-2/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Thu, 18 Jun 2026 15:29:21 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=2574</guid>

					<description><![CDATA[※この記事は途中まで無料でお読みいただけます。続きはnote（有料）で公開しています。 「Lambdaで処理を起動できた」 「IAMロールでS3にアクセスできた」 「RDSに接続できた」 「EC2上で既存アプリが起動した [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">※この記事は途中まで無料でお読みいただけます。続きはnote（有料）で公開しています。</p>
<p>「Lambdaで処理を起動できた」</p>


<p class="wp-block-paragraph">「IAMロールでS3にアクセスできた」</p>


<p class="wp-block-paragraph">「RDSに接続できた」</p>


<p class="wp-block-paragraph">「EC2上で既存アプリが起動した」</p>


<p class="wp-block-paragraph">「CloudWatch Logsにログが出た」</p>


<p class="wp-block-paragraph">クラウドリフトPoCでは、こうした確認を行うことがあります。</p>


<p class="wp-block-paragraph">もちろん、これらは必要です。</p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/n742f150cf39c" target="_blank">第2部・前編</a>では、可用性、性能、ストレージ、バックアップ、運用・監視の観点から、「動いた」ことと「業務で使える」ことは違う、という話を整理しました。</p>


<p class="wp-block-paragraph">後編で扱うのは、その続きです。</p>


<p class="wp-block-paragraph">クラウド上で処理を起動できた。<br />
権限を付ければアクセスできた。<br />
製品はインストールできた。<br />
DBには接続できた。<br />
見積上はオンプレより安く見えた。</p>


<p class="wp-block-paragraph">しかし、実際の運用・保守・統制・コスト管理に入ると、そこで初めて問題が見えることがあります。</p>


<p class="wp-block-paragraph">ジョブの依存関係をどう管理するのか。<br />
異常終了後にどこから再実行するのか。<br />
EC2が再作成されたとき、ジョブ実行対象として正しく認識されるのか。<br />
IAM権限は最小権限になっているのか。<br />
本番作業の一時権限や証跡は残るのか。<br />
オンプレで使っていた製品ライセンスは、AWS上でも同じ条件で使えるのか。<br />
RDS for Oracleにした場合、既存のDBA運用はそのまま成立するのか。<br />
RHELで使っていたOS設定やスクリプトは、Amazon Linuxでも同じように動くのか。<br />
性能PoC前に、Reserved InstancesやSavings Plansを前提に見積を固めてよいのか。</p>


<p class="wp-block-paragraph">これらは、AWSサービスを知っているだけでは整理できません。</p>


<p class="wp-block-paragraph">既存業務の処理方式、ジョブ運用、権限設計、DB運用、ライセンス条件、保守手順、コスト管理を、クラウド上の構成にどう接続するかという話です。</p>


<p class="wp-block-paragraph">PoCは、AWSサービスが使えるかを確認する作業ではありません。</p>


<p class="wp-block-paragraph">既存業務の運用方式が、クラウド上でも成立するかを確認する作業です。</p>


<p class="wp-block-paragraph">第2部・後編では、クラウドリフトPoCで見落とすと後工程で手戻りになりやすい、残りの5項目を整理します。</p>


<p class="wp-block-paragraph">６.ジョブ管理・アプリ配布<br />
７.セキュリティ・アクセス管理<br />
８.ライセンス・製品サポート<br />
９.DB・OS・ミドルウェア互換性<br />
１０.コスト・キャパシティ管理</p>


<p class="wp-block-paragraph">焦点は、クラウド上で「動いた」後に、実際の運用・保守・統制・コスト管理で使えるかです。</p>



<h2 class="wp-block-heading"><span id="toc1">PoC観点を強化するきっかけになった個別事例</span></h2>


<p class="wp-block-paragraph">以下は、クラウドリフトPoCの観点を見直すきっかけになった個別事例です。</p>


<p class="wp-block-paragraph">本記事では、これらの個別事例に加え、PoCで事前に潰すべき設計論点も含めて、クラウドリフトPoCで見るべきリスクを整理しています。</p>


<p class="wp-block-paragraph">個別事象そのものを詳しく扱うのではなく、そこからどのようなPoC観点を抽出すべきかに焦点を当てています。</p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/n01ff5e3330f2" target="_blank">【AWS】別AZで起動したWindowsが通信不能に｜原因はVPCではなく「OS内のルート情報」だった</a></p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/n000caf76011a" target="_blank">CloudWatch Logsのログエクスポートが失敗した話｜「ジョブは動く」と「運用で回る」は別物</a></p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/n03d820268f37" target="_blank">バックアップ設定の「5日保存」は、5営業日分とは限らない｜AWS Backupの保持期間から考える、詳細設計の落とし穴</a></p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/n106d90e8da09" target="_blank">EBSは増やせても、簡単には減らせない｜RHEL環境で見落とした「容量縮小＝ディスク移行」という現実</a></p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/n64cdcb4dc668" target="_blank">S3バケットにあるのに取得できない｜クロスアカウント構成で見落とした「オブジェクト所有者」の罠</a></p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/neb6728ddb119" target="_blank">RHELで使えた設定方法が、Amazon Linuxでは使えなかった｜MTU設定に見る、OS差分と永続化確認の落とし穴</a></p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/n573bfeb6172e" target="_blank">EBSは見えているのにマウントできない？｜AMIコピーで起きた落とし穴</a></p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/n503fa7d94498" target="_blank">AMIからRHELインスタンスを起動したらSSHログインできなくなった｜cloud-initが上書きする設定を知らないと、復旧以前に入れなくなる</a></p>


<p class="wp-block-paragraph"><a rel="noopener" href="https://note.com/k_s7906/n/n438ecca4afd0" target="_blank">EC2を止めただけなのに再作成？Auto Scaling運用の落とし穴｜クラウドの自動化は、作業者の意図までは読んでくれない</a></p>


<p class="wp-block-paragraph">なお、後編では購入者特典として、10項目全体を整理したExcel資料「クラウドリフトPoC設計リスクチェックリスト」も添付します。</p>


<p class="wp-block-paragraph">PoC計画、設計レビュー、リスク洗い出しのたたき台として使えるようにしています。</p>


<h2 class="wp-block-heading"><span id="toc2">6. ジョブ管理・アプリ配布</span></h2>


<p class="wp-block-paragraph">Lambdaで起動できることと、ジョブ管理を置き換えられることは違う</p>


<p class="wp-block-paragraph">クラウドリフトでは、ジョブ管理が軽く見られることがあります。</p>


<p class="wp-block-paragraph">EventBridgeでスケジュール実行できる。<br />
Lambdaで処理を起動できる。<br />
Step Functionsで処理の流れを組める。<br />
Systems Managerでコマンドを実行できる。<br />
ECSやBatchでコンテナ処理を流せる。</p>


<p class="wp-block-paragraph">確かに、クラウド上で処理を起動する手段は多くあります。</p>


<p class="wp-block-paragraph">しかし、既存システムのジョブ管理は、単なる定時実行ではないことがあります。</p>


<p class="wp-block-paragraph">たとえば、JP1/AJS3のようなジョブ管理製品を使っている環境では、ジョブネット、先行後続関係、異常時停止、再実行、保留、手動起動、カレンダー、休日、締め日、排他制御、通知、実行証跡、運用手順が一体になっていることがあります。</p>


<p class="wp-block-paragraph">ここでJP1/AJS3を挙げているのは、特定製品の使い方を説明したいからではありません。</p>


<p class="wp-block-paragraph">既存の業務ジョブでは、ジョブ管理製品が単なるスケジューラではなく、業務運用そのものを支えていることがある、という話です。</p>


<p class="wp-block-paragraph">日次処理が終わったら、後続の集計処理を流す。<br />
月末だけ別の処理を追加する。<br />
締め日が休日なら前営業日にずらす。<br />
異常終了したら、特定のリカバリポイントから再実行する。<br />
二重起動を防ぐ。<br />
一部の処理だけ保留し、運用判断後に再開する。<br />
失敗時には監視へ通知し、運用手順書に沿って復旧する。</p>


<p class="wp-block-paragraph">こうした制御まで含めて、業務ジョブは成立しています。</p>


<p class="wp-block-paragraph">そのため、PoCで見るべきなのは、「AWS上で処理を起動できるか」ではありません。</p>


<p class="wp-block-paragraph">既存ジョブネットの依存関係、異常時の止まり方、再実行単位、通知、証跡、運用手順まで含めて、クラウド上でも業務として回せるかです。</p>


<p class="wp-block-paragraph"><strong>リトライと再実行は同じではない</strong></p>


<p class="wp-block-paragraph">クラウドサービスでは、失敗時のリトライを簡単に設定できることがあります。</p>


<p class="wp-block-paragraph">しかし、リトライと業務上の再実行は同じではありません。</p>


<p class="wp-block-paragraph">一時的な通信エラーで、同じ処理をもう一度実行すればよい場合もあります。</p>


<p class="wp-block-paragraph">一方で、途中までデータを更新した後に失敗した場合、単純にリトライすると、二重更新、二重送信、二重集計になることがあります。</p>


<p class="wp-block-paragraph">たとえば、ファイルを取り込んだ後にDB更新で失敗した場合。<br />
DB更新後に帳票出力で失敗した場合。<br />
外部システムへ送信した後にステータス更新で失敗した場合。<br />
前半の処理で一時ファイルを作成し、後半の処理でそれを後続システムへ渡す場合。</p>


<p class="wp-block-paragraph">このような処理では、どこまで完了しているのかを確認し、どの地点から再開するのかを決める必要があります。</p>


<p class="wp-block-paragraph">ジョブ管理製品では、ジョブ単位、ジョブネット単位、ステップ単位で、再実行や保留の考え方が整理されていることがあります。</p>


<p class="wp-block-paragraph">これをクラウド側のリトライ設定だけで置き換えると、業務データの整合性を壊す可能性があります。</p>


<p class="wp-block-paragraph">PoCでは、異常終了を意図的に発生させ、どこで止まるのか、どこから再実行できるのか、二重起動や二重更新を防げるのかを確認する必要があります。</p>


<p class="wp-block-paragraph">ここを確認しないまま「Lambdaで起動できた」「Step Functionsで流れを組めた」と判断すると、構築後のジョブ設計や運用設計で手戻りになります。</p>


<p class="wp-block-paragraph"><strong>ジョブカレンダーは、単なる時刻指定ではない</strong></p>


<p class="wp-block-paragraph">ジョブ管理で見落としやすいのが、カレンダーです。</p>


<p class="wp-block-paragraph">毎日2時に起動する。<br />
毎週月曜に起動する。<br />
毎月1日に起動する。</p>


<p class="wp-block-paragraph">この程度であれば、クラウド側のスケジュール機能でも表現しやすいかもしれません。</p>


<p class="wp-block-paragraph">しかし、業務システムのジョブは、単純な時刻指定だけで動いているとは限りません。</p>


<p class="wp-block-paragraph">営業日だけ動かす。<br />
休日なら前営業日に寄せる。<br />
月末営業日に締め処理を動かす。<br />
特定の祝日だけ別処理にする。<br />
年末年始だけ停止する。<br />
決算月だけ処理順序を変える。</p>


<p class="wp-block-paragraph">こうした運用が、既存のジョブカレンダーや運用手順に組み込まれていることがあります。</p>


<p class="wp-block-paragraph">クラウド側でスケジュール実行できることと、既存の業務カレンダーをそのまま表現できることは違います。</p>


<p class="wp-block-paragraph">特に、月末、締め日、休日、営業日判定が絡む処理は、単純なcron式や固定スケジュールだけでは表現しきれないことがあります。</p>


<p class="wp-block-paragraph">PoCでは、通常日の起動確認だけでなく、月末、休日、締め日、年末年始など、業務上意味のある日付条件でジョブが期待どおりに動くかを確認する必要があります。</p>


<p class="wp-block-paragraph"><strong>ジョブ実行サーバーは、クラウド上で同じ名前とは限らない</strong></p>


<p class="wp-block-paragraph">前編の可用性・信頼性でも触れたAuto Scaling後の登録問題は、ジョブ管理にも直結します。</p>


<p class="wp-block-paragraph">オンプレでは、ジョブ管理マネージャーとエージェントの関係が、固定されたホスト名やIPアドレスを前提に設計されていることがあります。</p>


<p class="wp-block-paragraph">ジョブ管理マネージャーは、特定のジョブを、特定のジョブ実行サーバーに投入する。<br />
そのジョブ実行サーバーには、エージェントが導入されている。<br />
ホスト名、IPアドレス、エージェント名、監視対象名が、長期間変わらない前提で運用されている。</p>


<p class="wp-block-paragraph">オンプレでは、この前提が自然に成立していたかもしれません。</p>


<p class="wp-block-paragraph">しかし、AWSでは、Auto Scalingや復旧方式によってEC2が入れ替わることがあります。</p>


<p class="wp-block-paragraph">AMIから新しいEC2を作る。<br />
User Dataやcloud-initで初期設定を流す。<br />
ホスト名を付与する。<br />
DNSに登録する。<br />
監視エージェントを起動する。<br />
ジョブ管理エージェントを起動する。</p>


<p class="wp-block-paragraph">ここで順序や登録内容がずれると、EC2は起動しているのに、ジョブ実行対象として正しく認識されないことがあります。</p>


<p class="wp-block-paragraph">ホスト名が期待どおりに戻っていない。<br />
DNS登録が更新されていない。<br />
ジョブ管理エージェントが古い名前で登録されている。<br />
監視対象名とジョブ実行対象名がずれている。<br />
Auto Scalingで作られたEC2が、ジョブ投入先として登録されていない。</p>


<p class="wp-block-paragraph">この状態では、サーバーは動いていても、業務ジョブは流せません。</p>


<p class="wp-block-paragraph">クラウドでは、EC2が起動すれば終わりではありません。</p>


<p class="wp-block-paragraph">ホスト名、DNS登録、監視対象、ジョブ実行対象、エージェント登録まで含めて、業務システムの構成要素として戻っているかを見る必要があります。</p>


<p class="wp-block-paragraph"><strong>オンプレ側ジョブ管理とAWS側処理が混在する期間もある</strong></p>


<p class="wp-block-paragraph">クラウドリフトでは、すべてのジョブを一度にAWSネイティブへ置き換えられるとは限りません。</p>


<p class="wp-block-paragraph">オンプレ側のジョブ管理製品から、AWS上のEC2やLambdaを起動する。<br />
AWS側の処理完了を、オンプレ側の後続ジョブへ返す。<br />
一部のバッチは既存ジョブ管理に残し、一部の処理だけStep FunctionsやEventBridgeへ寄せる。</p>


<p class="wp-block-paragraph">このような混在期間が発生することがあります。</p>


<p class="wp-block-paragraph">このとき問題になるのは、単なる通信ではありません。</p>


<p class="wp-block-paragraph">ジョブの完了をどう判定するのか。<br />
異常終了コードをどう返すのか。<br />
タイムアウトをどちらで管理するのか。<br />
AWS側でリトライした結果を、オンプレ側ジョブ管理へどう伝えるのか。<br />
オンプレ側で再実行した場合、AWS側の処理が二重に動かないか。<br />
ネットワーク断や認証エラーを、業務異常として扱うのか、基盤異常として扱うのか。</p>


<p class="wp-block-paragraph">こうした運用上の境界を決めないままPoCを終えると、後工程でジョブ設計と運用設計が止まります。</p>


<p class="wp-block-paragraph">PoCでは、オンプレ側ジョブ管理とAWS側処理が混在する前提で、起動、完了判定、異常通知、再実行、タイムアウト、証跡を確認する必要があります。</p>


<p class="wp-block-paragraph"><strong>アプリ配布もPoC対象になる</strong></p>


<p class="wp-block-paragraph">ジョブ管理と合わせて、アプリケーション配布も確認が必要です。</p>


<p class="wp-block-paragraph">オンプレでは、配布専用ソフト、共有フォルダ、運用スクリプト、手順書を使って、アプリケーション資材、設定ファイル、バッチ、帳票定義、ジョブ定義を各サーバーへ配布していることがあります。</p>


<p class="wp-block-paragraph">クラウド移行後に、これをどう扱うのかを決めなければなりません。</p>


<p class="wp-block-paragraph">AMIに含めるのか。<br />
起動時にS3から取得するのか。<br />
User Dataやcloud-initで展開するのか。<br />
CodeDeployやSystems Managerを使うのか。<br />
既存の配布ツールをそのまま使うのか。<br />
一部でCI/CD基盤を使う場合は、CodePipeline、CodeBuild、GitHub Actionsなどとどう接続するのか。<br />
コンテナ化を伴う移行であれば、ECR上のイメージタグやデプロイ対象の世代をどう管理するのか。<br />
ジョブ定義や設定ファイルの世代管理をどこで行うのか。</p>


<p class="wp-block-paragraph">特にAuto ScalingやEC2再作成を使う場合、あとから作られたEC2にも、正しい資材が反映される必要があります。</p>


<p class="wp-block-paragraph">既存EC2には最新版が配布されている。<br />
しかし、新しく作られたEC2には古い資材しかない。<br />
設定ファイルだけ世代が違う。<br />
バッチは新しいが、ジョブ定義が古い。<br />
ロールバックしたつもりでも、一部のEC2だけ前の状態に戻っていない。</p>


<p class="wp-block-paragraph">このような状態になると、クラウド上ではサーバーが起動していても、業務処理としては正しく動きません。</p>


<p class="wp-block-paragraph">アプリ配布は、単なるリリース作業ではありません。</p>


<p class="wp-block-paragraph">クラウドリフトでは、復旧方式、Auto Scaling、ジョブ実行対象、監視対象、ロールバック手順とつながる設計論点です。</p>


<p class="wp-block-paragraph">PoCでは、初回配布だけでなく、更新、切り戻し、EC2再作成後の自動反映、世代管理、差分確認まで見る必要があります。</p>


<p class="wp-block-paragraph"><strong>PoCで見るべき観点</strong></p>


<p class="wp-block-paragraph"><strong>既存ジョブの踏襲と代替の整理</strong></p>


<p class="wp-block-paragraph">単純な定時実行なのか、ジョブネット、依存関係、異常時停止、再実行、保留まで必要なのか</p>


<p class="wp-block-paragraph">EventBridge、Lambda、Step Functions、Systems Manager、ECS、Batchで代替できる処理と、既存ジョブ管理製品に残す処理を切り分けているか</p>


<p class="wp-block-paragraph"><strong>異常系・カレンダー運用の担保</strong></p>


<p class="wp-block-paragraph">リトライと業務上の再実行を区別しているか</p>


<p class="wp-block-paragraph">異常終了時に、どこで止まり、どこから再実行できるか</p>


<p class="wp-block-paragraph">二重起動、二重更新、二重送信を防ぐ仕組みがあるか</p>


<p class="wp-block-paragraph">ジョブカレンダー、休日、月末、締め日、営業日判定をどう扱うか</p>


<p class="wp-block-paragraph"><strong>動的環境・ハイブリッド運用の壁</strong></p>


<p class="wp-block-paragraph">オンプレ側ジョブ管理とAWS側処理が混在する期間の起動、完了判定、異常通知、タイムアウトを整理しているか</p>


<p class="wp-block-paragraph">Auto ScalingやEC2再作成後に、ホスト名、DNS登録、監視対象、ジョブ実行対象、エージェント登録が正しく戻るか</p>


<p class="wp-block-paragraph"><strong>リリースと資材統制</strong></p>


<p class="wp-block-paragraph">アプリケーション資材、設定ファイル、バッチ、帳票定義、ジョブ定義をどの方式で配布するか</p>


<p class="wp-block-paragraph">新規起動したEC2にも、最新の資材と設定が自動で反映されるか</p>


<p class="wp-block-paragraph">リリース失敗時に、どの単位でロールバックできるか</p>


<p class="wp-block-paragraph">ジョブ管理やアプリ配布は、クラウド化で自動的に整理されるものではありません。</p>


<p class="wp-block-paragraph">AWS上で処理を起動できることと、既存業務のジョブ運用を置き換えられることは違います。</p>


<p class="wp-block-paragraph">ジョブの依存関係、異常時の再実行、カレンダー、実行対象、配布方式、ロールバックまで含めて確認して、初めてクラウドリフトPoCとして意味があります。</p>


<p class="wp-block-paragraph">ここまで見たジョブ管理・アプリ配布は、運用方式の問題です。</p>


<p class="wp-block-paragraph">ただし、クラウドリフトで後工程に効いてくる論点は、これだけではありません。</p>


<p class="wp-block-paragraph">権限設計、クロスアカウントアクセス、ライセンス条件、DB・OS・ミドルウェアの互換性、そしてコスト管理も、PoC段階で見ておかないと設計後半で手戻りになります。</p>


<h2 class="wp-block-heading"><span id="toc3">7. セキュリティ・アクセス管理</span></h2>


<p class="wp-block-paragraph">IAMロールでアクセスできることと、業務上安全に統制できることは違う</p>


<p class="wp-block-paragraph">クラウドリフトでは、セキュリティ設計も後回しにされがちです。</p>


<p class="wp-block-paragraph">EC2からS3にアクセスできた。<br />
LambdaからRDSに接続できた。<br />
IAMロールを付けたら処理が動いた。<br />
踏み台経由でサーバーにログインできた。<br />
KMSで暗号化したデータを復号できた。</p>


<p class="wp-block-paragraph">こうした確認は必要です。</p>


<p class="wp-block-paragraph">しかし、それだけでは、業務システムとして安全に運用できるとは言えません。</p>


<p class="wp-block-paragraph">クラウドでは、権限を付ければ多くのことができます。</p>


<p class="wp-block-paragraph">だからこそ、誰に、どの権限を、どの範囲で、どの期間だけ与えるのかを設計しなければなりません。</p>


<div style="margin: 16px 0;"><a style="display: block; border: 1px solid #1D9E75; border-radius: 6px; padding: 12px 16px; text-decoration: none; color: #333; background: #f9fffc;" href="https://note.com/k_s7906/n/n1755cb2f2d25"><br />
<span style="font-size: 12px; color: #1d9e75;">続きはnoteで読む ¥500</span><br />
<span style="font-size: 14px; font-weight: bold;">セキュリティ以降（リスク7〜10）の解説はこちら →</span><br />
</a></div>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/cloudlift-poc-risk-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Vモデルは古くない｜設計とテストをつなぐ品質保証の考え方</title>
		<link>https://sys-univ.com/dev/v-model-quality-assurance/</link>
					<comments>https://sys-univ.com/dev/v-model-quality-assurance/#respond</comments>
		
		<dc:creator><![CDATA[ナギ]]></dc:creator>
		<pubDate>Wed, 14 Dec 2022 03:41:49 +0000</pubDate>
				<category><![CDATA[システム開発]]></category>
		<guid isPermaLink="false">https://sys-univ.com/?p=1882</guid>

					<description><![CDATA[※この記事は途中まで無料でお読みいただけます。続きはnote（有料）で公開しています。 はじめに 「Vモデルってウォーターフォール時代の話でしょ？」 こう話すエンジニアに、現場でたびたび出会います。アジャイルやスクラムが [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>※この記事は途中まで無料でお読みいただけます。続きはnote（有料）で公開しています。</p>
<p class="wp-block-heading"><strong>はじめに</strong></p>


<p class="wp-block-paragraph">「Vモデルってウォーターフォール時代の話でしょ？」</p>


<p class="wp-block-paragraph">こう話すエンジニアに、現場でたびたび出会います。アジャイルやスクラムが当たり前になった今、Vモデルは時代遅れだと思われがちです。しかし、これは大きな誤解です。</p>


<p class="wp-block-paragraph">Vモデルは特定の開発手法の話ではありません。<strong>要件定義や設計で決めたことを、対応するテストで確認する</strong>という、品質保証の基本的な考え方です。この考え方を持てているかどうかが、システム開発の品質を大きく左右します。</p>


<p class="wp-block-paragraph">この記事では、システム基盤開発を例にとりながら、Vモデルの本質をテスト工程の視点から解説します。教科書的な図の説明ではなく、現場でどう使うかに焦点を当てています。</p>


<h2 class="wp-block-heading"><span id="toc1">Vモデルとは何か</span></h2>


<p class="wp-block-paragraph">Vモデルとは、開発工程とテスト工程を対応づけて考えるモデルです。</p>


<p class="wp-block-paragraph">名前の由来は見た目の形にあります。左側に開発工程が並び、右側にテスト工程が並ぶ。その形がアルファベットの「V」に見えることから、Vモデルと呼ばれています。</p>


<p class="wp-block-paragraph">ただし、大事なのは形ではありません。本質は次の一文に集約されます。</p>


<p class="wp-block-paragraph"><strong>「ある工程で決めたことは、対応するテスト工程で確認する」</strong></p>


<p class="wp-block-paragraph">このイメージを図にすると、次のようになります。</p>


<figure id="40955f93-5a6b-4757-b4c8-400c817d9ebd" class="wp-block-image"><a href="https://assets.st-note.com/img/1779342169-CWk0uRZEONXJmFDnvVlr8tjG.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779342169-CWk0uRZEONXJmFDnvVlr8tjG.png?width=1200" alt="画像" /></a></figure>


<p class="wp-block-paragraph">ただし、工程の名称や対応関係はプロジェクトごとに異なります。ここで示すのはあくまで一例です。その前提で、システム基盤の開発に当てはめると次のような対応関係になります。</p>


<ul id="5b36c14c-333e-4bd4-8384-5c53156acc36" class="wp-block-list">
	<li>環境定義（実際の設定値・パラメータ）→ 単体テスト</li>


	<li>詳細設計（製品ごとの設計内容）→ 結合テスト1（基盤に閉じた接続確認）</li>


	<li>基本設計（処理方式・システム構成・採用製品）→ 結合テスト2（プロトタイプアプリを用いた確認）</li>


	<li>要件定義・運用設計（可用性・性能・セキュリティ・運用要件など）<br />
→ システムテスト・運用テスト・受入テスト</li>
</ul>


<p class="wp-block-paragraph">結合テストを2段階に分けているのは、確認の観点が異なるからであり、教科書的なVモデルをそのまま当てはめたものではなく、基盤開発の成果物粒度に合わせた整理です。</p>


<p class="wp-block-paragraph">結合テスト1は基盤に閉じた機器間・システム間の接続確認です。結合テスト2はプロトタイプの業務アプリケーションを使い、基本設計で定めた処理方式や構成が実際に機能するかを確認します。基本設計の内容を検証するには、アプリが一部でも動く状態でないと確認できないため、この段階にアプリが入ってきます。</p>


<p class="wp-block-paragraph">システムテストは「総合テスト」とも呼ばれ、基盤とアプリケーションが合流して行う最終的な全体検証です。プロジェクトによっては、運用テストや受入テストがシステムテストの一部として扱われることもあれば、システムテスト後の別工程として実施されることもあります。なお、運用テストは手順・承認フローの確認、受入テストはお客様がシステムを本番として受け入れるかの判断が目的であり、両者は異なります。</p>


<p class="wp-block-paragraph">この対応関係が崩れると、品質の抜け漏れが発生します。「要件定義で決めたのにテストしていない」「テストしたが根拠となる設計が存在しない」。そういう状況を防ぐための考え方が、Vモデルです。</p>


<h2 class="wp-block-heading"><span id="toc2">なぜ段階的なテストが必要なのか</span></h2>


<p class="wp-block-paragraph">テストを「最後に一度まとめてやればいい」と思っている人が、現場に一定数います。完成したシステムに対して動作確認をすれば十分、という考え方です。</p>


<p class="wp-block-paragraph">しかし、これには重大なリスクがあります。</p>


<p class="wp-block-paragraph">システムは複数の要素の集合で成り立っています。クライアント端末、ネットワーク、ネットワーク機器、サーバ、ストレージ。これらが組み合わさって、一つのシステムとして動作します。</p>


<p class="wp-block-paragraph">この状態で一気にテストしようとすると、何が起きるでしょうか。</p>


<p class="wp-block-paragraph"><strong>問題1：原因の特定に時間がかかる</strong></p>


<p class="wp-block-paragraph">想定どおりに動作しなかった場合、どこが悪いのかを特定するのが困難になります。ネットワークの設定ミスなのか、サーバのパラメータが間違っているのか、アプリケーションの処理が悪いのか。複数の要素が絡み合うため、原因の切り分けに膨大な時間がかかります。</p>


<p class="wp-block-paragraph">本来であれば、単体テストで「このサーバの設定値は正しいか」を確認し、結合テストで「このサーバとあのサーバは正常に通信できるか」を確認する。問題が発生したときに、どの段階のどの要素が原因かを絞り込みやすい状態を作っておくことが重要です。</p>


<p class="wp-block-paragraph"><strong>問題2：たまたま動いて終わってしまう</strong></p>


<p class="wp-block-paragraph">逆のパターンも怖いです。本来は網羅すべき条件を確認していないのに、たまたまテストが通ってしまうことがあります。</p>


<p class="wp-block-paragraph">例えば、単体・結合テストでフェイルオーバーの検証をスキップし、システムテストでも正常系しか確認しなかったとします。システムが正常に動いているうちは問題が表面化しません。しかし本番で障害が発生したとき、初めて「フェイルオーバーが機能しない」と発覚する。これは最悪のシナリオです。</p>


<p class="wp-block-paragraph">単体テスト、結合テスト、システムテストと段階を踏むことで、確認すべき項目を体系的に洗い出すことができます。</p>


<p class="wp-block-paragraph"><strong>問題3：テスト項目が後から書けない</strong></p>


<p class="wp-block-paragraph">設計内容が曖昧なまま進むと、テスト工程で「何を確認すれば合格なのか」がわからなくなります。</p>


<p class="wp-block-paragraph">「バックアップを取得すること」とだけ書かれていた場合、何をテストすればよいでしょうか。取得対象は何か。何時に取得するのか。何世代保持するのか。何時間以内に終わる必要があるのか。これが決まっていなければ、テスト項目に落とせません。</p>


<p class="wp-block-paragraph">テスト項目は、テスト工程で突然生まれるものではありません。要件定義や設計で決めた内容から導き出されるものです。</p>


<p class="wp-block-paragraph">そして、本来その工程で検出すべきバグが後続工程で発見されることを「すり抜け」と呼びます。</p>


<p class="wp-block-paragraph">これは単なる発見タイミングのずれではありません。単体テストで見つかるべき設定ミスが結合テストやシステムテストで出てきた場合、「他にも同じ観点でのすり抜けがあるのではないか」という疑義が生じます。結果として、同じ観点の横並び確認が必要になり、場合によっては設計書、設定値、テスト項目の見直しが全体に波及します。</p>


<figure id="70582d66-3417-46cc-9221-f5841750b367" class="wp-block-image"><a href="https://assets.st-note.com/img/1779345872-uVb52GTPpMrdYWFnvE1UgHkc.png?width=2000&amp;height=2000&amp;fit=bounds&amp;quality=85"><img decoding="async" src="https://assets.st-note.com/img/1779345872-uVb52GTPpMrdYWFnvE1UgHkc.png?width=1200" alt="画像" /></a>
<figcaption class="wp-element-caption">図：どの工程で適切に不具合を摘出できたか、どこですり抜けたかを可視化するイメージ</figcaption>
</figure>


<p class="wp-block-paragraph">品質報告の場では、T型マトリックスという管理表が使われることがあります。</p>


<p class="wp-block-paragraph">一般的には、縦軸に「実際に不具合を発見した工程」、横軸に「本来その不具合を摘出すべき工程」を置き、不具合がどの工程で検出され、どこですり抜けたかを可視化するものです。</p>


<p class="wp-block-paragraph">対角線上に並ぶものは、本来の工程で適切に検出できた不具合です。一方、後続工程側にずれて計上されるものは、前工程で摘出できずに流出した不具合、つまりすり抜けを意味します。</p>


<p class="wp-block-paragraph">たとえば、本来は単体テストで摘出すべき設定ミスが、結合テストやシステムテストで発見された場合、それは後工程へのすり抜けとして扱われます。このマトリックスを見れば、どの工程で検出力が弱いのか、どの工程で不具合が後ろ倒しになっているのかが一目でわかります。</p>


<p class="wp-block-paragraph">「単体テストで検出すべき不具合が、なぜ結合テストやシステムテストまで残っていたのか」。その問いに答えられるかどうかが、テスト設計や品質分析の力を問われるポイントです。</p>


<p class="wp-block-paragraph">テスト工程を段階的に設計し、各工程で検出すべき項目を明確にしておくことは、すり抜けリスクを下げるための最も基本的な手立てです。すり抜けの詳細なメカニズムと対策については、テスト編で改めて解説します。</p>


<h2 class="wp-block-heading"><span id="toc3">バックアップ4時間以内という要件を例に考える</span></h2>


<p class="wp-block-paragraph">ここで、具体的な例を見てみましょう。お客様と次のような非機能要件を合意したとします。</p>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>DBおよびログのバックアップ時間は4時間以内とする</strong></p>
</blockquote>


<p class="wp-block-paragraph">一見すると、シンプルな要件に見えます。しかし、この要件を実現し、テストで確認するためには、複数の工程にわたる設計が必要です。</p>


<p class="wp-block-paragraph"><strong>要件定義の段階</strong></p>


<p class="wp-block-paragraph">この段階では「4時間以内」という目標を合意します。具体的な方式はまだ決まっていません。重要なのは、この数字が「何の性能要件か」を明確にしておくことです。性能・拡張性の要件であり、後工程のシステムテストで確認する項目です。</p>


<p class="wp-block-paragraph"><strong>基本設計の段階</strong></p>


<p class="wp-block-paragraph">要件を実現するための方式を決めます。</p>


<ul id="d3ae3679-d9c6-47e1-bb1c-a9755fe9ff11" class="wp-block-list">
	<li>バックアップ対象は何か（DBのみか、ログも含むか）</li>


	<li>取得先はどこか（サーバ内ディスクか、共有ストレージか、クラウドストレージか）</li>


	<li>取得経路はどうするか（専用VLANを用意するか、本番ネットワークを使うか）</li>


	<li>本番処理と同じ時間帯に実行しても問題ないか</li>
</ul>


<p class="wp-block-paragraph">これらを決めることで、システム構成と採用製品が固まります。</p>


<p class="wp-block-paragraph"><strong>詳細設計の段階</strong></p>


<p class="wp-block-paragraph">採用する製品やミドルウェアを前提に、具体的な処理内容を決めます。</p>


<ul id="18fb1ea4-a6bc-42c9-8269-8d65d47ceea5" class="wp-block-list">
	<li>バックアップジョブをどう構成するか</li>


	<li>どの順番で取得するか</li>


	<li>圧縮・暗号化はするか</li>


	<li>エラー時の再実行ロジックはどうするか</li>


	<li>失敗時の通知先はどこか</li>
</ul>


<p class="wp-block-paragraph"><strong>環境定義の段階</strong></p>


<p class="wp-block-paragraph">実際のパラメータを確定します。</p>


<ul id="20ec8437-9a5e-4981-a91b-372f8be3521c" class="wp-block-list">
	<li>バックアップ対象のフォルダパス・ファイルパス</li>


	<li>保存先のパス</li>


	<li>実行スケジュール</li>


	<li>保持世代数</li>


	<li>タイムアウト値</li>
</ul>


<p class="wp-block-paragraph"><strong>テストの段階</strong></p>


<p class="wp-block-paragraph">ここまで設計が積み上がって初めて、テスト項目が具体的に書けます。</p>


<ul id="a1b075bf-67ed-4755-9f75-88f55ffbff16" class="wp-block-list">
	<li>本当に4時間以内に完了するか</li>


	<li>対象ファイルに漏れはないか</li>


	<li>バックアップ失敗時にアラートが上がるか</li>


	<li>リストアできるか</li>


	<li>本番相当のデータ量でも時間内に終わるか</li>
</ul>


<p class="wp-block-paragraph">Vモデルを理解していないと、「要件に4時間以内と書いてある」「バックアップジョブは作った」「テストで何となく動いた」で終わってしまいます。しかし現場では、それでは足りません。</p>


<p class="wp-block-paragraph">ここまでは、Vモデルの基本的な考え方を整理しました。<br />
以降では、現場でこの考え方をどう使うか、工程ごとの留意点、よくある失敗パターン、運用テストの位置づけまで踏み込んで整理します。</p>

<div style="margin: 16px 0;"><a style="display: block; border: 1px solid #1D9E75; border-radius: 6px; padding: 12px 16px; text-decoration: none; color: #333; background: #f9fffc;" href="https://note.com/k_s7906/n/n5dffd09153a8"> <span style="font-size: 12px; color: #1d9e75;">続きはnoteで読む ¥500</span><br />
<span style="font-size: 14px; font-weight: bold;">工程ごとの留意点・よくある失敗パターン・運用テストの位置づけの解説はこちら →</span> </a></div>]]></content:encoded>
					
					<wfw:commentRss>https://sys-univ.com/dev/v-model-quality-assurance/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
