システム環境設定書(サーバー)
1. 本書の位置付け
本書は、認知症検診管理システムのサーバー環境に関する設定方針と、現時点で確定している設定項目を整理する。
2026年7月10日時点では、単独利用領域の払い出しに向けたヒアリングシート(Redmine #2044)が処理中であり、IPアドレス、実ホスト名、セキュリティグループID、OU/GPO、バックアップ時刻などの基盤払い出し値は未確定である。未確定値は、本書では仮値を置かず、確定元を明記して管理する。
2. 前提構成
| 項目 | 内容 | 状況 |
|---|---|---|
| クラウド基盤 | ガバメントクラウド(AWS) | プロジェクト計画書で定義済み |
| 利用方式 | 単独利用(区管理)方式 | ヒアリングシートで調整中 |
| OS | Amazon Linux 2023 | プロジェクト計画書で定義済み |
| コンテナ | Docker Engine on EC2 | プロジェクト計画書およびヒアリングシートで定義済み |
| ウイルス対策 | Trend Micro Cloud One Workload Security(C1WS) | Redmine #2108で有効化時期を調整中 |
| DBMS | Amazon Aurora PostgreSQL | プロジェクト計画書で定義済み |
| 公開経路 | 足立区庁舎内の基幹系業務端末からHTTPSで接続 | ALB利用前提で調整中 |
| 保健衛生システム連携 | 認知症検診管理システムのバックエンドから保健衛生システム SQL Server を参照 | 本番・検証の両環境で設定予定 |
3. サーバー構成
3.1 環境別構成
| 環境 | コンポーネント | サービス | サイジング | 備考 |
|---|---|---|---|---|
| 本番 | アプリケーション | Amazon EC2 | m7i.large | フロントエンド配信を担当 |
| 本番 | バックエンド | Amazon EC2 | m7i.large | GraphQL API、業務処理、保健衛生DB参照を担当 |
| 本番 | 帳票サービス | Amazon EC2 | m7i.large | 帳票・PDF生成系処理を担当 |
| 本番 | データベース | Aurora PostgreSQL | db.r6g.large | マネージドDBを利用 |
| テスト | アプリケーション/バックエンド/帳票 | Amazon EC2 | m7i.large | テスト環境は集約構成 |
| テスト | データベース | Aurora PostgreSQL | db.t4g.large | マネージドDBを利用 |
上記はプロジェクト計画書の構成である。最終的な台数、AZ配置、ALBターゲット構成、Auto Scaling有無は、ヒアリングシートの確定内容を正とする。
3.2 アプリケーション構成
| 区分 | 内容 |
|---|---|
| フロントエンド | React 19、TypeScript、Vite、TanStack Router/Query、Jotai、Tailwind CSS v4 |
| バックエンド | Bun、Fastify、Mercurius、Pothos、Prisma、PostgreSQL |
| API | GraphQL。バックエンドのパスは環境変数 GRAPHQL_PATH で指定する |
| 認証 | アプリケーション独自の職員アカウント、JWT、TOTP二要素認証 |
| 監査ログ | 画面起動ログ、操作ログ、印刷ログ、出力ログをDBに保持 |
| 帳票/PDF | 帳票テンプレート、PDF生成ジョブ、外部印刷API連携を利用 |
4. ネットワーク
4.1 利用者接続
| 項目 | 設定方針 |
|---|---|
| アクセス元 | 足立区庁舎内の基幹系業務端末および認知症検診用VDI |
| プロトコル | HTTPS |
| ポート | 443/TCP |
| 終端 | ALB利用前提で調整中 |
| 送信元制限 | 足立区側で指定される業務端末・VDIの送信元IPまたはネットワークに限定 |
ALB利用は、Redmine #2044 のヒアリングシートや統合運用管理補助者との調整内容を正とする。
4.2 サーバー間通信
| 通信 | プロトコル/ポート | 設定方針 |
|---|---|---|
| ALB → アプリケーション/バックエンドEC2 | HTTPまたはHTTPS、ポートはヒアリングシートで確定 | ALBターゲット設定に合わせる |
| バックエンドEC2 → Aurora PostgreSQL | PostgreSQL | DB用セキュリティグループで、バックエンドからの接続のみ許可する |
| バックエンドEC2 → 保健衛生システム SQL Server | SQL Server。既定は1433/TCP | 実際の待受ポートを確認し、バックエンドEC2からの参照通信のみ許可する |
| バックエンドEC2 → 印刷API | HTTPS | PRINT_API_URL で指定する |
| 管理・監視・C1WS・パッチ配信 | 統合運用管理補助者の基盤標準に従う | 共通セキュリティグループまたは基盤指定の通信を利用する |
保健衛生システム連携は、保健衛生システムNW設定変更方針を正とする。SQL Server ユーザーは参照専用とし、パスワードはソースコード、手順書、チケット本文に記載しない。
5. Active Directory
| 項目 | 設定方針 | 確定元 |
|---|---|---|
| EC2のドメイン参加 | 基盤標準に従う。アプリケーション認証はAD連携ではなく、職員アカウント・JWT・TOTPで実施する | ヒアリングシート、統合運用管理補助者 |
| 管理者権限 | 最小権限とし、構築作業者・運用管理者のアカウントを分離する | 運用設計、SOW |
| サービスアカウント | DB接続、保健衛生DB参照、外部API接続ごとに用途を分離する | 基盤設計、運用設計 |
6. ホスト名・識別情報
実ホスト名、プライベートIP、セキュリティグループID、ALB DNS名、DBエンドポイントは、リソース払い出し後に確定する。
| 環境 | 論理名 | 用途 | 実値 | 確定元 |
|---|---|---|---|---|
| 本番 | app | フロントエンド配信 | 未確定 | Redmine #2044 |
| 本番 | backend | GraphQL API | 未確定 | Redmine #2044 |
| 本番 | 帳票/PDF | 未確定 | Redmine #2044 | |
| 本番 | db | Aurora PostgreSQL | 未確定 | Redmine #2044 |
| テスト | app-backend-print | テスト環境 | 未確定 | Redmine #2044 |
| テスト | db | Aurora PostgreSQL | 未確定 | Redmine #2044 |
確定後は、統合運用へ引き継ぐ台帳に実値を記録し、本書には必要最小限の識別情報のみを記載する。
7. ディレクトリー構成
7.1 バックエンドコンテナ
バックエンドの Dockerfile では、作業ディレクトリーを /app とする。
| パス | 内容 |
|---|---|
/app/dist | TypeScript/SWCビルド後の実行ファイル |
/app/node_modules | 実行時依存パッケージ |
/app/package.json | 実行スクリプト、依存関係定義 |
/app/prisma | Prisma スキーマ、マイグレーション、seed関連ファイル |
/app/prisma.config.ts | Prisma 設定 |
7.2 設定値
本番・テスト環境の設定値は、環境変数または基盤の秘密情報管理機構で注入する。secret 値は本書に記載しない。
| 環境変数 | 用途 |
|---|---|
NODE_ENV | 実行環境。development、staging、production のいずれか |
PORT | バックエンドの待受ポート |
GRAPHQL_PATH | GraphQL エンドポイントパス |
DATABASE_URL | Aurora PostgreSQL 接続文字列 |
CORS_ORIGIN | 許可するフロントエンド origin |
LOG_LEVEL | Pino/Fastify のログレベル |
JWT_SECRET | JWT署名用 secret |
JWT_EXPIRES_IN | JWT有効期限 |
ENCRYPTION_KEY | TOTP秘密鍵・バックアップコード等の暗号化キー |
TOTP_ISSUER | TOTP発行者名 |
PRINT_API_URL | 印刷API URL |
OPENAI_API_KEY | 帳票テンプレート生成機能で使用するAPIキー |
OPENAI_MODEL | 帳票テンプレート生成機能で使用するモデル |
8. サービス起動と停止
8.1 起動
| サービス | 起動方式 | 備考 |
|---|---|---|
| バックエンド | コンテナ起動時に bun --enable-source-maps dist/index.js を実行 | PORT と GRAPHQL_PATH は環境変数から取得 |
| フロントエンド | bun run build で生成した静的ファイルを配信 | 配信方式はアプリケーションEC2の構成確定後に手順化 |
| DBマイグレーション | prisma migrate deploy をリリース手順に組み込む | 本番DBへの適用前にテスト環境で確認する |
| PDF生成ワーカー | PDF生成ジョブをポーリングして処理 | サービス化方式は帳票サーバー構成に合わせて確定 |
8.2 停止
バックエンドは SIGTERM または SIGINT を受信した場合、Fastify の HTTP サーバーをクローズしてからプロセスを終了する。停止、再起動、デプロイ時の具体的なコマンドは運用管理マニュアルに記載する。
8.3 ヘルスチェック
バックエンドは /health を提供する。レスポンスには、状態、時刻、環境、稼働秒数を含む。開発環境ではメモリ使用量も返却する。
9. データベース設定定義
| 項目 | 内容 |
|---|---|
| DBMS | Amazon Aurora PostgreSQL |
| ORM | Prisma |
| スキーマ管理 | Prisma schema と migration SQL |
| 主キー | UUIDを基本とする |
| 削除方式 | 業務データは原則として論理削除(deletedAt) |
| 楽観的ロック | version カラムを持つモデルで実施 |
| ログテーブル | ScreenLogs、OperationLogs、PrintLogs、OutputLogs |
| ジョブテーブル | PdfGenerationJobs |
本番環境のDB接続情報、認証情報、バックアップ設定、メンテナンスウィンドウは、基盤払い出し情報と運用設計で確定する。
10. ジョブスケジューラー
現時点で、OS cron や外部スケジューラーで定期実行する業務バッチは実装していない。
| ジョブ | 実装状況 | 実行方式 |
|---|---|---|
| PDF生成ジョブ | 実装済み | DBの PdfGenerationJobs を1秒間隔でポーリングし、5分超のロックはタイムアウトとして再キューする |
| DBマイグレーション | 実装済み | リリース時に prisma migrate deploy を実行する |
| 住基連携 | 設計・実装予定 | Redmine #1923で2026年9月末期限として管理 |
| 住基結合検証 | 計画済み | Redmine #1924で2026年10月末期限として管理 |
住基連携の定期実行方式は、保健衛生システムとの連携方式・疎通確認後に確定する。
11. その他ソフトウェア一覧
| 区分 | ソフトウェア | バージョン/設定 |
|---|---|---|
| OS | Amazon Linux | 2023 |
| コンテナ | Docker Engine | EC2上に導入。導入方法は基盤標準に従う |
| ランタイム | Bun | 1.3.5 |
| ランタイム/ビルド | Node.js | フロントエンド 24.11.1、バックエンド 24.12.0 |
| DB | Aurora PostgreSQL | バージョンは払い出し時に確定 |
| ORM | Prisma | 7.2.0 |
| APIサーバー | Fastify | 5.6.2 |
| GraphQL | Mercurius / Pothos | Mercurius 16.6.0、Pothos 4系 |
| ログ | Pino/Fastify logger | LOG_LEVEL で制御。機密項目はredact対象 |
| セキュリティ | C1WS | 仮運用開始は2026年10月1日以降予定。9月下旬頃にエージェント導入・有効化コマンド実行依頼予定 |
12. 未確定事項
| 項目 | 現状 | 管理先 |
|---|---|---|
| ガバクラ環境の払い出し時期 | 2026年8月中旬までの実施に後ろ倒しする見直し案を提示済み | Redmine #2044 |
| ALB、EC2、RDS、SG、IP、ホスト名 | ヒアリングシートで調整中 | Redmine #2044 |
| C1WS有効化 | 2026年10月1日以降に仮運用開始予定 | Redmine #2108 |
| 住基連携時のDV区分 | 取り込み可否を確認中 | Redmine #2111 |
| 印刷業者向けCSV出力項目 | 出力項目を確認中 | Redmine #2112 |