search
LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Organization

Deep Health Checkパターンを導入してみた

概要

この記事はDMMグループ Advent Calendar 2020 11日目の記事です。

DMM.comでサーバサイドエンジニアをやっているjuve534です。
現在は配信基盤のリプレイスプロジェクトにて、スクラムマスター兼デベロッパーとして業務しています。

今回はリリース時に導入した Deep Health Check について話していきます。

Deep Health Checkパターンとは

CDP:Deep Health Checkパターン - AWS-CloudDesignPatternで説明されており、ヘルスチェック用のエンドポイントで、関連するシステム(DBなど)の接続をチェックする仕組みになります。
こうすることで、よりサービスの健康を測れます。

O'Reilly Japan - 入門 監視では、ヘルスエンドポイントパターンとして記載されており、考え方は同じなのかなと思っています。

実装経緯

自分たちのプロジェクトではAmazon ECS上にAPIを配置し、オンプレのDBにアクセスしています。

オンプレのシステムは、専門のインフラチームで保守・運用を行っており、サービスイン前にリリース影響範囲を読み合わせたところ、オンプレのDBへアクセスする部分の監視について話が及びました。
弊社の他サービスで上記の通信経路(DirectConnect)をチェックする仕組みを設けており、弊チームでも導入を提案されました。

そこで、前述した Deep Health Check パターンを採用して、実装を行っていきました。

イメージ図

イメージ図.png

イメージ図はこんな感じです。ALBからのヘルスチェック時に、DBにアクセスします。もし繋がらない場合は、CloudWatchのカスタムメトリクスに飛ばします。

CloudWatchAramで、数秒間に何回値があったら、SNSへ飛ばすようにし、そこからメールとSlack通知を行います。

これで、問題が起きた際にインフラチームと協力して調査できる体制を取れるようにしました。

最後に

特に実装してしばらくは出番がなかったのですが、サービスメンテナンスを行った際に、DirectConnect越しにDBに繋がらないことを検知してくれました。
このように、ヘルスチェックを工夫しておくと、問題の検知が素早くできると思いました。

DMMグループ Advent Calendar 2020 11日目の記事でした。
明日の12日目はdaisukeodaさんです。よろしくお願いします!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1