個人開発Webアプリケーションを0円で運用する

こんにちは、takapi86です。

最近は、ジョジョの奇妙な冒険にハマっています。9月ごろから1部を見始めて、現在は6部のシーズン2まできました。 好きなスタンドはクレイジー・ダイヤモンドです。

これはGMOペパボ EC Advent Calendar 2023 12/16 の記事です。

本日は、自己学習・自己成長に大きく良い影響を与えた、「個人開発のWebアプリケーションを0円で運用する方法」についてお話ししたいと思います。

はじめに

さて、みなさんは個人開発のWebアプリケーションにどれくらいのコストをかけていますか?学習目的でクラウドサービスを使ってアプリケーションを立ち上げることが多いですよね。しかし、その運用コストが積み重なると、維持が難しくなり、結局サービスを削除してしまうことがあります。初期の低コストで始めたとしても、使わない期間の継続的なコストは負担に感じられることでしょう。

しかし、もし0円で運用できるとしたらどうでしょう?その心理的な障壁は大幅に低減され、運用がずっと容易になります。個人開発のWebアプリケーションは、人に見せたり、使ってもらうことで自己成長に繋がることが多いですから、できるだけ削除したくないですよね。

そこで今回は、私が0円で運用した経験をもとに、その構成を皆さんにお伝えしようと思います。

この他にも、コストがかからないサービスや工夫などあれば、ぜひ教えてくださいね。

なぜやろうとおもったのか?

私が所属しているバドミントンサークルがきっかけです。サークルでは、シャトルを用意するために前日までに参加者の人数を把握しておく必要があります。しかし、従来の方法では、掲示板に参加表明をしてもらい、その後で参加者の人数を確認するのが非常に手間がかかる作業でした。掲示板を利用すると、どの日に誰が参加するかを確認するために、全体を上から順に見ていく必要があり、参加者を一人ずつ数えるという煩雑さがありました。

これを解決するために、私はWebアプリケーションの開発に乗り出しました。開発には、仕事で使用している技術に加えて、当時さらに学びを深めたいと考えていたRuby on Railsを使い実装することにしました。

高スペックのサーバーが不要なこと、またサークルでは以前、独自ドメインレンタルサーバを使って年間1万円以上のコストで掲示板を運用していましたが、運用費削減の要望に応えるため、コストがかからないアプローチに切り替えました。

0円アプリケーション構成

0円アプリケーション構成は、以下の通りとなりました。

Web&Applicationサーバ

Web&Applicationサーバは、Google CloudのCompute Engineを使って構築しました。 インスタンスはe2-microを選択しました。このインスタンスGoogle Cloudの無料枠内で利用できるため、月額の料金が発生することはありません。

e2-microインスタンスのスペックは、2つの仮想CPU(vCPU)、1GBのRAM、そして30GBのストレージを持っています。 Railsアプリケーションをアプリケーションサーバ(unicron)として運用していますが、このスペックは、Railsアプリケーションを動かすには十分です。

リソースに余裕を持たせるために、前段のWebプロキシとしてnginxなどのWebサーバを導入せず、unicronだけをアプリケーションサーバとして動かしています。 このシンプルな構成でも、小規模なWebアプリケーションの運用には十分です。

静的ファイルのキャッシュなどの扱い関しては、次のセクションで説明するCDNを利用して対応します。

CDNTLS証明書

リソースに余裕を持たせるためにunicronにリクエストをプロキシする構成にし、変わりに直接CDNを通じてキャッシュ等の設定を行いWebサイトの配信速度を向上させるようにしました。 これは、Cloudflareの無料CDNプランを利用して実現しました。

TLSについては、無料のものといえばLet's Encryptですが、Cloudflareを導入することでなにもしなくてもTLSでの通信も可能になります。 Let's Encryptは更新の処理などの設定がそこそこ大変なので、その煩雑さを回避することができました。

また、Cloudflareからunicornサーバへの通信はHTTPとなりますが、この経路のみにセキュリティグループを設定してアクセスを制限することで、Cloudflare以外からのHTTPアクセスを防ぎます。これにより、HTTPSからの通信のみを許可し、セキュリティをさらに強化しています。

データベース

このプロジェクトでは、データベースサービスとしてClearDBの無料プランを採用しました。

ClearDBは、MySQLデータベースをクラウド上で提供するサービスです。無料プランには最大5MBのデータストレージが含まれており、私が今回運用する小規模なWebアプリケーションには十分な容量でした。

ドメイン

ドメインに関しては、私たちの会社であるGMOペパボが提供するムームードメインを利用しました。

弊社の社員には福利厚生として、好きなドメインを一つ無料で取得することができます。 そのため、ドメインのコストも節約することができました。

もしドメインを無料で手に入れたい場合は、弊社に入社してくださいね。(突然の宣伝!)

構築してよかったこと

小規模ながらも、実際にユーザーに使用してもらえるWebアプリケーションを構築した経験は、私にとって大きな学びとなりました。この経験により、開発において適切な緊張感を保ちつつ、「しっかりと運用しよう」という意識を高めることができました。適当な設定や手抜きをせず、しっかりとしたアプローチを取ることで、より良い学習経験につながりました。

また、これをコストゼロで行うことで、心理的な負担も大きく軽減されました。学習する上で、費用の心配をせずに済むのは非常に大きなメリットです。

詳しくは述べていませんが、このアーキテクチャ上には常に変更を行っていて「現在学習している内容」に基づいてサンドボックスのように様々試しながら運用しています。 これにより、実際に運用し学習を楽しみながら進めることができています。

皆さんも、もしよければこちらを参考にし、コストを気にせずに技術的な挑戦を楽しんでいただければ幸いです。