web-dev-qa-db-ja.com

REST、RESTFul、SOAおよびマイクロサービスの簡単な用語とは何ですか?

REST/"RESTFul"、restfulservices、webservices、SOA、およびマイクロサービスが何であるかを知っていたと思いましたが、これらの用語が過度に使用されている、誤用されている、または定義が単純です。

上記の用語が何を表しているのか、その具体的な定義、共通性と相違点、利点と欠点、そして最も重要なことであるボトムラインを明確に理解したいと思います-これらの用語を適切に使用するために覚えておくべき最も重要なことです。

30
Lewix

免責事項:この投稿のほとんどは主観的なものです。ここでは、厳密に何かを定義する試みは行われていません。単にコンテキスト化して、概念とそれらの相互関係のグローバルな概要を説明しようとしています。

REST/"RESTFul"、restfulservices、webservices、SOAおよびmicroservicesを知っていると思った

これらの用語はすべて、Service Oriented Architectures(SOA)の傘に該当すると思います。 Webサービスは、Web関連技術を使用したSOAです。 RESTとそのサブセットRESTfulは、Webサービスを実装するための一連のプラクティスです。最後に、マイクロサービスはSOAプラクティスの新しいセットです。

上記の用語が何を表しているのかを明確に理解したいと思います

この点に対処しようとしますが、非公式の定義を使用し、長所と短所を入力しません。それは長すぎるだろうし、最大のポイントは説明から明らかだと思う。

[〜#〜] soa [〜#〜]

この場合、名前は一目瞭然だと思います:SOA-Service Oriented Architectureの略-サービスに焦点を合わせて設計されたアーキテクチャを指します。さて、ここで注意が必要な部分は、サービスを検討する場合と検討しない場合があり、それはまったく異なるトピックです。

Webサービス

これは、Web関連テクノロジーを使用したSOAのサブセットを説明します。これには通常、HTTPとXMLが関係しますが、FTPも使用できます。ここでのwebという用語は、一般に標準的なインターネットテクノロジーを指すため、かなり曖昧だと思います。

REST(ful)

RESTは、通信にHTTPを使用することを中心に展開するWebサービスのサブセットであり、したがってSOAです。 URLに対する特定の関連性など、特定の一連の一般的なプラクティスがあります。

約10年前にRESTを紹介したとき、RESTfulは、リソースが一意のURIを持ち、HTTP動詞にマップされたCRUD操作によって管理される、より厳密なREST実装として提示されました-Create = POST、Read = GET、Update = PUT、Delete = Delete

HTTP GETまたはPOSTリクエストまたは/users/1/update URLを介してユーザー情報を更新することは、RESTでは完全に有効ですが、RESTfulではありません。後者の場合、アプローチは/users/1上のHTTP PUTまたはPATCH を使用することです(これは、残りの操作のURLでもあり、単にHTTP動詞を変更します)。

私はこの区別が長年にわたってあいまいになっていることを発見しました。ただし、RESTfulはRESTのより厳密なサブセットであるといわれています。 (正確な要件は議論の余地があるかもしれません。)

EDIT-より正式な定義:

RESTはRepresentational State Transferの略で、Roy Fieldingが博士号で発表した 。分散ハイパーメディアシステムのアーキテクチャスタイルとしてのthesis 。強調点は、ハイパーメディアと自己封じ込めにあり、クライアントを事前の知識から切り離します。 Webサイトは一例です。Webサイトは単一のURI(Webサイトのルート)とメディアタイプ(HTML)で構成され、サーバーはこれを介して、クライアントが必要とするすべてのやり取りに関してクライアントが必要とするすべての情報を提供します。

RESTについて話している99%の人々は、本当に RPCまたはHTTPベースのインターフェース を意味します。HTTPエンドポイントを使用して特定のアクションを呼び出すか、データを照会します。フィールディング自身 はこれを明確にしようとしました 。特定のHTTP動詞といくつかのパラメーターを想定した一連の定義済みURLによって形成されるAPIは、その99%に該当します。上記の説明も同様です。しかし、この用語自体が誤用を乗り切ることができるとは思わず、その新しい意味を受け入れなければならないと思います。

マイクロサービス

これは最近の用語です。独立してデプロイ可能な単純なサービスのセットとして、アプリケーションの実装を促進します。これは、通常エンタープライズサービスバスを含む複雑なシステムの構築に使用される非常に複雑なサービスのセットとしてのSOAアーキテクチャの古典的なアプローチとは対照的です。ただし、通常SOAはそのようなシステムに関連付けられますが、より広い用語であり、実際、マイクロサービスもSOAのサブセットであることに注意することが重要です。

マイクロサービスは、通常、最新のJavaScriptフルスタックと一緒に表示されます。つまり、サーバーからユーザーインターフェイスまで、すべての垂直コンポーネントにJavaScriptを使用します。これらのJavaScriptフルスタックを使用すると、統合が簡素化されるため、開発がスピードアップする可能性があるためです。これらのスタック、およびそれらを使用して実装されるマイクロサービスは、通常RESTを介して設計されますが、理論的な観点からは、同じ哲学に対する異なるアプローチの使用を妨げるものはありません。

23
jnovo

これらの用語の分類学的ビューを紹介します。

マイクロサービス

最小限の責任に特化したサービスのサブタイプです。

ウェブサービス

サービスのサブタイプでもあり、Webの要件とニーズに該当するサービスのタイプに特化しています。

SOA

はアーキテクチャのサブタイプであるため、いくつかのコンポーネントとそれらの関係の構造ビューであり、それぞれサービスとそれらのサービス間の通信です。

残り

httpプロトコルの基礎となる通信のサブタイプです。

安らかな

アーキテクチャのサブタイプ(一部のコンポーネントとその関係の構造図)であり、コンポーネント間の関係によって休息通信に制限されています。

3
shvahabi