個人サービスの運用をしている話 ~ これは盆栽である ~

個人サービスの運用をしている話 ~ これは盆栽である ~

今年の3月から趣味でサービスの企画 - 開発 - 運用をしている。

エンジニアという職業に就いてから、土日の時間を使ってひっそりと何かを作ってリリースすることをやってきたが、これまでは勉強目的のものが多かった。今回はちゃんとリリースして運用していくことを目的にやってみている。というのもAIコーディングが発展して「この表現どうやって実装すればいいんだ!」みたいな壁も簡単に乗り越えられるようになり、サービスの出来栄えも自分としてはある程度満足できたからである。

何を作っているのか

toC向けで、作業効率を上げる系のサービスを作っている。人と他愛もない雑談をしている中で「この作業やりたくないなー」と感じたことを自動化して公開した。人の不便を解決することはやはり需要があるようで、ある程度の人に使ってもらえている。

リリース以来の累計で1.1万人、MAUでいうと約1,500人ほどが利用している。

MAU 通算AU

毎日使うようなサービスではなく、四半期に1回開くかなあという感じなのだが、サービス特性を考えるとまあまあの数字かなと思う。

開発環境やインフラなど

  • 開発環境

    • 開発マシンWSL2
    • ツールなど
      • Claude Code(Max)
        • 開発、レビュー用途
      • Copilot
        • レビュー用途
      • Docker Compose
        • ローカルでの開発環境構築
    • CIマシンUbuntu Mini PC
      • GitHub Actions経由で、self-hosted RunnerをつかってPR作成時の自動Preview環境を作成
      • PreviewはCloudflare Accessをつかって公開
  • アプリケーション

    • フロント
      • React, TypeScript
    • バックエンド
      • Golang, Gin
  • 本番環境など

    • インフラ
      • Cloudflare, Cloudflare Pages, Cloudflare Workers
      • Supabase
      • Resend
    • モニタリング
      • Sentry, Discord, IFTTT(不具合のつぶやきなどみてる)
    • CI/CD
      • GitHub Actions
        • 自動Preview環境構築(前述のとおり)
        • 自動テスト
        • 本番デプロイ
        • Health Check(定期的にAPIの疎通確認して、失敗したらDiscordに通知)
        • コスト監視(定期的にCloudflare / GCPのコストを確認して、一定額を超えていたらDiscordに通知)
  • 本番のセキュリティ周り

    • CloudflareのWAF
    • Cloudflareで日本以外からのアクセス全ブロック
    • GitHubのDependabotで脆弱性チェック
    • サプライチェーン対策
      • SHA Pinningの強制
      • Takumi Guardの導入
    • Cloudflareへの異常アクセスを能動的に監視
    • RBACをもとに、403アクセスが発生した際のDiscord通知(基本は起こらない)
    • シークレットの定期ローテーション
    • 利用ユーザのメール必須化
    • すべての重要機能にMFAの必須化
    • セルフで脆弱性テストを実施するイテレーションの仕組みを構築
    • etc…

ざっとこんな感じ。あまりお金をかけずにできることはやっているつもり。 PIIはSupabaseの管理テーブルにのみ保持しているが、CloudflareのProプランの導入検討や、利用ミドルウェアの脆弱性通知を収集する仕組みをつくるなど、セキュリティ周りはもう少し強化していきたい。

最初はK8sで作るか!とも思ったけど、サービス開発の時間が割けなくなるので、なるべく楽に運用できる構成にした。 この構成ではCloudflare Pagesにちょっと癖があってハマることがあったので、それは別の記事で書こうかなと思う。

今後やっていきたいこと

前述のセキュリティ強化はもちろんだが、サービスのDAU・MAUをKPIに据えて伸ばしていきたい。そのために今後も地道にユーザの声を聞きつつ、突き抜けた使いやすさを追求したいと思っている。世の中のWebサービスは機能が多すぎて複雑だなと感じるので、シンプルでわかりやすいUI/UXを追求していきたい。

これは盆栽である

このサービスはあくまで趣味でやっている盆栽のようなものである。そのため収益化の予定は今のところない。人のためになって誰かが喜んでくれたら、それで十分である。 個人開発は全部自分でやることになるから、サービス開発の脳トレになって勘所が磨かれるし、普段本業で触らない技術にも挑戦しやすいのが良い。 あと自分の財布から出費しているので、ちゃんとコスト管理しないと自分が辛くなる、という適度な緊張感があるのもいい。

利用ユーザがいるうちは責任をもって運用を続けていく。