microservices-fiap — FIAP向けマイクロサービス(注文・決済)

Web

概要

このリポジトリは、FIAPのDevOps/Cloud Architectureコース向けの課題実装で、マイクロサービスアーキテクチャの学習を目的としたサンプルプロジェクトです。Node.jsとExpressを用いて「注文(Order)」と「決済(Payment)」という2つの独立サービスを実装しており、各サービスがそれぞれSQLiteのローカルデータベースを持ちます。サービス間の責務分離やデータ分離、REST APIによる疎結合設計などマイクロサービスの基本原則に沿った構成で、学習・実験用途に最適です。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 6
  • ファイル数: 3
  • メインの言語: JavaScript

主な特徴

  • Node.js + Expressによる軽量なマイクロサービス実装
  • 各サービスが独立したSQLiteデータベースを所有(データ分離)
  • 注文管理(service-order)と決済処理(service-payment)の2サービス構成
  • 学習/デモ用にシンプルで拡張しやすい設計

技術的なポイント

本プロジェクトはマイクロサービス設計の教育的サンプルとして、いくつか注目すべき技術的選択を示しています。まず、サービスごとに独立したプロセス(Expressアプリ)と独自のSQLiteストアを持たせることで「データ所有権(Data Ownership)」とサービス境界を明確にしています。この構成はトランザクションの分離やデプロイ単位の独立性を実現しますが、分散トランザクションや整合性確保(例:注文と支払いの一貫性)には別途設計(イベント駆動、サガパターン、補償トランザクション等)が必要になります。SQLiteは開発やローカル検証に適した軽量DBですが、本番的なスケールやマルチインスタンス実行、並列書き込み性能には制限があるため、コンテナ化やスケールを想定する場合はPostgreSQLやMySQL、クラウドRDBへの切替を検討すべきです。また、REST API設計(エンドポイント、HTTPステータス、エラーハンドリング)や環境変数での設定管理、ログとメトリクスの出力、テストやCI導入(ユニット/結合テスト)などが次の改善ポイントになります。ローカルでの複数サービス起動にはdocker-composeやKubernetesでのデプロイ設計が有効で、サービス間通信にはHTTPのほかメッセージング(RabbitMQ, Kafka)での非同期連携を導入すると堅牢さが向上します。

プロジェクトの構成

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

  • README.md: file
  • service-order: dir
  • service-payment: dir

まとめ

学習目的に最適なシンプルなマイクロサービス実装。拡張しやすい基盤。

リポジトリ情報:

READMEの抜粋:

Desafio Arquitetura de Aplicações

🛒 Microserviço de Pedidos e Pagamentos

Este projeto é uma aplicação de estudo de arquitetura de microserviços, utilizando Node.js, Express e SQLite.

Ele é composto por dois serviços independentes:

  • Service Order → Responsável pela criação e gerenciamento de pedidos.
  • Service Payment → Responsável por processar pedidos e registrar pagamentos.

Cada serviço possui seu próprio banco de dados (SQLite), reforçando o princí…