見出し画像

マイクロサービス開発の重要なポイント―『マイクロサービスアーキテクチャ』より

はじめに―「マイクロサービス」って何?

本記事を読んでいるあなたは「マイクロサービス」を知っているだろうか。マイクロサービス(Microservices)とは、ソフトウェアのアーキテクチャ手法の1つで、用途や目的ごとに小さな(いわゆるマイクロな)サービスを作ってそれぞれをつなげることで大規模なサービスを設計する手法だ。これによって、変化に強くて柔軟性の高いサービスを開発できる。

マイクロサービスを採用する最大の理由は、複雑なアプリケーションを分割してシンプルに管理することで、開発や運用サイクルを効率的に回すことができるからである。

従来のアプリケーションの多くは、複数の機能を単一のモジュールとして提供する「モノリシックな」アーキテクチャで開発されていた。しかし、モノリシックなアーキテクチャでは、アプリケーションの機能が増えるに連れて複雑化し、バグも発生しやすくデバッグにコストがかかるという問題が発生した。

ところが、アプリケーションを小さいサービスに分割することで、サービスごとに独立した開発やデプロイが簡単になる。その結果、開発やリリースをスムーズに進められるのだ。

「マイクロサービス」のメリット

マイクロサービスを開発するメリットには、主に以下のようなことが挙げられる。

  • 他のサービスと独立してデプロイできる

  • サービスが独立しているので、簡単に新しい技術を導入できる

  • 一つのサービスに変更を加えて、残りのシステムとは独立してデプロイできる。そのため、デプロイのコストが低め

  • システムがそれぞれのサービスで役割ごとに分散されているので、様々な目的に対して様々な方法で機能を利用できる

  • スケーリングが必要なサービスだけをスケールできるので、システムの他の部分を小規模なハードウェアで操作できる

私たちプログラマーの最大の仕事は「より良いサービスを作ること」である。今後そのようなことを検討する上で、マイクロサービスの導入は必要不可欠だろう。

マイクロサービスの注意点

上述のように、マイクロサービスには開発の質を向上させるメリットがある。ところが、すべてのシステムをマイクロサービス化すればよいというわけではない。前提として、巨大化したモノリシックなサービスをマイクロサービスに切り替えるには非常に膨大な時間とコストがかかってしまう。

さらに、マイクロサービス化したからと言って、複雑なアプリケーションが自然にシンプルな設計になるわけではないことにも十分留意する必要がある。マイクロサービスの役割は、アプリケーションを分割することで「シンプルな設計を作りやすくする」ことである。アプリを開発する上で、もっとも重要なことはアプリケーションの設計方法そのものだ。

あと、マイクロサービスを開発する際にフロントエンドとバックエンドで分離することがしょっちゅうあると思うが、その間の接続方法についても詳しく検討する必要がある。そのとき、フロントエンドからバックエンドへの呼び出しは簡単なAPI経由が適切だ。

終わりに―「マイクロサービス」をどう活用するか

今回の記事では、O'Reillyの技術書『マイクロサービスアーキテクチャ』から、マイクロサービスを開発する上での重要なポイントをまとめてみた。

マイクロサービスは確かに画期的なアーキテクチャだが、「銀の弾丸」ではない。目的や目標の達成としてマイクロサービスが適切ではないことも十分に考えられるので注意が必要である。

さらに、新規のWebサービスを開発する上ではマイクロサービス化がうまくいく事例もある。ところが、巨大なモノリスのサービスをマイクロサービスにして成功した事例がほとんど見当たらない。システムによっては(特に巨大なモノリスなサービスの場合)、マイクロサービスの開発を行うよりも既存のシステムのプラットフォームの移行と整理するほうが妥当ではないかと考える。

今回の記事が、マイクロサービスを理解する上で参考になれば幸いである。

参考図書・参考サイト

技術書

Amazon.co.jp - マイクロサービスアーキテクチャ | Sam Newman, 佐藤 直生, 木下 哲也 |本 | 通販

Web記事

この記事が気に入ったらサポートをしてみませんか?