いよいよ設計の最終項目である、メンテナンス について設計します。
すごく地味に感じるかもしれません。しかし、前から書いている通り、最初に作る期間より圧倒的に運用する期間の方が長いので、運用に関する設計は極めて重要です。
また、決めておかなければいけない内容もたくさんあります。ここを踏ん張って、確実な物を考えておきたいところです。
メンテナンス
【要件】
■手動作業を行う必要があるアップデートは毎月第一日曜日の夜間に実行する。
というわけで、急いで下記の通り設計しました。
障害監視
【要件(追加)】
・OS および MT4 に異常が発生したことをタイムリーに通知できること。
・最低限、メール通知を行えること。
・可能な限り、通知で 「障害発生時刻」 と 「障害内容」 を確認できること。
・監視間隔は、「リアルタイム」 もしくは 「パフォーマンスに影響がない間隔」 とする。
【設計】
下記の3種類で監視したいと思います。
○Amazon Cloud Pack
すごく地味に感じるかもしれません。しかし、前から書いている通り、最初に作る期間より圧倒的に運用する期間の方が長いので、運用に関する設計は極めて重要です。
また、決めておかなければいけない内容もたくさんあります。ここを踏ん張って、確実な物を考えておきたいところです。
メンテナンス
【要件】
○対象
トレードロジック / MT4 / インフラ
○環境
本番環境 / 検証環境 / 開発環境
○仕組み
工数削減 / トラブル回避
○計画
定期メンテナンス(障害対応除く)
【設計】
○インフラ / MT4
■毎週土曜 AM8時から自動アップデートを実行する。
・OS: Windows Update
・DSA: セキュリティアップデート ほか
※ただし、緊急の脆弱性などがあった場合には速やかに実行する。
【設計】
○インフラ / MT4
■毎週土曜 AM8時から自動アップデートを実行する。
・OS: Windows Update
・DSA: セキュリティアップデート ほか
※ただし、緊急の脆弱性などがあった場合には速やかに実行する。
■手動作業を行う必要があるアップデートは毎月第一日曜日の夜間に実行する。
・ MetaTrader4 アップデート(あれば。。。)
・ DSA ソフトウェアアップデート ほか
■ログ管理
・ログフォルダ自体を Google Drive を通じて転送すること。
本番/検証環境 → 開発環境
・本番環境の中でもログデータを毎朝8時にミラーリングする。(誤操作対応)
c:\log -> c:\log_backup
○ EA / Expert Analyzer (トレードロジック)
■サイクル
・土曜AM7時~日曜PM20時の間に毎週成績を評価する。
・PDCA設計で作った内容を、ログに基づいて実行します。
・期待した効果が見られない場合は、最長4週間、最低1週間 で修正を行います。
■EAリリース
・日曜PM20時~翌0時までに改修したプログラムに差し替える
・ DSA ソフトウェアアップデート ほか
■ログ管理
・ログフォルダ自体を Google Drive を通じて転送すること。
本番/検証環境 → 開発環境
・本番環境の中でもログデータを毎朝8時にミラーリングする。(誤操作対応)
c:\log -> c:\log_backup
○ EA / Expert Analyzer (トレードロジック)
■サイクル
・土曜AM7時~日曜PM20時の間に毎週成績を評価する。
・PDCA設計で作った内容を、ログに基づいて実行します。
・期待した効果が見られない場合は、最長4週間、最低1週間 で修正を行います。
■EAリリース
・日曜PM20時~翌0時までに改修したプログラムに差し替える
・Google Drive で本番環境 / 検証環境へ開発環境からEAプログラム(≠ソースコード)を配信します。
同期対象: c:\EA\ea01.ex4
・実際MT4で実行するEAは下記フォルダのEAプログラムとする。必ず上記フォルダからコピーして使用する。そのまま実行は禁止!
同期対象: c:\EA\release\ea01.ex4
・開発環境のソースコードは下記に配置します。ただし、同期対象から除外します。
ソースコード: c:\ea\src
■バージョン管理
・開発環境にて Git を使用して管理する。
・可能であれば、GitHub にてソース公開を行う。(野望)
あと、ここまで設計を色々やってきて、障害監視について設計していないことに気付きました。・実際MT4で実行するEAは下記フォルダのEAプログラムとする。必ず上記フォルダからコピーして使用する。そのまま実行は禁止!
同期対象: c:\EA\release\ea01.ex4
・開発環境のソースコードは下記に配置します。ただし、同期対象から除外します。
ソースコード: c:\ea\src
■バージョン管理
・開発環境にて Git を使用して管理する。
・可能であれば、GitHub にてソース公開を行う。(野望)
というわけで、急いで下記の通り設計しました。
障害監視
【要件(追加)】
・OS および MT4 に異常が発生したことをタイムリーに通知できること。
・最低限、メール通知を行えること。
・可能な限り、通知で 「障害発生時刻」 と 「障害内容」 を確認できること。
・監視間隔は、「リアルタイム」 もしくは 「パフォーマンスに影響がない間隔」 とする。
【設計】
下記の3種類で監視したいと思います。
○Amazon Cloud Pack
・EC2インスタンス死活監視
・リソース監視 ・・・ CPUおよび主メモリが一定時間に使用率90%以上である場合に発泡する。
・ログ監視はしない(DSAで実施する)
・Amazon SNS で Eメール通知
・記載できるだけ発生時間と障害内容を記載する
○DSA セキュリティログ監視
・イベントログ(システムログ/アプリケーションログ)を異常監視
・EAが出力するログをテキスト監視(随時設定)
→ c:\logs\mt4\ea\eaYYYYMMDD.log に出力します。
・後述するプロセス監視スクリプトが出力するログを監視して、プロセスが停止していたら発報。
※YYYYMMDDは年月日を表す数字八桁
○カスタムスクリプト
■MT4稼働監視スクリプト
・短い間隔でMT4のプロセスを監視し、停止を確認した場合にはログ出力する。
→ c:\logs\mt4\process\procYYYYMMDD.log に出力します。
■(方法が見つかれば)EA稼働確認スクリプト
・MT4上のEAを短い間隔で監視し、停止を確認した場合にはログ出力する。
→ c:\logs\mt4\ea_check\eachkYYYYMMDD.log に出力します。
※YYYYMMDDは年月日を表す数字八桁
まぁ、まだまだ粗くて、開発フェーズでまた色々細かくは出てくると思います。
・リソース監視 ・・・ CPUおよび主メモリが一定時間に使用率90%以上である場合に発泡する。
・ログ監視はしない(DSAで実施する)
・Amazon SNS で Eメール通知
・記載できるだけ発生時間と障害内容を記載する
○DSA セキュリティログ監視
・イベントログ(システムログ/アプリケーションログ)を異常監視
・EAが出力するログをテキスト監視(随時設定)
→ c:\logs\mt4\ea\eaYYYYMMDD.log に出力します。
・後述するプロセス監視スクリプトが出力するログを監視して、プロセスが停止していたら発報。
※YYYYMMDDは年月日を表す数字八桁
○カスタムスクリプト
■MT4稼働監視スクリプト
・短い間隔でMT4のプロセスを監視し、停止を確認した場合にはログ出力する。
→ c:\logs\mt4\process\procYYYYMMDD.log に出力します。
■(方法が見つかれば)EA稼働確認スクリプト
・MT4上のEAを短い間隔で監視し、停止を確認した場合にはログ出力する。
→ c:\logs\mt4\ea_check\eachkYYYYMMDD.log に出力します。
※YYYYMMDDは年月日を表す数字八桁
まぁ、まだまだ粗くて、開発フェーズでまた色々細かくは出てくると思います。
2015年のうちに無事設計まで終わりました。
年明けから、いよいよ開発に入っていきたいと思います。
良いお年を。
年明けから、いよいよ開発に入っていきたいと思います。
良いお年を。