NotiFlow — 高速プロトタイピングの通知マイクロサービス

Web

概要

NotiFlowは、GraphQLをAPI層に、RabbitMQをメッセージブローカーに、Prisma + PostgreSQLを永続化基盤に採用した通知(Notification)サービスのサンプルプロジェクトです。作者は短期間(4日)での設計・実装を目標にしており、マイクロサービス的な責務分割と非同期処理のフローをシンプルに表現しています。Dockerを用いてコンテナ化されており、ローカルやCIでの立ち上げが容易です。学習目的やプロトタイプ作成に適した実用的な実装例となっています。

GitHub

リポジトリの統計情報

  • スター数: 2
  • フォーク数: 0
  • ウォッチャー数: 2
  • コミット数: 2
  • ファイル数: 22
  • メインの言語: TypeScript

主な特徴

  • GraphQLをフロントAPIに採用し、クエリ/ミューテーションで通知の作成や状態取得が可能
  • RabbitMQを使ったメッセージキュー/配信パイプラインにより非同期処理を実現
  • PrismaとPostgreSQLで型安全なデータアクセスとマイグレーションをサポート
  • Docker化により依存サービス(DBやRabbitMQ)とともに素早く環境再現できる

技術的なポイント

NotiFlowはフルスタック寄りのマイクロサービス設計を簡潔に示しています。TypeScriptで実装されたGraphQLサーバが受け取った通知リクエストを受理すると、データをPrisma経由でPostgreSQLに保存しつつ、RabbitMQへメッセージを発行して非同期配信のトリガーを行う、といった典型的なワークフローを備えます。RabbitMQは配信の再試行やワークキューとして働き、通知送信部分(例えばメールやプッシュなど)を消費者側で分離できるためスケーラビリティと耐障害性を向上できます。Prismaを使うことでスキーマ定義から型安全なクエリが可能になり、TypeScriptと相性が良い点もポイントです。さらにDockerにより、DBとメッセージブローカーを含む依存関係をコンテナで一括管理でき、ローカル起動やCIでの統合テストが容易になります。短期での実装ながら、非同期処理、データ永続化、API層の設計、コンテナ化というモダンなスタックがバランスよくまとまっており、学習用やプロトタイプの土台として有用です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .dockerignore: file
  • .env.example: file
  • .gitignore: file
  • .prettierrc: file
  • Dockerfile: file

…他 17 ファイル

(補足)上記にはプロジェクト設定やコンテナ化、コード整形ルール、環境変数のサンプルなど基本ファイルが含まれており、実際のアプリケーションコードやPrismaスキーマ、GraphQLスキーマ、RabbitMQの連携コードはリポジトリ内に配置されています。Dockerfileを利用したイメージビルドや.env.exampleを基にした環境構築で、ローカル環境にPostgreSQLやRabbitMQを立ち上げ連携させれば、すぐに動作確認が可能です。

まとめ

短期間でまとめられた実用的な通知マイクロサービスの良いサンプル。学習・試作に最適。

リポジトリ情報:

READMEの抜粋:

Notification Service

A microservice-style notification system built with GraphQL, RabbitMQ, Prisma, and Docker. This project was created to practice GraphQL and RabbitMQ, while maintaining a PostgreSQL database and microservice architecture.

“This fully functional notification service was designed and implemented in just 4 days, demonstrating rapid prototyping and full-stack skills with GraphQL, RabbitMQ, Prisma, and Docker.”

Table of Contents

  • [Features](#f…