#マイクロサービスとは
マイクロサービスとは読んで字のごとく小さいサービスです。小さいサービスを組み合わせて、RESTのような軽い通信でつなぎあわせてひとつのサービスを構築することをマイクロサービスアーキテクチャと呼びます。リンク先スライドがわかりやすいです。
#マイクロサービスくそくらえ?
私の仕事はERPやCRMといった大きめのシステムが多く、システム間インタフェースの手間や複雑さに痛い思いをしていました。その経験から、周りの人がマイクロサービスについて言及していた時に**「馬鹿か!?マイクロサービスくそくらえ」くらいに思っていました。
#マイクロサービスの良さを知ったきっかけ
最近、IoTの仕組みを構築したのですが、AWSのサービス群を使いました。ひとつひとつの小さなサービスがシームレスに連携していて衝撃を受けました。「これ、いい 」と思わず唸ってしまうほどです。
#こんな感じでマイクロサービスを使ってみました
AWS IoTでセンサーから情報を受け取り、Kinesis Firehose経由でS3へ溜め込みます。Spark使ってS3のファイルを加工すると、そのイベントをLambdaがキャッチしてSlackへ通知を送る仕組みにしました。この仕組を作るのにLambdaで少しコーディングした程度で、1日もかからずに構築できます(Sparkは特殊なので除外)。
後日、詳しく掲載しようと思います。
#マイクロサービスの良さと注意点
IoTやらStreamingやらSNS連携やらをJavaなどひとつの仕組で構築するのは厳しいです。しかし、マイクロサービスを使うことで非常に簡単に構築できます(特にクラウド上のサービス)。そして、これらは、検証でのスモールスタートから本稼働でのスケールアウトが簡単にできるのが魅力です。
逆に注意点は全てに対してマイクロサービスを適用するのではなく、モノリシックなサービスを使う部分と分ける点です。マイクロサービスの良さを知った今でも、ERPをマイクロサービスで構築しようとは思いません(部分的にはありだと思いますが)。ERPでは、ひとつのシステム上でマスタや伝票が統合されている点に強みがあるので、分離していると非常に面倒です。
また、ERPでなくてもやりすぎると大変です。「マイクロにしすぎた結果がこれだよ!」の経験談は非常に参考になります。**
※「Amazon S3にドキュメントを置いたらLambda経由でSlackに通知させてみた」にAmazon S3→Lambda→Slack部分の連携設定・コーディングを追記しました。
※「[AWS IoT] Kinesis Firehoseに連携しAmazon S3へ保管」にAWS IoT→Kinesis Firehose→Amazon S3部分の連携設定を追記しました。