マイクロサービスで設計する際、別のサービスの特定のデータを紐づけたい場合、別サービスのデータのIDなどを自分のDBに保存してもよいものなのでしょうか?
良いたとえではないですが具体例を挙げます。
ブログアプリを作るとして、2つのマイクロサービスで構成するとします。
- ユーザー管理マイクロサービス
- 投稿マイクロサービス
1つのアカウントでいろんなサービスを使えるようにユーザー管理だけを別サービスにするというのはそこまでおかしくはない気もします。
ブログアプリ(フロント)では、各マイクロサービスを操作して以下の
1.ユーザー管理マイクロサービスでログイン処理をし、ユーザーID、ユーザー名などを取得
2.投稿マイクロサービスから投稿内容を取得して表示したり、サービスにブログ投稿を依頼したりする
この時、投稿マイクロサービスでは以下のようなモデル(Postテーブル)があるはずです。
Post { id int primary key title text message text user_id int <---- ユーザー管理マイクロサービスの発行するユーザーIDを持って良いものか } ```` フロントアプリでは、投稿表示などの際、Postテーブルに持っているユーザーidを元に今度はユーザー管理マイクロサービスからユーザー名などを拾ったりして表示するなどします。 一般的なWAF等で作るならPostテーブルにユーザーIDを持つこと自体は普通だと思います。 ただ、このケースではユーザーIDは別のサービスのidなので、投稿マイクロサービスとしては何の意味も持たない情報になります。これが設計上よいのか気になっています。 特定のサービス(この例ではユーザー管理マイクロサービス)に依存するシステムにもなってしまいます。 投稿マイクロサービス内で独自にユーザーテーブルをを持ったとしてもサービスにまたがって同じユーザーIDがあるだけでもっと悪い気がしますし。。 上記の例に限らず、自サービスの特定のデータを別サービスの特定のデータに紐づけたい、ということはありそうな気がするのですが、その際別のサービスのデータのキー項目を自サービスに保持してしまってよいものなのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。