Go言語で個人開発したサーバーをGCPやAWSにデプロイするときの悩みは、各プラットフォームの必要知識が意外にも多いことと、地味に出費がかさむことです。
今回は、余計なプラットフォームの設定で悩むことなくアプリケーションに集中できるうえ、低価格で実現できるサービスを紹介します。
私は2020年10月からクラスター社でエンジニアインターンをしている @anoriqq です。
日々、サーバーエンジニア修行を積んでいます。
さて、この記事は クラスター Advent Calendar 2020 9日目の記事です。
昨日はnomunomu_raさんの『クラスター社員が語る、バーチャルカメラの魅力。』でした。
clusterでイベントを開催する方は必見です!
はじめに
クラスター社の提供するサービスclusterのサーバーにGoを利用しています。
しかし、私自身のGo言語でのサービス開発は初めてでしたので、実際にサービスに使われているライブラリやフレームワークを使ったオモチャが欲しくなります。
そこで、Go製のwebサーバーがデプロイできるRenderを使ってみたところ、GCPやAWS、Herokuよりも使い勝手が良いと感じたのでご紹介します。
Renderってどんなサービス?
Webアプリや静的サイトのホスティングから、Cron Jobs、自動バックアップ機能付きDBなど、個人のWeb開発で必要なものは一通り揃っています。
SSDディスクも提供されていますので、PostgreSQL意外ももちろん使えます。
無料でonrender.com
のサブドメインも割り当ててくれますし、カスタムドメインも追加できます。
ドキュメントもそれなりに詳しく、サンプルプロジェクト付きで解説があります。
個別に対応していない言語もありますが、Dockerが動くのでなんでもできますね。
RenderでGo製サーバーを動かそう
さて、本題のGo言語プロジェクトですが、デプロイに必要な作業はたったの3ステップです。
- サービスタイプを選択
Webサーバーの場合はWeb serversを選ぶと良いです。
Background WorkerはURLを持ちません。
- Gitリポジトリを選択する
GitHubかGitLabからプロジェクトのリポジトリを選択できます。
- サービスの設定
EnvironmentにGoを選択し、Build CommandとStart Commandを指定します。
Regionは現在 Oregon, USA と Frankfurt, Germany が選択できるようですが、日本からだとUSAのほうが速いです。
デフォルトでAuto Deployが有効になっているため、Branchに指定したBranchにpushされると自動的にデプロイされます。
もちろん手動デプロイも可能です。
その他、環境変数やシークレットファイル、追加の永続ディスクなどもこの画面で設定できます。
良いところ1: デプロイが速い
Dec 7 10:12:20 PM ==> Cloning
Dec 7 10:12:26 PM ==> Running build command
Dec 7 10:12:53 PM ==> Build successful 🎉
Dec 7 10:13:10 PM ==> Starting service with './app'
Dec 7 10:13:35 PM [GIN] 2020/12/07 - 13:13:35 | 200 | 2.617112ms | 111.111.111.111 | GET "/"
あるプロジェクトのlogの抜粋です。
buildはプロジェクトの規模で変わると思いますが、build完了後30秒程度でアクセス可能になります。すごい!!
chackoutにはキャッシュも効かせてくれます。
良いところ2: 安心できる価格設定
今回利用したサービスタイプWeb serversでは最も安いStarterプランで最高 $7/月 です。
しかも利用した分だけ課金されるので無駄に出費する心配もありません。
私の個人開発は趣味や勉強目的なので、サービスを作ったり消したりしていますが毎月300円程度しか請求されていません。
おわりに
様々なクラウドコンピューティングサービスを利用した中で、最も入門しやすく、個人開発に十分な機能を備えているので、知らない人には広めていきたいですね。
来年もRenderで個人開発とスキルアップを加速していくぞ!
明日はfaidraさんの『なにか』です。
楽しみです!!