🚀

App Development Platform

2024/05/08に公開

この Note は Architectural Decision Record ( ADR ) の下書きです。Official ではありません。記載している内容は、ごく一般的な要件で、どこのサービスでも考慮している内容です。


Status

  • 提案済み
  • 承認済み
  • 破棄

Context

  • 私たちは Product の構築を進めている。このドキュメントでは、私たちが選択した最終的な Application Hosting とその背後にある理由を説明することを目的としている。
  • 技術選定の前提条件は以下の通りである。
    1. Developer Experience。少人数で適切なスピード感で開発できる。ビジネスのスケールに柔軟に対応する必要がある。
    2. Stability。安定している必要がある。現状は少数精鋭の Team であるため破壊的仕様変更は回避する必要がある。
    3. Knowledge。サービスに対する経験と知識が組織に存在するかを確認する必要がある。メンバーの流動性が高い場合、組織の Knowledge が少ないサービスを選択すると組織にとっての負債となる。
Service Description Developer Experience Stability Knowledge AWS Marketplace Notes
Amazon ECS Amazon Elastic Container Service (ECS) はフルマネージドのコンテナオーケストレーションサービスであり、コンテナ化されたアプリケーションをより効率的にデプロイ、管理、スケールするのに役立ちます。 ☀️
- 採用事例も多く成熟したサービスである。
☀️
- 最も安定したサービスの 1 つである。
☀️
- 最も採用事例の多いサービスの 1 つである。
AWS Managed Service -
AWS Amplify Gen2 [1] モバイルおよび Web アプリケーションの開発を支援するためのサービスです。データベース、認証、ストレージ、API などの機能を提供しています。 ☀️
- AWS サービスとの連携をシームレスに行える。
- AWS CDK で deploy できる。
☀️
- GA がアナウンスされた。2024/05/06 [2]
☁️
- 採用実績が少ない。GA になって間もない。
AWS Managed Service [3]
Firebase [4] Firebase は、デベロッパーがユーザーに人気のアプリやゲームを開発できるよう支援する Google のモバイルおよびウェブアプリ開発プラットフォームです。 ☁️
- 今回の構成 ( SSR ) では、ある程度の知識が必要になる。Functions を組み合わせる。
☀️
- 運用実績が多くより安定している。
☀️
- 多くのナレッジがある。
no [5]
Supabase [6] [7] Supabase は、オープンソースの Firebase の代替品です。Postgres データベース、認証、インスタント API、エッジ関数、リアルタイム サブスクリプション、ストレージ、Vector 埋め込みを使用してプロジェクトを開始します。 ☀️
- API と Database、認証をシームレスに連携できる。
☀️
- GA がアナウンスされた。2024/04/15 [8]
☁️
- 公に出ている採用実績が少ない。GA になって間もない。
yes [9] [10]
Hasura [11] オープンソースの GraphQL エンジンで、リアルタイムデータベースとしての機能を提供しています。Supabase と同様に PostgreSQL をベースにしていますが、アーキテクチャや機能に若干の違いがあります。 🌤️
- API サーバーを簡単に構築できる。
- RESTful にも対応できる。 [12]
☀️ ☁️
- 公に出ている採用実績が少ない。
yes [13] [14]

Decision

todo

  • Maybe we will opt for this one. ECS or AWS Amplify Gen2
  • Chatwork は AWS をメインにしており、Deploy や Ops に割く時間を減らすことができる。効果検証のスピードを重視しており、より手堅い選択が必要である。

Consequences

  • 学習曲線。サービスを学習し実装するまでの学習曲線が必要になる。これは個人に依存する。
  • その他サービスとの関連性。現在は App 単体ではなく、Application Hosting と Database や認証を組み合わせたサービスが多い。そのため Application の開発者体験を通して Database を選択する必要がある。

Compliance

  • N/A

Notes

  • Author: @danny-yamamoto
脚注
  1. https://docs.amplify.aws/react/start/quickstart/ ↩︎

  2. https://aws.amazon.com/jp/about-aws/whats-new/2024/05/aws-amplify-gen-2-available/ ↩︎

  3. https://zenn.dev/gentamura/articles/a9834076fcc101 ↩︎

  4. https://firebase.google.com/docs?hl=ja ↩︎

  5. https://firebase.google.com/docs/hosting/frameworks/nextjs?hl=ja ↩︎

  6. https://supabase.com/ ↩︎

  7. https://www.publickey1.jp/blog/24/firebasebaassupabase.html ↩︎

  8. https://supabase.com/ga ↩︎

  9. https://aws.amazon.com/marketplace/seller-profile?id=471c9cd1-f79f-4a26-bf55-f3a7a2d6d895 ↩︎

  10. https://giginc.co.jp/blog/giglab/supabase-nextjs ↩︎

  11. https://hasura.io/ ↩︎

  12. https://kou029w.github.io/hasura-rest-hands-on/index.html ↩︎

  13. https://aws.amazon.com/marketplace/seller-profile?id=9e6176b3-4d08-4d07-9022-4625c9b055cb ↩︎

  14. https://zenn.dev/rescuenow/articles/30135e098d8d87 ↩︎

GitHubで編集を提案

Discussion