<?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>設計  |  NORE（ノア：ノー・リタイアメント）</title>
	<atom:link href="https://genzo.jp/tag/design/feed/" rel="self" type="application/rss+xml" />
	<link>https://genzo.jp</link>
	<description>デジタル力で生き抜く！</description>
	<lastBuildDate>Mon, 26 Aug 2024 03:40:55 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.5</generator>

<image>
	<url>https://genzo.jp/wp-content/uploads/2023/08/cropped-genzo_512-32x32.png</url>
	<title>設計  |  NORE（ノア：ノー・リタイアメント）</title>
	<link>https://genzo.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href=""/>	<item>
		<title>サーバーの監視設定は、アプリケーションではログが重要になる</title>
		<link>https://genzo.jp/monitoring_design/</link>
		
		<dc:creator><![CDATA[源田 公平]]></dc:creator>
		<pubDate>Thu, 09 Aug 2018 05:18:55 +0000</pubDate>
				<category><![CDATA[エンジニア]]></category>
		<category><![CDATA[設計]]></category>
		<guid isPermaLink="false">https://genzo.jp/?p=147</guid>

					<description><![CDATA[サーバーの監視設定では、インフラの場合はひな形化されていますが、アプリケーションの場合は個別にログを出力して、重要度に分けて監視することが必要になります。サーバーの監視設定はアプリケーションではログの設計が重要です。]]></description>
										<content:encoded><![CDATA[<div class="summary_box">
サーバーの監視設定では、インフラの場合はひな形化されていますが、アプリケーションの場合は個別にログを出力して、重要度に分けて監視することが必要になります。
</div>
<h3>動いてないと利用者に言われるようでは失格</h3>
<p>サーバーやDBなど構築したシステムが正常に動作していることを保証することは、SLA上必要になります。</p>
<p>SLAとは、システムのサービス水準を示すもので、サービスの品質保証がどこまで行われるかという基準です。</p>
<p>運用というのは、このSLAを守るために日々頑張るということなのです。</p>
<p>そのために、システムが問題なく動いていることを常に監視しておく必要があります。</p>
<p><strong>監視が行き届かなくて、利用したお客様から「おかしいぞ」と通知されるまで気づかないようではシステムとしては失格といわれても仕方がありません。</strong></p>
<p>そのためにも、システムを自動で監視する仕組みが必要です。</p>
<p>監視をして異常が発見されたら、メールで通知したり、重要なものは主たる担当者の携帯電話に直接送ることで対応を行います。</p>
<p><strong>障害が自動で修復できるならいいのですが、そうならないことがほとんどですので、最後は人が対処せざるを得ません。</strong></p>
<p>「人」が頼りになるわけですが、それ以前のところをどれだけシステム的に自動で行うかが大事になります。</p>
<p>すべてのことを自動化することはできないので、人が定期的に見に行って監視することもありますが、それを毎日や毎時の手順として実施することは結構たいへんなのです。</p>
<p>そのためにも、監視システムを上手に使って自動で検知する仕組みを入れることがシステムの安定運用には欠かせません。</p>
<h3>監視によって日々の運用を支える</h3>
<p>提供しているサービスが問題なく動作していることを保証していくのが日々の運用作業になります。</p>
<p>それを支える重要な役割が監視にあります。監視はつまりは「見張り」の役目です。</p>
<p>監視に引っかかると、保守の担当者にメールで通知されます。</p>
<p>保守の担当者は、SLAの時間中はそのメールを常に見ておいて、一つ一つの通知が問題あるのかないのか、調べて対応することが必要になります。</p>
<p><strong>通知されると言っても、通知の内容にはレベルがあります。</strong></p>
<ul>
<li>今すぐ対応が必要なもの</li>
<li>なるべく速く対応が必要なもの</li>
<li>単なる警告で迅速な判断が求められないもの</li>
</ul>
<p>といった大きな区分けがされます。</p>
<p><strong>これらをしっかりと設計段階から計画して監視できる仕組みを作り込んでおくことが必要です。</strong></p>
<h3>インフラはメモリやディスクの空き容量など</h3>
<p>サーバーの場合は、いろいろな判断基準がありますが、メモリの使用量が一定の割合を超えている、ディスクの空き容量が一定割合を下回ったなどが判断の代表例です。</p>
<p>メモリの使用量は、たとえば80%を越えたら情報として通知し、90%を越えたらアラートを上げるなどのように設定します。</p>
<p>ある処理を行うと急激にメモリを食う、ディスクを消費するような場合、その瞬間的な値を考慮して境界値を設定していくことになります。</p>
<p>これらはそのサーバーにどれだけのサービスを搭載し動作させるかにも依存します。</p>
<p><strong>最初は想定値で設定し、運用しながら適正値に変更していきます。</strong></p>
<p>実質的に問題のない通知の頻度が多いなら、監視の基準を下げてもいいでしょうし、通知されたときに大至急の対処が必要なら、通知の判定を厳しい方に見直すことも必要になるのです。</p>
<h3>アプリケーションはログ出力が大事</h3>
<p>インフラ的には監視内容が共通化されていたりあらかじめ準備されているもので事足りるのですが、個別のアプリケーションの監視は機能ごとに作り込んでいく必要があります。</p>
<p><strong>そのとき監視の起点になるのがアプリケーションが出力するログです。</strong></p>
<p>たとえばバッチのログであれば、処理を開始した、バッチのデータの事前検証をした、処理を開始した、どこにどんなエラーが発生した、などを出力していきます。</p>
<p>その際に、監視システムでピックアップして通知するためのキーワードなどを仕込むわけです。</p>
<p><strong>単なる情報(Information)なのか、注意が必要な警告(Warning)なのか、対策が必要なエラー(Error)なのかそういった分類をするのです。</strong></p>
<p>そういった設計をすることで、監視機能での検知が可能になるのです。</p>
<p>単なるログ出力ですが、そのログを情報の起点として障害通知につなげるので、その設計はとても大事なのです。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>運用設計のコツは？システムの都合を押しつけないことが大事</title>
		<link>https://genzo.jp/daily_operation/</link>
		
		<dc:creator><![CDATA[源田 公平]]></dc:creator>
		<pubDate>Wed, 08 Aug 2018 07:02:21 +0000</pubDate>
				<category><![CDATA[エンジニア]]></category>
		<category><![CDATA[設計]]></category>
		<guid isPermaLink="false">https://genzo.jp/?p=144</guid>

					<description><![CDATA[運用設計のコツは、システムとして自動化できないものをすべて運用に任せるような安易な考え方をしないことです。運用コストがかかったり、運用のミスでシステムに影響を及ぼすこともあります。運用設計のコツはシステム全体でコストや手間を見る必要があります。]]></description>
										<content:encoded><![CDATA[<div class="summary_box">
運用設計のコツは、システムとして自動化できないものをすべて運用に任せるような安易な考え方をしないことです。運用コストがかかったり、運用のミスでシステムに影響を及ぼすこともあります。</p>
</div>
<p>### 「運用」とは何か？</p>
<p>「運用」って結構曖昧なことばなのですが、</p>
<p>**「運用」とは、Webサービスなどが日々問題なく動作するためにシステムの異常な状態にならないようにしていくことです。**</p>
<p>Webサービスなど、一旦動かしはじめたら定期メンテナンスのようなタイミングが来るまで決して止めることはありません。</p>
<p>そのくらいずっと動かし続けるものです。</p>
<p>ところが、ずっと同じように動作し続けてくれるのであれば、放っておいても問題ないのですが、ことはそんなに簡単ではありません。</p>
<p>同じように動作して欲しいのに、ときどきエラーで一部のデータが不正になったり、処理の途中で中断されたりすることが起こるのです。</p>
<p>また、**すべてを自動化することはできませんので、一部の作業を手作業で実施するようにすることもあります。**</p>
<p>Webサービスはユーザー向けに提供しますが、内部的にも同じデータを利用して処理を行ったりお客様の要望に対応したりするのです。</p>
<p>そうしたときに、システムの間違いや人為的ミスなど想定外のことが起こります。</p>
<p>そういった日常の作業をしたり、障害に対する対応をしたりするのが「運用」というものです。</p>
<p>この運用はシステムの稼働前にしっかり設計しておくことが大事なのです。</p>
<p>### 運用設計への要求</p>
<p>運用設計とはサービスが問題なく動作するために実施すべきことですので、サービスがどのように実現されるかが決まっていることが必要です。</p>
<p>ですので、**開発の工程でいうと、機能仕様が決まって、設計段階に入る頃が妥当です。**</p>
<p>たとえば、毎日あるデータを使ってDBを更新しないといけないとします。</p>
<p>ところが、この更新を自動化するには手間がかかるので、簡単なスクリプトを作って簡略化はするけれども完全な自動化まではできないとします。</p>
<p>こういうとき、これを「運用」で実施しようとプロジェクトで決定されるわけです。</p>
<p>運用でやるということは、すなわち人手でやるということです。</p>
<p>システム化できないから、人手でカバーして正常に動くようにしていこうというわけです。</p>
<p>完全な自動化ができない以上、運用の存在は欠かせません。</p>
<p>**システムとしては、何をシステム化し何を運用で行うか、そういったことを一つ一つ決めていくのです。**</p>
<p>### 運用に求める理由</p>
<p>運用でやろうと決めるとき、その条件は何でしょうか？</p>
<p>明確な基準を決めることは難しいと思います。</p>
<p>**システムの都合やプロジェクトの予算や納期などに影響されることがあります。**</p>
<p>運用でやるということは、何かしら人手による作業が行われることになります。</p>
<p>本来手作業でやることは少ない方がいいです。</p>
<p>人手でやれば、どんなに手順をきちんとしても間違えてしまうこともあるからです。</p>
<p>ですから、**自動化してしまうに越したことはないですが、自動化するにはその機能を開発することが必要ですが、予算が限られていてすべてのことを自動化することができないこともあります。**</p>
<p>また、どうやっても自動化できない作業もあります。</p>
<p>それ以外にも、サービスの提供を開始してから、日々実施しなければならない作業に気づき、なんとか運用でやりくりすることもあります。</p>
<p>### 運用に任せすぎるツケ</p>
<p>自動化できなかったことは運用に任せてしまおう、という考え方になるかもしれませんが、運用に任せたらすべて解決するわけじゃありません。</p>
<p>運用に回したことで後でツケとして回ってくることもあります。</p>
<p>それは、<br />
・**運用コストが高くなる**<br />
・**運用のミスがシステムに影響を与える**<br />
といったことが起こりうるからです。</p>
<p>自動化できずに運用に回してしまえば、運用の作業が増えるので、仮に今1人で実施していることができなくなってしまえば、運用の人数を2人に増やさないといけないのです。</p>
<p>1人の運用で回っているうちはいいですが、2人に増やせば当たり前ながら、運用費が2倍になるわけです。</p>
<p>運用に任すというのはコスト負担が増えるのです。</p>
<p>しかも、改善しない限り毎月ずっとお金がかかり続けることになるのです。</p>
<p>### 運用のミスが大きなロスに</p>
<p>もう一つは、運用を人手で実施することによる間違いの発生です。</p>
<p>たとえば、毎日DBから不要なデータをクリーンアップする運用があったとき、手順は決められているけれども、端末の操作ミスで本来消すべきでない<br />
データまでクリーンアップしたとします。</p>
<p>そうすると、消してしまったデータを元に戻さないといけないのです。</p>
<p>**元に戻す作業は定型化されていませんから、どうやって元に戻すかを考え、テストしそして実施しないといけないのです。**</p>
<p>**それは実はとても大きな損失になります。**</p>
<p>その間、本来やるべき運用の作業ができなくなってしまうからです。</p>
<p>システム的にも障害が発生した状態となりお客様に迷惑をかけたりすることにもつながりかねないのです。</p>
<p>こう考えると、安易に「システム化するのがたいへんだから、運用でやることにしよう！」などと軽い判断はなかなかしてはいけないのです。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
