White Box技術部

WEB開発のあれこれ(と何か)

最近サービス作るときに考えていること

この頃、新しくサービスを作ることが多かった&続いているので、どんな事を考えて作っていたかを思い出しながら書いてみます。

最初にざっくり考えること

  1. どういったデータを扱うか
    1. 認証が必要なアプリケーションか
      1. 面倒くさいからできればやりたくない・・・
    2. ドメインごとのデータにどんなものがありそうか
      1. リアルタイム反映が必要なものはできればやりたくない・・・
    3. 画像や動画のこと
      1. お金がかかるからできればやりたくない・・・
  2. データはどうアクセスされるか
    1. アクセス頻度はどのくらいになりそうか
    2. バッチ処理が必要か
  3. DBどうするか
  4. 管理画面が必要か(大体いる
  5. 運用したときのコスト感

大体やりたくないので、やらなくていいこと探しているような気がします。

一通り構成を考えたら次はアプリケーションとインフラについて考えます。

  1. サービス実現をどうやるか
    1. トレンドの技術で、今回使えるのがないか
  2. 何か今までの作り方から変えれるところがないか
    1. 前回で改善したかったことが今回のでやれないか
  3. 新しいことの割合が多すぎないか
    1. どでかい挑戦を3つ以上入れない
    2. できれば1つ、無理して2つ
    3. 新しい言語の場合は、他を可能な限り既知の技術で収める

ここで大体やりたいことが増えます。なので最初に減らしているのかもですね!(面倒くさいだけ

アプリケーションをどうするか

方針が大体定まったらアプリケーションのリポジトリを作りながらアプリケーション構成を考えます。

  • とりあえずフルNext.js
    • フロントもバックエンドもTypescriptで作りたい
    • バックエンドがNext.jsで無理そうな場合はGoかRustかPythonあたり使う
      • Nestだと同じTSでもNextと結構方向性が違うから、別言語使うのと脳コストがあまりかわらない
  • DB管理はprisma使えるならprisma
    • Mongoならprismaじゃなくてmongoose
  • リポジトリはモノレポにする
    • yarn workspaceで管理する
      • そういう意味でもなるべくTypescript以外使いたくない
    • ルート直下にVSCodeワークスペース管理ファイルを置く
  • renovateを最初から入れない
    • ncuで都度チェックするからメンテナンスフェーズに入るまでいらない

インフラ構成をどうするか

  1. 要件満たせる上で一番コストがかからないサービスはどれか
    1. 最近よく脳内候補にあげるやつの順番は以下
      1. Vercel(この場合データはSupabase + Upstash か AWS
      2. GC(Cloud Runベース
      3. AWS(ECSベース
    2. 結局、慣れたAWSになりがち
  2. 無料枠はどのくらいあるのか
  3. 月の使用料金がどのくらいになるか

AWSの場合

  • リージョンはもうバージニア北部でいい
  • サービスが跳ねるまではVPCも1つでいい(ステージングを本番のに間借りさせる
    • そうすればLBも共有できるのでコストが抑えられる

インフラも構成の管理をどうするかとか色々考えているはずなんですけど、結局コストのことばっかり記憶に残ってますね、これは。

とりあえずここらへんまで考えてから、コードを書き始めている感じです。

あとがき

大体このくらい書いて1時間でした。 もっとコスト低くブログにアウトプットできないかと思い、1時間集中して書けるだけ書くをやってみた感じです。

1時間だと補足的なことが書けなかったので、それは別記事に回していこうと思います。

今回の記事を少しだけ補足すると、とりあえず生みたいになっているNext.jsの扱いですが、 Next.js以外(Svelteとか)もやってみたい気持ちはありつつも、Next.js自体が毎回新しいことやってくるので、 Nextの新しいことをやっていると他はまあいっかなってなっている感じです。