今回はタイトルの通りマイクロサービス
について調べていきたいと思います。以前からなんとなくは知ってはいましたが、実際にマイクロサービス化
しているサービスでの開発経験がなかったので、これを気にちょっとに調べてみようや!というやつです👩🌾
マイクロサービスとは?
ということで、とりあえずwikiさんの力をかります。
マイクロサービス(英語:microservices)とは、ソフトウェア開発の技法の1つであり、1つのアプリケーションを、ビジネス機能に沿った複数の小さいサービスの疎に結合された集合体として構成するサービス指向アーキテクチャ(service-oriented architecture; SOA)の1種である。マイクロサービスアーキテクチャでは、各サービスはきめ細かい粒度(英語版)を持ち、軽量なプロトコルを用いて通信を行う。アプリケーションを異なる小さなサービスに分割することの利点は、モジュラリティ(英語版)が高くなることである。これによって、アプリケーションの理解、開発、テストがより簡単に行えるようになり、アーキテクチャの腐敗に対する弾力性が向上する[1]。マイクロサービスによる開発を行うことで、開発が並列化され、少人数の自律的なチームにより、各チームが所有するサービスを独立に、開発、デプロイ、スケールさせることが可能になる[2]。また、継続的リファクタリングを通して、個々のサービスのアーキテクチャ全体を置き換えることも可能になる[3]。マイクロサービスベースのアーキテクチャでは、継続的デリバリーと継続的デプロイが可能になる[4]。
要は、アプリケーションをサービス毎に分けて開発していくことで、それぞれのアプリケーションのテストや開発がやりやすくなるよ!というやつみたいですね。
具体的には?
このマイクロサービス
は、多くの場合サービスのAPIの設計手法を指す意味で使われる場合が多いかと思います。
これらを説明する上で、実際にマイクロサービスアーキテクチャを採用しているメルカリさんの資料が分かりやすかったので参照させていただきます。マイクロサービスは下記の画像のように、サービス毎にAPIを分けて考えることで、API毎に使用する言語を変えたり、DBを変えたりなど、それぞれのAPIの開発をより柔軟に行うことができます。
参照: メルカリのマイクロサービス移行の進捗 (2019年冬) | メルカリエンジニアリング
また、それぞれのAPIをクライアントが直接呼び出さずにAPIゲートウェイ
経由で利用できるようにすることで、クライアントは一つのエントリポイントのみ知っていればよい状態になるので、複数あるAPIの変更などの影響もうけずらくなります。
という感じに、マイクロサービス
のいいところを超簡単に説明したところで、今回は以上になります🍺