マイクロサービスベースのアプリケーションを構築する場合、RESTful APIとマイクロサービスという用語は密接に関係しますが、両者はまったく異なるものを指しています。以下は、RESTful APIとマイクロサービスの違いの簡単な説明です:

  • マイクロサービス:より大きなマイクロサービスベースのアプリケーションを形成する個々のサービスや機能またはビルディングブロック
  • RESTful API:個々のマイクロサービスを統合し、単一のアプリケーションとして機能させるためのルール、ルーティン、コマンド、プロトコル、もしくはプロトコル

もちろん、マイクロサービスやRESTful APIについて知っておくべきことはまだまだたくさんあります。そこで、この記事を書きました。本記事が読者の皆様の一助になれば幸いです。

目次

RESTful APIとは

まず、「API」(アプリケーション・プログラミング・インターフェース)の定義から始めましょう。APIとは、ユーザーやアプリケーションが特定のアプリケーションやマイクロサービスとやり取りしたり、データにアクセスしたりするためのルール、コマンド、パーミッション、プロトコルの定義された集まりのことです。マイクロサービスを接続してマイクロサービスベースのアプリケーションを作成する場合、APIは、個々のサービス間で特定のアクション、インタラクション、コマンド、およびデータ共有を制限および許可するルールを確定します。

Hackernoonマヘッシュ・ハドラー氏によると

APIはインタフェースであり、これを通して多くのデベロッパーがデータを使って作業します。よくデザインされたAPIはいつも非常に使いやすく、デベロッパーの仕事も非常にスムーズになります。APIはデベロッパーのためのGUI(グラフィカル・ユーザ・インタフェース)であり、もしそれが分かりにくかったり、言語が豊富でなかったら、デベロッパーは他に代わりを探すか、使うのをやめてしまうでしょう。デベロッパーの体験は、APIの品質を測る最も重要なメトリクスになります。
マイクロサービスアプリケーション構築のためのAPIの代表的なものに、「RESTful API」 または 「REST API」 と呼ばれるものがあります。REST APIは、多くのデベロッパーに馴染みがあり、使いやすいHTTPコマンドを使用するため、デベロッパーの間で人気のある規格です。ここでは、RESTful APIの決定的な特徴について説明します:

  • REST(REpresentational State Transfer)モデルを採用したAPI
  • ウェブデベロッパーに馴染みのあるHTTPコーディングに依存
  • SSL(Secure Sockets Layer)暗号化通信の使用
  • 異なるプログラミング言語で書かれたアプリやマイクロサービスを接続するのに使用できるもの
  • REST APIは、CRUD操作(作成、読み出し、更新、削除)を行うWebアプリケーションの作成が可能

REST APIに共通するコマンド(又は「動作」)には、次のようなものがあります。

  • HTTP PUT
  • HTTP POST
  • HTTP DELETE
  • HTTP GET
  • HTTP PATCH

デベロッパーは、このRESTful APIコマンドを使ってアプリケーションやサービス内のさまざまな「リソース」に対してアクションを実行します。このリソースは、従業員に関連するデータベース内のデータ、会計の詳細、医療記録、その他多くのものである可能性があります。リソースに加えて、RESTful APIはURL(Uniform Resource Locator)を使うので、アクションを実行するリソースを見つけて示すことができます。
RESTful APIのコマンド、ルール、プロトコルの馴染みやすさと信頼性により、関連するAPIを持つアプリケーションと統合するアプリケーションを簡単に開発でき、これは、Instagram、Twitter、Salesforce、Facebookなどの企業が、自社のサービスをサードパーティのアプリケーションと統合できるようにしたい場合に特に当てはまります。
Facebook Messengerプラットフォームは、RESTful APIのいい動作例です。Messengerは、メッセージを送信する「送信」やファイルを添付して送信する「添付」など、さまざまなマイクロサービスから構成されており、サードパーティのデベロッパーが、これらのサービスや他のメッセンジャーサービスと統合するアプリケーションを作成できるように、FacebookはRESTful APIをいくつか公開しています。

