モバイル、ソーシャル、IoT…。デジタルを中心として、ビジネス環境が劇的に変化しています。そのような中で、顧客の変化に気付き、ニーズを汲む姿勢が企業に求められています。

今までのように、全ての要件をかため、長い開発期間をかけてシステム開発を行う「ウォーターフォール」型手法では、この変化の流れに対応することが出来ません。このような状況下で、情報システム部門には、短い期間で繰り返し開発やテストを進める、「アジャイル開発」型でのプロジェクト進行が求められています。

そのような社会の急激な変化・開発期間の単位が短くなる傾向から、昨今注目されているソフトウェアのアーキテクチャが「マイクロサービス」です。米国の著名なソフトウェアエンジニアである、マーチン・ファウラー氏らが2014年に公開した「Microservices」という記事が、このアーキテクチャが大きく知られる切欠となったと言われています。

「マイクロサービス」は、海外ではAmazonなどeCommerce企業や、NetFlixなど新興オンライン企業で多く採用されており、日本でもLINEやクックパッド、Gunosyなどの人気サービスを抱えている企業がすでに取り入れています。

従来は、ある目的に対して、モノリシック(一枚板)なアーキテクチャでサービスを提供していました。対して、マイクロサービスは、個別に開発された小さなサービスを組み合わせて、一つのサービスを提供するというものです。

例えば、ユーザーがオンラインショッピングを行おうとする場合、オンラインショッピング全体がひとつの大きなサービスとします。

この大きなサービスを実行させるにあたって、マイクロサービスでは次のような小さいサービスを開発して、Web APIを通じて、各サービスを呼び出し連携させます。

  • 認証サービス(IDやパスワード)
  • ロジック:データのフィルタリングサービス(サイズや色)
  • ロジック:レコメンデーションサービス(おすすめ商品の通知)
  • アクセス許可:在庫管理システム連携サービス
  • データ:販売実績の追加、配送ステータス管理サービス

こうすることによって、マイクロサービスでは、次のような利点が得られます。

  • 開発チームがサービスごとに分かれて、得意な言語を利用して各サービスの開発を進めることができる
  • 変更をかけたいときは、システム全体ではなく、その小さなサービスごとに変更をかけられる
  • 小さなサービスで開発単位を進めるため、ビルドやテストの期間が短くなり開発効率が上がる
  • モノリシックなシステムだと何か障害が起きたときに、どこがおかしいのかルート構造をたどるのに時間がかかるが、原因の突き止めが比較的容易

つまり、用途・目的ごとに小さな(マイクロな)サービスを作っておくことで、「変化に強くて柔軟性の高い、アプリケーション開発を行おう」というのがマイクロサービスなのです。

このようにマイクロサービスは素晴らしい概念なのですが、そうは言っても、多くの企業が既にモノリシックなアーキテクチャでシステムを開発させているため、今更システムを分割させるのが難しいという声も良く聞きます。

そこで今後柔軟で迅速なシステム開発をする上で、SalesforceのApp Cloudという選択肢もあります。SalesforceのApp Cloudでは、作成する機能やアプリケーションを標準でWeb API化することができるので、マイクロサービスとしても利用することが出来ます。

例えば、App CloudのForce.comではロジックをGUIで簡単に生成するフロー機能がありますが、作成したロジックは、REST APIですぐに呼び出せます。またスキーマビルダーによって作成されたDBテーブルも、Web APIで登録や検索が可能です。

将来的により良いシステム開発を目指す上でも、出来るところからマイクロサービス的な考え方で開発してみるという姿勢で取り組むのはいかがでしょうか。さらにマイクロサービスについて知りたい方は、下記のマイクロサービス入門ガイドをご覧ください。

参考文献:

  • マイクロサービスはエンジニアを元気にする?(IT Pro 2015年6月24日)