言葉の意味は知っている。でも実は、ちゃんと説明しようとすると口ごもる。マイクロサービス、API、機能。どれも開発現場で当たり前のように使われるが、その違いを本質から理解するのは意外とむずかしい。違いを「感じる」のではなく、「わかる」状態にすることがこの記事の目的。
Contents
なぜマイクロサービスとAPIと機能は混同されるのか?
どれも「アプリの一部」に見えるため、境界があいまいになりやすい。言葉の並びや説明も似ている。
API(Application Programming Interface)は、システムの部品同士が会話するための約束事。
マイクロサービスは、アプリ全体を部品ごとに分解して動かす仕組み。
機能は、ユーザーに見えるアプリの動作そのもの。
どれも「機能を提供するための手段」に関わるが、役割は明確に異なる。
Google Cloud公式のアーキテクチャガイドでは、マイクロサービスを「疎結合で自己完結した小さなサービス」と定義している。これがAPIや機能との混乱の出発点。自己完結という言葉が、まるでAPIやUI上の機能と近い意味に聞こえる。
違いを比喩で理解する
レストランで食事をする場面を想像する。
料理を注文するのが「機能」。
厨房に注文を伝えるインターホンが「API」。
料理を作るキッチンの各セクションが「マイクロサービス」。
- サラダ担当、肉料理担当、デザート担当はそれぞれ独立している
- インターホンを通じてそれぞれに指示が届く
- 注文する人(ユーザー)はボタンを押すだけ
この構造が、アプリの中での機能・API・マイクロサービスの関係に近い。
機能とは何か:ユーザーが触れる表面の役割
機能(Feature)は「ログイン」「検索」「カート追加」など、ユーザーが目にする操作や反応を指す。
- ユーザーが「できること」の単位
- 技術的には、複数の処理やAPI、画面が組み合わさって一つの機能を構成する
- エンジニアリングだけでなく、プロダクトマネジメントにも関わる概念
機能は、バックエンドにどう実装されているかに関係なく、ユーザーにとって意味があるかで設計される。
APIとは何か:部品同士をつなぐ通訳
APIは、ソフトウェア同士が指示を出したり返事を受け取ったりするための入り口。
- マイクロサービスや外部サービスに命令を送るために使う
- APIは「この形式で話しかければ、こう返事するよ」という会話のマニュアル
- 開発者はUIからAPIを呼び出すことで機能を成立させる
英語では「Endpoint(エンドポイント)」と呼ばれる。POST /orders
などが典型。
Amazonでは1日数十億回、社内のシステム同士がAPIで通信していると言われている。エンジニア同士の口頭連絡が、APIという自動化された会話に置き換わっている状態。
マイクロサービスとは何か:裏側の仕組みを分解した考え方
マイクロサービスは、アプリケーションを細かいサービス単位で構築する設計思想。
- 各サービスが独立して動作・配備・修正できる
- サービス同士はAPIで通信する
- ユーザーが見ている「一つのアプリ」の裏には、複数のマイクロサービスが隠れている
Netflixはこの設計を徹底している。動画配信、検索、レコメンド、課金はそれぞれ別のマイクロサービス。障害が起きても他の機能に波及しないように設計されている。
英語ユースケースで整理する
例:POST /users
このAPIは、ユーザー情報を登録する命令。
- 機能:新規ユーザー登録ボタンを押す
- API:
POST /users
にフォームデータを送信 - マイクロサービス:ユーザー情報を処理・保存するサービスがバックエンドで動く
それぞれの層が階段状につながっている。ユーザー→ボタン→API→マイクロサービス。
どのように連携しているのか?
APIはマイクロサービス同士をつなぐ。以下の通信方法が存在する。
- 同期通信:APIエンドポイントにリクエストを送って即時に返答をもらう
- 非同期通信:メッセージブローカーを介して指示を渡し、あとで処理
なぜこれが重要なのか?
理解の違いは、設計に直結する。
- 機能しか意識しないと、APIが複雑になりやすい
- APIだけ意識すると、マイクロサービスの独立性が損なわれる
- マイクロサービス設計を理解していないと、CI/CDや監視体制が破綻しやすい
ShopifyのCTO Jean-Michel Lemieuxは「マイクロサービスは開発だけでなく、組織文化の分割でもある」と語る。コードの設計は、チームの設計にも影響する。
まとめ
マイクロサービスは、アプリの裏側を部品に分けて自立させる仕組み。
APIは、その部品同士や外部との会話のルール。
機能は、ユーザーが操作して結果を得る目に見える体験。
言葉の違いを知ることは、設計の精度を上げることに直結する。構造が見えれば、開発の手戻りも減る。理解することで、アプリがなぜ今の形になっているかが、少しずつ読めるようになる。そうしてあなたは、コードの裏側を読めるようになる。