ロギング:Papertrail(ペーパートレイル)
https://papertrailapp.com
・ログ収集SaaS
・PHPであればMonologを利用した例が公式ドキュメントに紹介あり
・「特定の検索条件と発生頻度のしきい値を設定したアラート」がインテグレーションの例
・これを利用してPugerDutyやSlackやDiscordへアラートイベントを通達可能
・S3などのオブジェクトストレージへの自動ダンプ機能もある
アラート:PagerDuty
https://www.pagerduty.com/
・インシデント発生時のエスカレーション機能、アラート機能の豊富さ
・オンコール、オフコールを設定しておくことで障害発生時の担当者をアサイン
・状況進展に応じて自動でアサインをリアサインする
・アラート機能はメール、電話、専用モバイルアプリなどチャネルはさまざま
エラー管理:Sentry
https://sentry.io/welcome
・アプリケーションエラー収集・管理するためのSaaS
・自動的に類似したエラーを集約し管理するIssue機能
・個別エラーごとも発生時コンテキストやバックトレースなどの詳細を表示
・柔軟にカスタムして通達を行えるアラート機能
Mackrel(マカレル)
・株式会社はてなが提供している監視サービス
・インフラや運用経験の乏しいエンジニアでも直感的分かりやすいUIになっている
・データ利用のためのAPIも提供されている
外形監視:Pingdom
・Pingdom上に表示するサイト名
・監視対象のエンドポイントURL
を設定可能。
詳細設定機能
・監視間隔
・成功とみなすべき条件(文字列一致、もしくは部分一致)
・失敗とみなす条件
・リクエスト時に利用するBASIC認証やカスタムヘッダ、POSTリクエスト時のボディ
・リクエスト送信元(欧米、北米、欧州、アジア、中南米から1つ)
サーバダウン時のアラート
・PageSpeedレポート
・アラート先インテグレーションWebhook
・チーム単位でのメンバー管理
GitHubFlow
https://www.kagoya.jp/howto/it-glossary/develop/githubflow/
リグレッションテスト
※回帰テスト
・単体テストで新規実装した機能が問題ないことを確認できたとしても、システム全体としてはリグレッション(既存実装が無効になること)やデグレード(既存機能が劣化すること)が生じているかも
・リグレッションテストを自動化するまでコストが大きなかかり細部まで自動テストを書くと仕様変更やデザイン変更にもろくなる傾向になる
↓
・チーム内での稼働工数と相談しながらであるが、人力でリグレッションテストを実施することが重要
・「これまで通りシステムが動作しているのか」という目的で何本かのシナリオを書き、そのシナリオに沿ってテストを実施するのが鉄則
・タイミングとしては
・「developブランチがReleaseブランチにマージされたタイミングで検証する」
・「1週間に1回などの頻度で、定期的に主要機能を中心に全体動作を検証する」※フルリグレッションテスト
PHPMD
静的解析ツールを導入しソースコード品質チェックツールの導入
https://tech.innovator.jp.net/entry/2023/07/12/123232
スロークエリ検出
MySQLでスロークエリのログを出力し遅いSQLを特定・可視化すること。
my.cnfに下記を記述し0.2s以上かかったSQLをスロークエリとして/var/log/mysql/slow.logに出力できる
ーーーーーー
[mysqld]
slow_query_log=ON
slow_query_time=0.2
slow_query_log_file=/var/log/mysql/slow.log
ーーーーーー
上記実行後、mysqldプロセス再起動(sudo systemctl restart mysqld)
スロークエリログファイルはElasticSearch+Kibanaを使って簡単に可視化する方法もあり、この可視化をしておけば開発メンバーが気軽に閲覧しスロークエリに気づけます。
このような可視化をすることで予期しない性能劣化にも早期に気づくことができます。
(OS限定になるけど)http://www.uefi.org/specificationsを熟読する