Skip to content

v3バックエンド / 各種サービスを取りまとめて外部apiとして公開する

Notifications You must be signed in to change notification settings

twin-te/api-gateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5012202 · May 1, 2023

History

78 Commits
Apr 3, 2023
Feb 21, 2021
Apr 3, 2023
Apr 27, 2023
Apr 3, 2023
Jan 27, 2021
Jan 26, 2021
Mar 21, 2021
Apr 3, 2023
Jan 26, 2021
Jan 26, 2021
Apr 27, 2023
Mar 30, 2021
Apr 27, 2023
Jan 26, 2021
Jan 26, 2021
Mar 27, 2022
Apr 3, 2023
Mar 22, 2021
Feb 9, 2021
Mar 27, 2022

Repository files navigation

twinte-api-gateway

各種サービスを取りまとめて外部apiとして公開する

アーキテクチャ

api-gatewayは殆どドメイン知識を持たないため、ペーシックな3層アーキテクチャです。

api-gateway
├── openapi-spec    openapiの定義が含まれる(submoduleでリンク)
├── services        各サービスの実装(submoduleでリンク・protoファイルと開発環境でのdocker imageビルドのみに使用)
│   ├── course-service
│   ├── timetable-service
│   └ ... (追加予定)
└── src
    ├── api         expressを用いたapiの実装
    │   └── routes  ルーティング
    ├── gateway     各サービスの呼び出しをラップ
    │   ├── courseService
    │   ├── sessionService
    │   ├── timetableService
    │   └ ... (追加予定)
    ├── type        共通で用いる型定義等
    └── usecase     ユースケース
folder 役割
api プレゼンテーション層
usecase ビジネスロジック層
gateway データアクセス層

利用方法

ビルド済みDockerImageが利用できます。

環境変数名 説明 default
COURSE_SERVICE_URL course-serviceの接続先 course:50051
TIMETABLE_SERVICE_URL timetable-serviceの接続先 timetable:50051
DONATION_SERVICE_URL donation-serviceの接続先 donation:50051
INFORMATION_SERVICE_URL information-serviceの接続先 information:50051
SCHOOL_CALENDAR_SERVICE_URL school-calendar-serviceの接続先 school-calendar:50051
SESSION_SERVICE_URL session-serviceの接続先 session:50051
COOKIE_NAME session-serviceに渡すidが含まれるCOOKIE名 twinte_session
LOG_LEVEL ログレベル fatal / error / warn / info / debug / trace / off info

開発方法

Docker + VSCodeを推奨します。 以下その方法を紹介します。

  1. RemoteDevelopment拡張機能をインストール
  2. このプロジェクトのフォルダを開く
  3. 右下に Folder contains a Dev Container configuration file. Reopen folder to develop in a container と案内が表示されるのでReopen in Containerを選択する。(表示されない場合はコマンドパレットを開きopen folder in containerと入力する)
  4. node14の開発用コンテナが立ち上がりVSCodeで開かれます。また、依存するサービス等も自動で起動します。
  5. yarn install で依存をインストールします。
  6. yarn openapi でopenapiスキーマから型定義ファイルを生成します
  7. yarn proto でgrpcに必要なファイルを生成します
  8. yarn dev で立ち上がります。

v3バックエンドサービス一覧

  • API Gateway (here)
  • Auth Callback
  • User Service
  • Session Service
  • Timetable Service
  • Course Service (here)
  • Search Service
  • Donation Service
  • School Calendar Service
  • Information Service
  • Task Service