Facebookは、MessengerのREST APIを次のように説明しています:

Messengerプラットフォームには、素晴らしいMessenger体験を作るのに必要なツールがあるREST APIのセットがあります。メッセージの送信からMessenger上の既存顧客の検索、ボットのカスタマイズまで、APIはMessengerプラットフォームでの作業における主要な手段です。
以下は、Messenger プラットフォームで利用できる3つのREST APIです:

  • 送信API:アプリがMessengerプラットフォームと統合するための主要な方法として機能します。送信APIにより、デベロッパーはFacebook Messengerのアカウントにログインし、テキストメッセージやファイル添付を送受信するサードパーティーアプリケーションの作成ができ、これにより、自動応答ボット、チャットボット、およびMessengerプラットフォームと統合するその他のサービスを構築できます。
  • 添付ファイルアップロードAPI:アプリから画像、音声、動画、ファイルをアップロードして送信できるようになります。また、このAPIを使用すると、アップロードしたアセットを再利用できるため、繰り返し送信するファイルはアップロードし続ける必要がありません。
  • メッセージインサイトAPI:Facebookページに関連するページインサイトをアプリで取得できるようになります。これにより、会話数、応答性、ブロック率などに関連するさまざまなFacebookメトリクスをアプリで利用できるようになります。

Facebook、Salesforce、その他無数のクラウドベースのアプリケーションやマイクロサービスのRESTful APIにより、アプリケーションデベロッパーは、自社のアプリケーションを最も幅広いプラットフォームやサービスに接続、統合できるようになりました。これにより、プラットフォームデベロッパーは、より大きなパワー、柔軟性、拡張性、およびリーチを得ることができ、元のプラットフォームデベロッパーが想像もしなかったような方法でイノベーションを促すことができます。

マイクロサービスとは

マイクロサービス、そしてマイクロサービスベースのアプリケーションの説明には、モノリシック・アプリケーションの説明から始めるのが一番です。 
企業は長い間、業務を遂行し、顧客にさまざまな機能やサービスを提供するために、モノリシック・アプリケーションに依存してきました。モノリシック・アプリケーションのサービスや機能のコードは、すべて同じプログラミングの中にあります。
TechTargetでは、モノリシックなアプリケーションを次のように説明しています:
モノリシックなソフトウェアは自己完結するようにデザインされており、プログラムのコンポーネントは、モジュラーソフトウェアプログラムのように疎結合ではなく、相互に接続され依存し合っています。密結合アーキテクチャでは、コードの実行やコンパイルのためには、各コンポーネントとその関連コンポーネントの存在が必要です。
さらに、プログラムの構成要素の更新が必要な場合、アプリケーション全体を書き直さなければいけませんが、モジュラーアプリケーションでは、マイクロサービスなどの個別のモジュールを変更しても、他の部分に影響を与えることはありません。
モノリシック・アプリケーション・アーキテクチャは、企業が事業を開始した当初は理にかなっていますが、最終的には、事業や顧客基盤の成長に合わせてモノリスのアップグレードや拡張が必要になります。モノリスのサービスや機能のコードは密に結合されて相互依存性が高いため、これは大変な作業です。
デベロッパーがモノリスに新しいサービスや機能を追加すればするほど、将来のアップグレードのためにコードを紐解くことが難しくなり、最終的には、アプリケーション全体をリファクタリングすることなくモノリスの一部を変更するのは事実上不可能になります。さらに、モノリシック・アプリケーションのスケーリングは、デベロッパーが個々の機能やサービスを単純にスケーリングするのではなく、アプリケーション全体をスケーリングしなければならないため、非効率的でもあります。
モノリシックなアプリケーションのアップグレードやスケーリングの課題は、最終的にデベロッパーのマイクロサービスベースのアプリケーションアーキテクチャ作成につながりました。マイクロサービス・アーキテクチャ・スタイルは、モノリスをその構成要素となる機能やサービスに分解し、次に各サービスを小さく、自律的で独立したアプリケーション、すなわちマイクロサービスとして開発し、実行します。そして最後に、このマイクロサービスを、通常はRESTful APIを使ってざっくりと接続し、より大きなアプリケーションを形成するために連携させます。

