読者です 読者をやめる 読者になる 読者になる

山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

マイクロサービスとSOA

マイクロサービスを調べているとなつかしのSOAと比較する記事がよく出てきますね。まあ似ているといえば似ていますがイメージが全然違うので私には思いもよりませんでした。

共通しているところ。複数システムをHTTPベースの仕組みでつなぐというところ。

私のイメージではSOAのほうはwebのシステムが広まってきたあたりの時期のこと。メインフレームの基幹システムがもともとあって、そこにwebのシステムが追加される形で増えます。ECなんかをすると注文を販売管理や出荷のシステムにつないだり在庫数の問い合わせをするなど基幹システムと連携させることが増えてきました。そういう状況に対してSOAPで接続させようというところから始まったものだと思います。その延長でじゃあ既存のシステムにみんなAPIをつけて相互に連携させよう、となったものだと思います。でも理想が先行しすぎてあまり広まっていないまま終わったと思います。

マイクロサービスの私のイメージは、ネット系のシステムに関するものです。つまり基幹系はあまり関係ない。webシステムだけでも巨大になってきていろいろ支障が出てきます。1箇所の変更の影響範囲が大きくリスクがある、影響範囲の洗い出しと修正に工数がかかる。新しい言語やフレームワークなどを使いたくても全部作り直すとコストが膨大でとてもできそうにない。そういう状況の中で、じゃあ新しく作る機能を切り出して別サーバー・別言語で作ってJSONで連携させよう、あるいは既存の機能を切り出して別サーバー・別言語で作ってJSONで連携させよう、というふうにしたのがマイクロサービスだと思います。

SOAのほうは主導していたのがマイクロソフトIBMで、これを広めて開発案件をもっと増やそうという意図もあったと思います。マイクロサービスのほうはnetflix、アマゾン、twitterなどで自分たちの問題を解決するためにそれぞれやってきたことがたまたま共通していて名前がつけられたもののように思います。

なので何が違うんだ!と思う人もいるかもしれませんが一番の違いは目的だと思います。