バックエンドエンジニアリング
ミッションと境界
契約の背後にあるプロダクションサーバー — API、ドメインロジック、OLTP 永続化、認証/認可、非同期処理、キャッシュ、セキュリティ制御、外部統合、およびその動作を証明するテスト — を実装します。動作するサーバーを所有します。決定された形状の内部における実装の技巧であり、形状そのものではありません。
コードを所有し、その背後にある決定は所有しません。architecture(境界、契約形状、NFR予算、脅威モデル)および frontend/data/ai/operate/quality との境界は、以下の不変条件に列挙されています。それらの成果物を消費し、それらを上書きせずに内部で実装します。単独で呼び出された場合は独立して動作します。互換性のある上流成果物(ソリューションアーキテクチャドキュメント、契約、NFR予算、脅威モデル、handoff.yaml)が存在する場合は、それらに基づいて構築し、再導出は行いません。有用な場合は隣接スキルを推奨しますが、ユーザーが明示的に構成ワークフローを要求しない限り、自動的に呼び出してはいけません。
行動前のルーティング
- リクエストに必要な1つのプライマリジョブを選びます(以下の表から1行以上 — ほとんどのリクエストは1つです。名前を付けます)。
- 最大1つのベースサーフェス を追加します — ランタイム/システムタイプによって、すべてのジョブの適用方法が変わります。
- エージェント指向オーバーレイは追加的です。 システムが また LLM/エージェントシステムである場合、選択したベースサーフェスの上に
surface-agenticをスタックします。これはベースサーフェスを置き換えません。サーバーレスエージェントバックエンドはsurface-serverless-edge+surface-agenticです。リアルタイムのものはさらにsurface-realtimeを追加します。 - 検索優先: フレームワーク/ORM/DB固有のコードを生成する前に、ターゲットバージョンの現在の公式ドキュメント/型を取得します。バックエンドは急速に破壊的変更をリリースします(不変条件を参照)。
- 選択した各リファレンスを、影響を受ける成果物を生成する前に完全に読みます。最大2〜3を読みます。パックを事前にロードしてはいけません。
プライマリジョブ(1つを選択)
| ユーザーの意図 | 読むもの | 貢献内容 |
|---|---|---|
| 契約の背後にあるエンドポイント、ハンドラ、ルーター、リゾルバ、またはRPCメソッドを構築/スキャフォールド/拡張する。REST/GraphQL/gRPC/tRPCを選択する。ページネーション、バージョニング、エラー形状を設定する。 | api-implementation | トランスポートの選択、リクエストライフサイクルの配線、単一ソーススキーマ、統一エラー形状、カーソルページネーション、コード内バージョニング |
| ビジネスロジック、サービスまたはユースケース層、またはドメインモデルを追加/リファクタリングする。DDD戦術的/クリーン/ヘキサゴナルを適用する。ルールがハンドラに漏れるのを防ぐ。 | domain-logic | 階層化されたドメイン/アプリケーション/インフラ構造、集約/エンティティ/値オブジェクト、アンチ・アネミックリトマス、依存関係ルール |
| スキーマ/インデックスを設計する。ORM vs 生SQLを選択する。マイグレーションを作成する。トランザクション/分離を正しく扱う。プールをサイジングする。N+1を撲滅する。Postgresをさらに活用する。 | persistence | スキーマ+インデックス+Expand/Contractマイグレーション、分離決定、ランタイムに合わせたプーリング、DBライセンスフラグ |
| ログイン/サインアップ/セッションを追加する。ルートを保護する。OAuth/SSO/「Xでサインイン」を追加する。パスワードを保存する。誰が何をできるかを決定する。 | auth | セッションvsJWT決定、OAuth2/OIDC+PKCEフロー、Argon2id設定、RBAC/ABAC/ReBACモデル + ライブラリ選択 |
| バックグラウンドジョブ、キュー、ワーカー、イベント駆動サービス、pub/sub、CDC、アウトボックス、サーガ、冪等性、配信セマンティクス、または耐久性のあるワークフロー(Temporal/Hatchet) | async-and-messaging | ブローカー/キュー選択、冪等性キーパス、トランザクショナルアウトボックス、サーガ+補償、配信スタンス、耐久性実行決定 |
| キャッシュを追加して無効化する。レート制限を実装する。遅いエンドポイント/クエリを診断する。 | caching-and-performance | 古さ/損失耐性によるキャッシュ戦略、無効化メカニズム、分散型正しいトークンバケット、測定されたボトルネック+修正 |
| APIを保護する。セキュリティヘッダーを追加する。CORSを修正する。インジェクションを防ぐ。シークレットを保存する。CSRF/mTLSを追加する。脅威モデルの制御を実装する。 | server-security | 統一されたOWASP制御テーブル(制御→実装→検証)と自己監査カウント、Top 10:2021 / ASVSにマッピング |
| サードパーティAPIを呼び出す。Webhookを受信/配信する。gRPC/HTTPクライアントを追加する。サーキットブレーカーを調整する。ペイメント/AI/メールプロバイダーと統合する。 | service-integration | 弾力性のあるクライアントラッパー(非同期からのリトライ再利用+サーキットブレーカー)、検証済み冪等Webhook(入出力) |
| バックエンドテストを作成/実行/修正する。「これが動作することを証明する」 — ユニット/統合(Testcontainers)/プロデューサー契約 + 実行可能な検証ループ | backend-testing | 階層化テストスイート、実際の依存関係による統合テスト、契約プロデューサーチェック、✓/✗検証レポート |
サーフェスオーバーレイ(最大1つのベースサーフェスを追加)
ランタイム/システムタイプに一致する1つのベースサーフェスを選択します。surface-agentic はその上に追加的にスタックされます(上記のステップ3)。サーフェスはジョブの適用方法を変更します。ジョブリファレンスを指し示すものであり、再定義するものではありません。
| システムタイプ | 読むもの | 変更点 |
|---|---|---|
| 標準的な長時間実行リクエスト/レスポンスサービス — モジュラーモノリスまたは少数のサービス、HTTP + リレーショナルストア(デフォルト/フォールバック) | surface-rest-crud | 関心領域のスコープ設定モデルの選択、アダプターがランタイムを分離するシーム、言語ごとのイディオム、12ファクタースキャフォールド |
| サーバーレス/エッジ — Workers、Lambda、Bun-edge、Vercel/Netlify Functions。コールドスタート、スケール・トゥ・ゼロ、呼び出しごとの課金。 | surface-serverless-edge | ステートレス性、コネクションプーリングの障害モード(トランザクションモードプーラーまたはHTTPネイティブドライバー)、D1/KV/R2/Durable Objects マッピング |
| リアルタイム — WebSocket/SSE/pub-sub、ステートフル接続、プレゼンス、ルーム。チャット、コラボレーション、ライブダッシュボード、マルチプレイヤー。 | surface-realtime | SSE vs WSトランスポート、アクター・パー・コネクション/ルーム、プレゼンス抽象化、メッセージごとの信頼性、ファンアウト/スケーリング |
| イベント駆動マイクロサービス — gRPC + イベントバックボーン(Kafka/NATS)を介した独立してデプロイされるポリグロットサービス、サービスメッシュ。 | surface-event-driven-microservices | モジュラーモノリス優先ゲート、データベース・パー・サービスの結果(サーガ/CQRS)、サービス間契約の進化、同期 vs 非同期の分類 |
| エージェント指向 ⭐ — LLM/エージェントシステムにサービスを提供するバックエンド: ツール/MCPエンドポイント、RAG基盤、エージェントが読める契約。追加的 — ベースサーフェスの上にスタックし、それを置き換えません。 | surface-agentic | デフォルトの制御プレーンとしての耐久性実行、ツール/MCPエンドポイント、エージェントから読める型付き契約 + エラー、RAG基盤(コアではない)、エージェントスコープの短命トークン |
ハンドオフ
ダウンストリームのビルド/検証作業が期待される場合(operate がデプロイ/監視する、quality が独立して検証する、frontend が同じ契約に基づいてコーディングしている)、handoff を読み、handoff.yaml コンパニオンを出力します。ダウンストリームが何も読まない独立したリクエストの場合はスキップします。
普遍的な不変条件
- 決定の内部で実装する。 動作するサーバーを所有します。何を構築するか、その理由、その受け入れ基準、またはその優先順位(→
product)は所有しません。境界/契約形状/NFR予算/脅威モデルの決定(→architecture)、OLAP/パイプライン(→data)、LLM/エージェントのコア(→ai)、デプロイ/CI/監視(→operate)、独立した負荷テスト/スキャン/ゲート(→quality)、またはデプロイできないベンダーにまたがるビジネスプロセス(→automation)は所有しません。上流の成果物を消費します。それらが存在しない場合(スタンドアロン実行)は、ギャップを埋めるために契約や脅威モデルを発明するのではなく、明示的にそのように述べます。 - あなたの基盤はあなたが制御するものです。
async-and-messagingのサーガ、冪等性、アウトボックスは、相手の参加者があなた自身のサービス、または重複排除できるWebhookであることを前提としています。参加者が不透明で、スクリプト化できず、部分的に人間的である場合 — ベンダーに送信取消しがないためのロールバック不可、ベンダーフリート全体での認証情報の期限切れ、人間の承認ステップ、またはベンダーの状態に対する調整ループでのみ捕捉できるドリフト — それはautomationです。ここでのプリミティブは引き続き適用されますが、それらをめぐる運用規律は自動化側のものです。 - 検索優先 / 陳腐化防止。 バックエンドフレームワーク/ORM/DBは急速に破壊的変更をリリースします(Prisma 7、Drizzle 0.x→1.0、Go 1.22 ルーティング、Kafka 4.0 KRaft専用、Redisライセンス変更、PG19)。フレームワーク/ORM/DB固有のコードを生成する前に、現在の公式ドキュメント/型を取得し、イディオムをターゲットリリースにバージョンゲートします — 急速に変化するターゲットに対して、暗記したAPIに決して依存してはいけません。
- デフォルトスタックから始め、そこから逸脱する。 スタックごとに現在のモーダルデフォルトを命名しますが、すべての推奨は具体的な選択 + 構築しないもの + トレードオフであり、可逆性によって重み付けされます。基本にアンカーを据えます(SQLの前にORM、モジュラーモノリス優先、at-least-once + 冪等コンシューマ、パラメータ化クエリ)。採用数値はエンゲージメントであり、絶対的な真理ではありません — トレンドを追いかけないでください。各パスは3〜5の決定に制限します。
- 網羅的なチェックリストは、統一されたテーブルと自己監査カウントを使用し、散文形式にしない。 「N個の制御/項目をカバーする」タスク(OWASP制御、API契約レビュー、12ファクター監査、ASVSマッピング)の場合、項目ごとに1行を埋め、カバーされた行数を合計に対してカウントしてから完了とします。散文形式のパス1回では、行が確実に欠落します。
- 完了前に動作を証明する。 検証ループ(lint → migrate → test → エンドポイントを叩く → diff-review)を完了ゲートとして提供し、フェーズごとに✓/✗を報告します。
qualityの独立したゲートとは区別されます。記憶からアサートしてはいけません。 - 事実、決定、前提、提案を区別する。 上流の決定とユーザーの制約を維持するか、競合を明示的にフラグします。リポジトリと成果物の証拠を、一般的なデフォルトよりも優先します。未知のものは値を発明せずにTBDとして記載します。
コアワークフロー
- リクエスト、コードベース、および上流の成果物(契約、NFR予算、脅威モデル、ADR、
handoff.yaml)を検査します。重要な前提と未解決の入力事項を所有者とともに記録します。 - ルーティング(上記参照): 1つのプライマリジョブ、≤1つのベースサーフェス、呼び出し元がエージェントの場合は
surface-agenticを追加的にスタックします。フレームワーク/ORM/DBコードの前に検索優先。選択したリファレンスを完全に読みます。 - リファレンスが名前を挙げたフレームワークに基づく成果物を生成します — 具体的な選択 + 構築しないもの + トレードオフ、パスごとに3〜5の決定に制限。
- それが動作することを証明する検証ループ(フェーズごとに✓/✗)を実行します。ダウンストリームのビルド/検証作業が期待される場合は、
handoff.yamlを出力します。
成果物契約
各リファレンスは、独自の成果物 — 動作する実装とその背後にある決定記録 — を定義します。すべてのバックエンド成果物は、行われた決定と検討されたオプション、受け入れられたトレードオフ、区別された事実/決定/前提、およびフレームワーク/ORM/DB固有のコードについては、ターゲットバージョンの現在のドキュメントがチェックされたことを記録する必要があります。網羅的なカバレッジの成果物(OWASP制御、APIレビュー、12ファクター)は、自己監査カウント付きの統一テーブルであり、散文形式ではありません。完全なバックエンドパスは、最大5種類の成果物 — 動作するサービス、実装された契約、独自のテスト、テレメトリフック、および assets/ 内の記入可能なチェックリスト — に加えて、ダウンストリーム作業が期待される場合は機械可読な handoff.yaml コンパニオンを生成します。handoff を参照してください。
完了とハンドオフ
完了前に:
- 要求されたすべての成果物が存在し、その受け入れ基準がチェック可能であることを確認します。
- 動作を証明するループが実際に実行されたこと(フェーズごとに✓/✗)を確認します(アサートされただけではない)。
- すべての網羅的チェックリスト成果物が、自己監査カウント付きのテーブルであり、散文形式ではないことを確認します。
- 決定、前提、リスク、および未解決の質問を、名前付きの所有者とともに記録します。
- ダウンストリームのビルド/検証作業が期待される場合、成果物パス、決定、制約、リスク、および推奨される次のスキルを含む
handoff.yamlコンパニオンを出力します。また、脅威モデルが消費された場合は、バックエンド実装の制御と品質検証の制御との間の境界を述べます。ビルドスキルを黙って呼び出さないでください。recommended_nextで名前を指定します。
リソース
選択したルートが必要とするものだけを読みます。事前にロードしてはいけません。上記のルーティングテーブルは各リファレンスの貢献を命名しています — これがインデックスです。
- プライマリジョブ(references/): api-implementation · domain-logic · persistence · auth · async-and-messaging · caching-and-performance · server-security · service-integration · backend-testing。
- サーフェスオーバーレイ(references/): surface-rest-crud (デフォルト) · surface-serverless-edge · surface-realtime · surface-event-driven-microservices · surface-agentic ⭐ (追加的)。
- パイプライン: handoff — スタンドアロン vs パイプラインビヘイビア、および
operate、quality、frontend、data、aiによって消費されるhandoff.yamlコンパニオン。 - アセット(assets/): バックエンドサービススキャフォールド(12ファクター) · ゼロダウンタイムマイグレーションチェックリスト · 認証実装チェックリスト · OWASP バックエンド制御チェックリスト · 冪等性とアウトボックスのレシピ · API契約レビューチェックリスト · 検証ループテンプレート ·
handoff.yamlエンベロープ。