個人でWebサービスを開発したいけど、どのような流れで作っていけばいいのかわからない方向けです。個人開発でWebアプリを開発、デプロイをしたのでその流れを共有したいと思います。
作ったもの
麻雀戦績管理アプリ名付けて「PungPals」。雀荘などのオフラインでの対戦結果を残し、個人成績やランキングを確認できます。
pungpals-service-xstpolfd4q-an.a.run.app
開発とデプロイの流れ
1.要件定義、設計
実装がスムーズに進むために、しっかりとしておきましょう。以前記事を書いたので、参考にしてください。
2.技術選定
今回作ったアプリケーションはDjangoで開発し、Cloud Runにデプロイしています。
選定理由は、
- Django: 経験があるから。
- Cloud Run: Djangoアプリのデプロイ方法の公式ドキュメントがあった(後ほど説明します)、マネージドな部分とカスタムできる部分のバランスがちょうどよかったから。
でした。
以下これらの技術を使って、開発デプロイまでの流れを説明していきます。
3.Djangoを使ってアプリケーションを作成
- はじめての Django アプリ作成、その 1 | Django ドキュメント | Django
- はじめての Django アプリ作成、その2 | Django ドキュメント | Django
- はじめての Django アプリ作成、その 3 | Django ドキュメント | Django
- はじめての Django アプリ作成、その 4 | Django ドキュメント | Django
を読めば開発方法がわかると思います。
環境構築をし、実装し、ローカルで動作確認をしながら開発していきます。
4.Cloud run へのデプロイ
DjangoアプリのCloud runへのデプロイ方法は公式ドキュメントにまとめられているので、これを見ながら進めます。
Djangoアプリケーションを環境に合わせて設定した後コンテナ化し、Cloud Runに載せます。それに伴い、Cloud SQL(データベース)、Secret Manager(シークレット管理)、Cloud Storage(静的アセットの保存など)、Cloud Build(CI/CD)、Artifact Registry(コンテナレジストリ)の作成、設定も行います。ドキュメントではGCRを使っていますが、現在非推奨なので、Artifact Registryをコンテナレジストリとして使用します。
オプションですが、GCPへのリソースの作成はTerraformを利用すると、構成管理ができ便利です。
作成するインフラの図
以上のことを行った後のGitHubリポジトリ
PungPalsのコードは公開しているので、参考にしていただければと思います。
これから
今後は、運用面の課題解決や集客などを行っていく予定なので、ブログにしていくつもりです!