マイクロサービスとは
マイクロサービスとは、単一のアプリケーションを小さなサービス群の組み合わせとして構築する手法です。それぞれのサービス同士は疎結合とし、RESTful APIなどで接続をおこないます。そのアーキテクチャを支えるため、各言語でマイクロサービスフレームワークが存在します。今回は、言語ごとに主なソフトウェアをピックアップして紹介します。
PHP
Lumen
LaravelがベースとなるPHPのマイクロフレームワークです。ベンチマークではPHP系マイクロフレームワークで最速としています。またLaravel開発者であれば、再学習することなく利用できるでしょう。フルスタックのLaravelにコードをコンバートすることも可能で、Laravel開発経験者なら選択技として大きなアドバンテージになるでしょう。
License: MIT license
Lumen - PHP Micro-Framework By Laravel
Slim Framework
Slimは、シンプルで強力なWebアプリケーションやAPIをすぐに書けるPHPのマイクロフレームワークです。Webのマイクロフレームワークとして、HTTPのルーティングは当然ですが、PSR-7をサポートするのでHTTPメッセージを作成するのも容易でしょう。
License: MIT license
Silex
Symfonyをベースに開発され、SinatraにインスパイアされたPHP製のマイクロフレームワークです。
- 直感的で簡潔なAPI
- 拡張システムとしてPimple micro serviceを持っているため、拡張も容易
- リクエストとレスポンスを抽象化するSymfonyのHttpKernelを使用しているのでテストが容易
といった特徴を持っています。
License: MIT license
Silex - The PHP micro-framework based on the Symfony Components
Python
Flask
FlaskはPython用のマイクロWeb開発フレームワークで、2010年頃から開発されています。その概念は「フレームワークの簡易性やフレームワークの小さいものというだけでなく、フレームワークで書かれた、複雑さとアプリケーションのサイズに制限をかけたもの」 としています。
License: three clause BSD License
Welcome | Flask (A Python Microframework)
Bottle
Bottleは高速、シンプルかつ軽量なPythonのマイクロWebフレームワークです。単一のファイル・モジュールとして配布され、Python標準ライブラリ以外の依存関係がないとされています。
License: MIT License
Pyramid
Pyramidは「小さく、早く、堅実」を謳うPythonのマイクロサービスフレームワークです。インストールからスクリプトの起動まで、非常に簡単にセットアップ可能です。Python系はPythonコンソールからすぐに実行できるものが多いのが特徴です。すぐにサンプルスクリプトの確認も可能でしょう。
License: Repoze Public License
Java
Lagom
Lagomはスウェーデン語で「十分な」と言う意味です。開発者によると、マイクロサービスのマイクロを強調したくないとの理由から命名され、丁度良い適切なサイズのサービスを作成することを目的として開発されました。ドキュメントなどを確認すると、Javaというより、Scala色が強い感じです。現時点ではJava APIが用意されていますが、Scala APIも開発中のようです。
License: Apache2 License
まとめ
いかがでしょうか。全てを紹介できないほどで、マイクロサービスを謳ってるフレームワークが多くある状況です。他にもマイクロサービスを支える基盤となる、アーキテクチャフレームワークも存在します。ぜひ自分の好きな言語でマイクロサービスフレームワークがあるか調べてみてください。