【個人開発】WEBサイトの死活監視を簡単に、格安で実施できるサービス「LinkWatcher」のβ版をリリースしました。

こんにちは！

[InfraAcademy](https://engineer-ninaritai.com/infraacademy/)というLinuxやネットワークの学習サービスを運営しております、ryuと申します。
今回は、新しく個人開発したサービスのLinkWatcher（リンクウォッチャー）についてご紹介したいと思います！

:::note alert
このサービスは閉鎖しました。
:::
## LinkWatcher（リンクウォッチャー）とは？
まずは、サービスの説明からさせていただきます。
**LinkWatcherとは、Webサイトの監視をするサービスです。**
URLを登録すると、定期的にWebサイトが動作しているかの確認を行います。もし、サイトが停止している場合は、メールを送信して、サイトのダウンを検知します。

個人開発者向けに、安価で簡単に設定ができる監視ツールです。

▼ LinkWatcher(β版)

https://monitoring-app-wibb.onrender.com/
## 他の監視ツールとの違い
私自身、インフラエンジニアとしてキャリアをスタートしています。
そのため、さまざまな監視ツールを使ってきました。

サービスの説明だけを読むと、類似のサービスを思い浮かべる方もいると思います。

「AWS CloudWatchでよくね？」
「zabbixでよくね？」
その通りです。これらの監視ツールと提供している基本的な機能は同じです。


しかし、以下の2点が違います。

:::note info
* 設定が楽
* 低コストでの監視
:::

**私自身のサービスを監視するために、既存の監視ツールを探していました。しかし、これらでは痒いところに手が届かなかったので、自分で監視ツールを作ってしまいました。**

ここからは、さらに詳しく今回開発したサービスについて解説します。
### 設定がめちゃくちゃ楽
既存の監視ツールは高機能です。その反面、設定が面倒です。
多くの機能の中からどの項目を監視するのか設定をする必要があります。

例えば、CPUの使用率が10分の間に80％を超えたら、通知を出すといった設定を行います。CPUの監視項目だけでも膨大にあります。使用率、速度、ソケット・・・etc
これらの監視項目を設計し、構築するには膨大な労力が必要です。

銀行のシステムや、電車の運行システムなど、高可用性が求められるものに対しては、高機能な監視ツールが必要になります。
しかし、Webサイトが動いているのか、落ちているのかを知りたい簡単なアプリの場合に関しては、もっと単純な機能だけあれば良いのです。特に、個人開発のものやMVP(ミニマムバリュープロダクト)のような試作品などには、死活監視のみで十分です。

LinkWatcherは、シンプルな設定で監視が可能です。
以下の画面のように、サイト名とURL、監視時間の3つだけを設定すると監視が開始されます。
![スクリーンショット 2024-06-04 9.12.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3577925/e3201126-bbe2-2019-08e3-8525db279759.png)

URL登録後のダッシュボード
![スクリーンショット 2024-06-04 9.33.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3577925/27a8fdaf-184e-9c6d-6db8-82f3c7a28e9a.png)

監視の状況は、グラフや表で見ることが可能です。また、日付や時間を指定してログを確認することも可能です。
![スクリーンショット 2024-06-04 9.34.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3577925/524c97c5-e151-f2da-a49e-73565a64f4e2.png)

![スクリーンショット 2024-06-04 9.34.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3577925/98d56a91-ef93-bd21-456a-9434fe239326.png)

サービスが落ちている場合は、ステータスがNGになります。このとき、登録したメールアドレスに通知が飛びます。
![スクリーンショット 2024-06-04 9.36.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3577925/7775dd5d-2fe0-0d2a-a6d3-6b238a32c767.png)



### 低コストでの監視
設定が簡単なものなら、「AWS CloudWatch Synthetics」があるじゃん！と思われた方もいると思います。
私も個人的にはこのサービスを使っていました。しかし、AWS CloudWatch Syntheticsは以外とコストが掛かってしまいます。AWS CloudWatch Syntheticsは実行回数ごとに課金され、1回0.0019USDかかります。(東京リージョン)
1つのサイトを5分ごとに監視をすると、 12(1時間あたりの実行回数) * 24(時間) * 30(日) =  16.416ドル(約2,400円)となります。

LinkWatcherでは、2URLの監視は無料です。
有料版(毎月10ドル)にすると、無制限でURLが登録できるようにしてあります。また、無料版の場合は、監視間隔を10分に設定しており、有料版にすると、監視間隔を変更することができます。

## LinkWatcherの技術スタック

このアプリの技術スタックは以下の通りです。

:::note info
* 言語:Python(flask)
* インフラ:Render
:::

このアプリはまだ試作段階のMVPです。
MVPとは、顧客のニーズを満たす最小限のプロダクトのことです。
今回、私自身が安価で簡単に死活監視できるアプリが欲しかったので、このアプリを作成しました。

MVPを作る上で、重視したことは以下の3点です。
* 必要最低限の仕様が満たせること
* 低コスト、スピーディーに開発ができる
* スピーディーにリリース

### 必要最低限の仕様が満たせること
アプリを開発する上で、重要なことは「必要最低限の仕様が満たせること」です。つまり、アプリが動くかどうかです。
今回は、"URLを登録して、そのURLの監視をする。監視で失敗したらメールを送る"です。

これだけの仕様であれば、ほぼ全てのWebフレームワークで対応可能です。
そのため、私自身に開発経験がある、PHP(Laravel)、Python(Django、Flask)、Go(echo)のどれかで開発しようと決めました。
### 低コスト
次に重要視したことは、低コスト、スピーディーに開発ができるということです。
やはり、Webアプリのインフラを構築するとそれなりのコストが掛かってしまいます。最低限、WebサーバーとDBを準備するだけでも、数千円から数万円かかる場合があります。

インフラ台は数千円以内に抑えたかったので、今回は[Render](https://render.com/)をインフラにしました。Renderの有料版で一番安いプランだと7ドルで使用できます。また、DBも同じ値段でシステム全体としては、14ドルのコストです。(円安で少し割高です・・・)

Renderを使うと、CI/CDの構築が簡単にできます。GitHubに接続するだけで、自動でリリースまで行ってくれます。
インフラが先に決まったので、Renderで使いやすそうなFlaskを言語に決めました。

このような流れで技術スタックを決めていきました。
設計の考え方については、以前こちらの記事で執筆したので気になる方はお読みください！

https://qiita.com/ryu235464345/items/fa0e4e458759183312d0

### スピーディーにリリース
MVPを開発する上で重要なことは、スピードです。
開発着手からリリースまでの期間のことを指します。

**私個人としては、開発着手から、リリースするまで1週間以内を目指しています。**

アプリ開発のリリースまでに数ヶ月かけるのは遅すぎます。
基本的な機能だけ作って、ユーザーに必要とされているのかを検証する必要があります。
もちろん、アプリを作成する前段階からユーザーのニーズ調査などを行います。

ニーズがあるなと思ったら、必要最低限の機能だけを実装してリリースします。
今回実装した機能は、以下の通りです。
* URL監視機能、レポート機能
* ログイン機能
* メール通知機能
* 決済機能

これらの機能を素早く実装するためには、Flaskで簡単にバックエンドを作成し、フロントエンドはHTML、CSS、BootStrapで簡単に実装しています。そのため、サイトのデザインは割と適当です・・・
今後、フロント部分のデザインなどは整える予定です。

## 個人開発している人、監視でお困りの方のご意見募集
このアプリはまだまだ、試作品です。
ユーザー様の声を聞きながら、さらにより良いものにしたいと思っております。

そこで、このアプリを使ってみたい方や、個人開発をしている方、サイトの監視でお困りの方など、さまざまな方のご意見をお聞きしたいと思っています。

もし、ご興味ある方は、XのDMもしくは、アプリログイン後のお問い合わせページからお問い合わせください。

▼ Xアカウント

https://twitter.com/ryu63614894

▼ LinkWatcher(β版)

https://monitoring-app-wibb.onrender.com/


また、メインはInfraAcademyというインフラエンジニア向けの学習サービスを作っていますので、興味のある方はこちらも使ってみてください。

https://engineer-ninaritai.com/infraacademy/

ここまでお読みいただきありがとうございました！！