Techopediaでは、マイクロサービスを次のように説明しています:
マイクロサービスとは、より広範なプラットフォーム、アプリケーション、またはサービスを組み合わせたサービスの集合体として提供するという考え方であり、より包括的なアーキテクチャモデルを構成する、専門的できめ細かな連携を提供します。
アプリにおけるマイクロサービスは、さまざまな方法による構成で使われます。マイクロサービスはアプリケーション内で、例えば、ユーザーの認証、特定のデータモデルの生成、特定のレポートの作成など、定義された動作を実行します。こういったマイクロサービスは、多くの場合、言語にとらわれず、どのようなタイプのアプリにも適合し、全体的な目標を達成するために互いに連絡または協力できると考えることができます。

APIとマイクロサービス:両者の連携方法

RESTful API とマイクロサービスについての理解が少し深まったところで、この2つの概念がどのように連携してマイクロサービスベースのアプリケーション・アーキテクチャを構築するのかが見えてくると思います。マイクロサービスは、さまざまなサービスを実行することでアプリケーションの「ビルディング・ブロック」として機能し、RESTful APIはマイクロサービスをアプリケーションに統合する「接着剤」として機能するのです。
デベロッパーがRESTful APIとマイクロサービスを使用して、このようなモジュール式のサービス指向アーキテクチャを構築すると、企業は次のようなメリットが得られます:

  • 拡張性:アーキテクチャ全体ではなく、必要なサービスのみを拡張すればよいため、簡単にアプリケーションの拡張ができ、コスパもいい。
  • コスト削減:早く簡単なアップグレードによる開発コスト削減が可能
  • レジリエンス:故障の連鎖を予防、抑制する能力の向上
  • 簡単なアップグレード:サービスや機能の追加、アップグレード、削除がしやすく、コーディングの衝突が少ない、プラグイン可能なモジュール式アーキテクチャ
  • 迅速な開発:新機能や新サービスを開発する際の市場投入までの時間の短縮が可能
  • セキュリティとコンプライアンス:独立して動作し、互いの知識を持たないマイクロサービスの封じ込めにより、データのセキュリティとコンプライアンスが向上。マイクロサービス間のRESTful API接続により、データアクセスと共有のための厳格なルール設定が可能
  • 言語非依存:異なる言語でプログラムされたモジュール化されたサービスをどのようなプラットフォームで動作しているかに関わらず接続可能
  • 少数精鋭チームの構築:マイクロサービスごとに小規模でアジャイルな開発チーム
  • アジリティ:変化するビジネスニーズに迅速に対応するためのより高い俊敏性
  • クラウドベースのアーキテクチャ:マイクロサービスは通常、Amazon AWSのようなクラウドベースのサービス上で実行

RESTful APIを数分で構築するには

RESTful APIとマイクロサービスの違いについて説明してきましたが、1つだけ取り上げていない問題があります。それは、アーキテクチャ内の各マイクロサービスに対してカスタムRESTful APIをハンドコーディングするには、膨大な時間がかかるという事実です。単純なRESTful APIを手作業でコーディングするのに3週間かかることもあるのです。
Integrate.ioのAPI管理サービスのような最新のiPaaS(Integration Platform as a Service)を利用すれば、このような開発時間を回避することができます。Integrate.io API管理サービスには、API自動生成機能があり、どんなデータベースも数分でREST APIに変換することができます。また、SOAP(Simple Object Access Protocol) Web ServiceをREST APIに瞬時に変換することもでき、これにより、SOAP APIにRESTエンドポイントが適用され、より簡単に作業できるようになります。
14日間無料トライアル、無料デモやご相談は、こちらのリンクよりリクエストをお願い致します。後ほど、弊社担当者よりご連絡させて頂きます。