マイクロサービスとソフトウエア開発自動化の関係
昨年ころからマイクロサービス参考1、2の注目度が高まってきており、SOAとの違いや適用事例、Spring Boot参考3等の実装技術の提案等さまざまな記事・講演参考4が見られるようになってきました。背景として、もはや当たり前のように用いられるようになってきたソフトウエア開発自動化技術の存在があります。ソフトウエア開発自動化の領域は旧来からのコード自動生成にとどまらず、テストやビルド自動化など多様化してきています参考5。さらに、ChefやPuppetといった基盤構築自動化(Infrastructure as Code)の領域参考6、7や、Jenkinsのワークフロー機能強化参考8によるビルド自動化のジョブ管理領域への拡大といった動きがあります。
なお、アジャイル、クラウド、DevOps等の新しいトレンドが生まれる際には、必ずそれを下支えする技術や背景があります。例えばクラウドの例ですと、マシンリソース(CPU・メモリー・ディスク)が安く・容易に手に入るようになったというのが一つの要因として存在しています。マイクロサービスで語られる9つの特徴の一つに「Infrastructure Automation」があり、上述のソフトウエア開発自動化技術がマイクロサービスの実現を下支えしていると考えられます。
Spring Bootを用いたマイクロサービスの構築イメージ
Spring Bootは、Springプロダクトの一つで、Springフレームワークベースのマイクロサービスアプリケーションを簡易に構築可能です。NetBeans等のIDEにてMavenプロジェクトを作成し、以下2つの作業をするのみで、REST APIを使ったアプリケーションが作成可能です。以下はサンプル実装例です。
1.コントローラクラスの作成
@RestController
@SpringBootApplication
public class SampleBoot {
@RequestMapping("/")
String hello() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleBoot.class, args);
}
}
2.pom.xml(該当箇所のみ抜粋)の修正
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
コントローラークラスのmainメソッドを起動すると、組み込みTomcat上でSpring Bootアプリケーションが起動します。(ログより一部抜粋)
ブラウザからhttp://localhost:8080/にアクセスすると以下の通り表示されます。