どっかのチラシの裏

技術的な記事を書いたり書かなかったりします。

個人開発webアプリケーションの方針の転換

紆余曲折あり、「Rails + フロントの一部にVue.js使用。開発環境構築にDockerを使う」から「React + Django REST Framework を使ったSPAをDockerを使った開発からAWS ECSへのデプロイを実践する」という大きすぎる方針転換をしたため、手順を迷わないためにメモ。

方針

考案当初はECSでデプロイを行うためにNginxコンテナも作り、開発環境から本番環境に近い環境で行こうと考えていたが、調査の結果、現段階で「ReactもDjangoも全くの初挑戦」、「以前RailsのwebアプリはEC2でデプロイしたが、ECSでのコンテナ活用した本番デプロイは全くの初挑戦」、「フロント/バックを完全分離したSPAアプリは全くの初挑戦」という三重苦となっているため、一つずつ分割して順番に挑戦することにした。

具体的な手順

  1. Docker, docker-composeを使い、ローカル開発環境でReact、DRFを用いた個人開発アプリを開発(Nginxなどのwebサーバのことはとりあえず置いておく。実際、Dockerを使わないReactとDRFの開発の勉強は十分にできている)
    • アジャイル開発の観点から本来は「最初からアプリの基盤をECSでデプロイして雛形はどちらも稼働可能にしておく。それから開発をはじめて逐次デプロイをしてmainブランチはリリース可能に保つ」というのがセオリーだと承知しているが、上述した三重苦のため、泣く泣くそれは諦める。幸い、Dockerコンテナ上で開発するためある程度の環境の際のリスクヘッジはできるはずなので、今回は妥協する。
  2. 開発が完了したアプリのv1をNginxコンテナと連携して、ECSを使いAWSへデプロイ。場合によっては、一度Nginxコンテナをdocker-composeで連携したローカル環境で稼働を確認してから行う。(要は「Nginxを挟まないdocker開発環境→Nginxを挟むDocker開発環境」のクッションを挟んでおく。)
  3. 新機能開発のためのCI/CDパイプラインを構築
  4. 新機能実装

以上のような手順で段階的にやっていこうと思う。

自分の悪い癖で、リスク回避を徹底するために最初から完璧を目指そうとするため、これを機に分割して順番に問題を解決するということも訓練できるようにしたい。