Open5
個人開発のシステム構成を考える
決めること
- フロントフレームワーク
- バックエンドフレームワーク
- インフラ
- データベース
- ストレージ
とか
決め方
- 取得済みの技術を挙げる
- 強化したい技術を選ぶ
- それに合った構成を決める
私の場合
- 取得済みの技術 => Next.js、ASP .NET Core、Python(ちょっと)、Java(ちょっと)
- 強化したい技術 => モダンなバックエンド => モダンなバックエンドとは……?
- それに合った構成は……?
フロントとバックで同時に新しいことを学ぶのは難しいため、フロントはNext.jsに決定する。
モダンなバックエンド
あまり難しくなく、Next.jsとの親和性が高いこと。
調査前のイメージ
- Python => バックエンドとして親和性高そう。計算が得意。
- Next.js => 複雑になりそうなのであんまりやりたくない。取得済み技術のため除外。
- .NET => 慣れてる。モダン……?取得済み技術のため除外。
- Go => なんかよさげらしい。学習コストは高いかも?
- Java => 好きくない。モダン……?
- Rust => 最近耳にする。どないなん?
- Ruby => フロントのフレームワークもあるらしい。早く作れるイメージ。
バックエンドをTSで書くのは違和感ある。好みの問題かも?
Python、Go、Rust、Rubyあたりで考える。
調査
Python
- フレームワークはFlaskとDjangoがよさげ
- 処理速度が遅い
- シンプル
- ライブラリが多い
- Windowsで開発しにくい
Go
- シンプル
- スケーラビリティが高い
- ライブラリが多い
Rust
- 安全性が高い
- 速い
Ruby
- 癖があるらしい
- Ruby on Rails
- Rails API Only
- 立ち上げスピードが速い
決めるための条件
- Next.jsに合っていること
- スピードはあまり気にしない
- 大規模でもない
- 計算もあまり必要ない
- セキュアではあってほしい
- ライブラリは多めがいい
- 情報も多めがいい
決める
メリット | デメリット | |
---|---|---|
Python | ライブラリ・情報多い | Windowsで開発しにくい |
Go | ライブラリが多い | |
Rust | 安全性が高い | メモリが複雑 |
Ruby | 素早く作れる | APIOnlyの情報少ないかも |
これを見るとGoがよさげかも。
フロントはTSで書くつもりだから静的型付けのGoが相性よさそう。
GoにするならフレームワークはオーソドックスなGinかな。
インフラとの相性
- Docker・Git使いたい
- サーバーレスがいい
調査
- vercel => Next.jsとGoがデプロイできる。Postgres使える。お金かかる。
- Cloud Run => Goと相性いいかも?Docker使える
- Cloudflare => 安いらしい?Goは不可(頑張れば行けそうだけど面倒)。DBとStorageも使える。
- AWS Lambda => Docker使える
- Supabase Database => DB
- render
- Fly.io => CI/CD の面倒は基本見ない
CloudflareメインにしてGoだけほかのにする?
Next.jsがvercelじゃなく、Goがvercelというちょっといびつな構成に笑
フロントフレームワーク => Next.js
バックエンドフレームワーク => Gin
フロントインフラ => Cloudflare Pages
バックインフラ => Cloudflareかvercel
データベース => Cloudflare D1
ストレージ => Cloudflare R2