企業向けシステム構築の際に直面するのが、サーバーサイドのフレームワークの選択だ。標準仕様である「Java Platform、Enterprise Edition(Java EE)」と並んで、採用が進むのが、米Pivotalが開発を主導しているOSS(オープンソース・ソフトウエア)の「Spring Framework」だ。

 Spring Frameworkは、データベース(DB)のアクセスやメッセージング、MVC(Model View Controller)アーキテクチャーの実現に必要な機能を提供するフレームワーク。自社開発のフレームワークのベースとして、Spring Frameworkを採用している企業も多い。

 Springの開発プロジェクトでは今、クラウドを使った開発を支援する「Spring Cloud」など多くの派生的なフレームワークを開発している。その中で特に最近、注目を集めているのが「Spring Boot」だ。

 Spring Bootは、ライブラリーの設定を自動化したり、Webサーバーの構築作業を自動化したりすることで、開発の効率化を支援する。Spring Bootでは、Webサーバーの「Tomcat」などを実行ファイルに組み込むように設定できるため、この機能を利用するとWebサーバーの構築作業そのものが不要になる。

 Spring BootのほかにもSpringプロジェクトでは今、マイクロサービスアーキテクチャーの開発を支援する「Spring Cloud」の提供も始めている。Spring Cloudは、マイクロサービスで利用する分散アーキテクチャーを前提として、1カ所の障害がほかのサービスに波及しないようにする障害対応機能や、サービスディスカバリー機能などを持ったアプリケーションの開発を支援する。

 Spring Frameworkに加え、Spring BootやSpring Cloudなどを相次ぎ提供するJavaフレームワークのSpringは、今何を目指しているのか。Pivotalジャパンの槙 俊明氏(技術統括部 シニアソリューションアーキテクト)にSpringの開発の方向性などを聞いた。






 Springは今、マイクロサービス向けの機能を強化していると聞きます。その理由は何でしょうか。

 Springはこれまで、Javaのサーバーサイドのフレームワークとして企業向けシステムのトレンドを追従してきました。その一つの流れとして今は、マイクロサービスを支援する方向性で進化しているということです。

 Spring Frameworkとは別にマイクロサービスアーキテクチャーの実装を支援する「Spring Cloud」も提供していますが、Spring Frameworkそのものもマイクロサービスアーキテクチャーをサポートするように機能強化しています。

写真●Pivotalジャパンの槙 俊明氏(技術統括部 シニアソリューションアーキテクト)
写真●Pivotalジャパンの槙 俊明氏(技術統括部 シニアソリューションアーキテクト)
[画像のクリックで拡大表示]

 Spring Frameworkのマイクロサービス向けという機能はどのようなものでしょうか。

 2017年の7月から8月に、Springの最新版となる「Spring 5」では「ノンブロッキング」の考え方を採用します。マイクロサービスやIoT(Internet of Things)などで必要な処理を想定した場合、ノンブロッキングのほうがメモリーやCPUなどの資源を効率的に利用できます。

 これまでの考え方であるブロッキングを簡単に表現すると、「一つのリクエストに対して一つのスレッドを割り当て、リクエストに対する処理が終わるまでスレッドをブロックして待っている」というものでした。ブロッキングの場合、マイクロサービスやIoTのように、細かなリクエストを大量に処理することを求められると、大量のスレッドを同時に立ち上げなければならず、いくらコンピュータリソースがあっても足りません。

 そこでノンブロッキングでは、少ないスレッドでたくさんの処理が出来るようにします。Java VM上で動作する「Scala」や、「Node.js」などもノンブロッキングを採用しており、ノンブロッキングを次の開発スタイルとして、取り入れる言語や開発環境が増えてくるでしょう。