質問するログイン新規登録

意見交換

2回答

324閲覧

Webサービスのインフラ依存の機能開発の進め方について

ymmr

総合スコア135

設計

設計は、ソフトウェアやシステムを作る上での設計方針、仕様策定、アーキテクチャ選定などに関する投稿です。

インフラ

インフラは、クラウド環境やオンプレミスサーバーの構築、ネットワーク設計、セキュリティ対策など、インフラ全般の技術や運用に関する投稿に使われます。

0グッド

0クリップ

投稿2026/03/05 12:46

0

0

テーマ、知りたいこと

アジャイル開発で新規サービスを開発するとき、インフラ依存の機能開発の進め方についてご意見いただきたいです。

あとは、システム構成(インフラ構成)って最初期に決めておいた方がいいのかもご意見いただけますと幸いです。

背景、状況

たとえば、「全文検索機能」はAWSのOpenSearchとか使うと思うのですが、そういうインフラって開発の初期に決定すべきなのか、そのユースケースを実装するスプリントで決定すべきなのか、というのが自身ないので、どういう進め方をされているか聞きたいです。

自分的な結論は「後から変更が難しい」「後から変更すると手戻りが大きい」ものは最初期に決めるべきでそうでないものは後回しでいいのかなと思っています。Slackなら昔はRedis使っていたみたいですが、初期リリース当時は後からKafkaに変えようとするのは難しいのかなと(現在はKafkaらしいですが)

どんなサービスかは答えられる範囲で回答しますが、一応情報漏洩的な観点で伏せたいと思います。すみません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

回答2

#1

tamoto

総合スコア4430

投稿2026/03/06 03:17

こんにちは。

インフラが主体の場合もあれば、システムが主体の場合もあり、決められるところから始めるのが自然だと思います。
背景を読んだ限りでは、システムにとって「全文検索機能」が「何であるか」は重要ではないようなので、後で決めれば良いと思います。
逆に、「OpenSearch とか使う」から始まる開発なら、そこを後から変更することは考える必要すらないわけです。

例えば全文検索機能が必要なサービスがあるとしますね。
このサービスから見て使いたい「全文検索機能」とは、そこに「全文を検索する機能丸ごとが存在する必要がある」と考えるのではなく、「とあるパラメータを揃えて投げたら、全文検索された結果が返ってくる穴」くらいに抽象化して考えます。
すなわち、サービスが必要とする「最小のインターフェース」を考えるわけです。
サービスの開発を進めるにあたって、「どのようなインターフェースが必要か」まで考えておけばよく、そのインターフェースの向こう側が何であるかは考えなくても開発は進められます。
要は、インターフェースの実装は「サービスがインターフェースに求める要件」を満たしていれば良いので、いくらでも後から差し替えが効きます。
それで、例えばそのインターフェースの実装に「適当な固定値を返す誰か」等を置けば、それはユニットテストのテストスタブになるわけですね。

先にインフラの見当を付けておくことにもメリットはあり、「サービスが求めるインターフェース」をそのインフラで簡単に実装できるかどうか、という点についてインターフェースの設計を行う際の追加情報が得られます。
インフラの特性を活かしやすいインターフェースを考える余地が生まれるわけです。
後から変更して手戻りになりやすいのはここで、サービス側から考えた最良のインターフェースが、実はインフラ側からだと実装難度が高くて無理ということになりかねないからです。
この視点でも、インターフェースを設計する際には可能な限り最小の構成になるようにしておくと、ここをすり合わせるのが一気に簡単になるので、どちらを主体にして設計するにしても、最小性はとても重要です。

結論として、「設計できるところから設計すれば良いが、その間のインターフェース設計は常に可能な限り最小を維持することを目指す」と考えておけば十分だと思います。

#2

ymmr

総合スコア135

投稿2026/03/07 02:29

#1
回答ありがとうございます!

インフラが主体の場合もあれば、システムが主体の場合もあり、決められるところから始めるのが自然だと思います。

例として挙げた全文検索機能が悪かったのですが、今回まさにインフラが主体になるシステムでした。
コア機能がAWSのサービスなどをふんだんに使った構成になるイメージです。

後から変更して手戻りになりやすいのはここで、サービス側から考えた最良のインターフェースが、実はインフラ側からだと実装難度が高くて無理ということになりかねないからです。

なるほど・・!インターフェースを用いてインフラを抽象化することは実施していましたが、その観点は勉強になりました。
手戻りが効きやすくなるよう、インターフェースは最小を維持することを意識したいと思います。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

この意見交換はまだ受付中です。

会員登録して回答してみよう

アカウントをお持ちの方は

関連した質問