デプロイ・トポロジ(単一/複数レプリカ)を確定し、並行制御の状態を DB に寄せる
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 32/100
- Tipo de issue
- Refactorización
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- backend, databases, distributed-systems
Línea de trabajo
Empieza leyendo apps/web/server/utils/db.ts y stripe.ts; después, revisa el issue #15 y las preocupaciones de concurrencia enumeradas. Se considera completado cuando la suposición sobre la réplica se haya decidido explícitamente y la política identifique el almacenamiento respaldado por DB para el control de concurrencia, la limitación de tasa, la idempotencia y la prevención de emisiones duplicadas.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
前提の格上げ(#39): デプロイ・運用先(基盤)自体が未確定と整理した。論点を「まず運用先を決める。トポロジはその下流」に引き上げる。運用先が決まるまでは単一レプリカ前提とし、共有状態を DB に寄せる(プロセス内シングルトンをやめる)方針は運用先非依存に今確定する。
背景
apps/web/server/utils/db.ts / stripe.ts は「サーバーインスタンスごとに 1 つ生成しキャッシュ」= プロセス内シングルトン前提で、単一レプリカか複数レプリカかという前提が暗黙に埋まっている。
なぜ今決めるか
複数レプリカに移ると、インメモリ状態に依存した機構が一斉に壊れる — レート制限(#15、インメモリでは効かず共有ストアが要る)、ジョブの多重実行、二重発行防止、冪等ガード。これらの実装形はレプリカ前提に規定されるため、実装する前に前提を確定する方が安い。後から全部 DB 化するのは高い。
論点・選択肢
- 単一レプリカで進める(シンプル)か、最初から複数レプリカ耐性(共有すべき状態は DB/外部ストアのみ)を前提にするか。
- 前提が決まると: #15 のレート制限ストア、非同期基盤のリーダー選出要否、突合ジョブの排他制御、二重発行防止(ドメインモデルの
(member, term)制約)が決まる。 - NeoShowcase の運用実態(レプリカ数・スケール方針)は情報不足なら当面「単一レプリカ前提、共有すべき状態は DB に置く」と宣言しておくと後続が安定する。
受け入れ条件
- レプリカ前提が宣言され、並行制御・レート制限・冪等・二重発行防止の状態を置く場所(プロセス内不可、DB へ)の方針が決まっている。
関連
#15(レート制限)の実装形を左右する。お金の記録・非同期基盤・ドメインモデルの並行制御と接続する横断前提。
- Lenguaje dominante
- TypeScript
- Estrellas
- 0
- Forks
- 0
- Merge medio
- 11 h 33 min
- PR fusionados (30 d)
- 19
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de traPtitech/Checkin
-
bug documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
traPtitech/Checkin#87 ·
Los mantenedores suelen responder en 1 día
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
traPtitech/Checkin#64 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
traPtitech/Checkin#59 ·
Los mantenedores suelen responder en 1 día
-
documentation enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
traPtitech/Checkin#95 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
traPtitech/Checkin#92 ·
Los mantenedores suelen responder en 1 día
Todos los issues de traPtitech/Checkin
Issues similares
-
Tenant
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
MTES-MCT/Dossier-Facile-Frontend#2061 ·
Los mantenedores suelen responder en 1 día
-
area:frontend
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
interledger/publisher-tools#905 ·
Los mantenedores suelen responder en 1 día
-
Add: Cbeebies PL SDAbiertoapproved check:passed streams:add
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
iptv-org/iptv#54525 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
DB-plane provider_chat_options.* is accepted by config set but never merged into the loaded configAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
area:web
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
praetorianer777/GoTome#178 ·
Los mantenedores suelen responder en 1 día