マイクロサービスとは?
マイクロサービスはソフトウェアアーキテクチャのスタイルのひとつで、簡単に言えば複数のサービスを連携させてひとつのアプリケーションを構築する開発手法のことです。
モノリシック(一枚岩)なアーキテクチャを複数に分割して、システムの複雑さを解消することが目的です。
それによって、各サービスを独立させることが可能となり「ソフトウェアの変更がしやすくなる」「開発のスピードが高まる」「柔軟な構築・運用ができる」といったメリットが享受できるとされています。
マイクロサービス(Microservice)という言葉は、アメリカのソフトウェア開発会社・ThoughtWorks社のJames Lewis(ジェームス・ルイス)氏が2012年3月に発表した「Micro services - Java, the Unix Way」が初出とされています。
それから約2年後、2014年5月にJames Lewis氏がMartin Fowler(マーチン・ファウラー)氏との共同執筆で発表した「Microservices」により広く普及しました。
マイクロサービスはAmazon、eBay、Spotify、NetFlixといった大規模サービスで採用されています。
クックパッド、LINE、Gunosyといった企業にも導入されており、日本でも広がりつつあります。
参照:http://www.nttdata.com/jp/ja/insights/trend_keyword/2015072301.html
マイクロサービスの基礎を学べる資料・記事
James Lewis/Martin Fowlerの"Microservices"日本語訳 / 自由課題
http://kimitok.hateblo.jp/entry/2014/11/09/211820
「Microservices」を日本語訳した記事です。
オリジナル記事は共同執筆者であるMartin Fowler氏のブログに掲載されています。
マイクロサービスを深く理解するためにも、その基本となる「Microservices」は必ず読んでおきましょう。
参照:Microservices
http://martinfowler.com/articles/microservices.html
Micro services - Java, the Unix Way
http://2012.33degree.org/talk/show/67
「Microservices」より前に発表された、James Lewis氏による資料です。
PDF資料を無償でダウンロードできます。
こちらは日本語訳されていないので、英語版のみとなっています。
もし英語でも問題ないという方であれば、一読の価値はあると思います。
Microservicesを読んだ / SOTA
http://deeeet.com/writing/2014/09/10/microservices/
「Microservices」の概要、特徴をまとめた記事です。
よくまとまっているので、オリジナルの「Microservices」の後に読むと頭の中でポイントが整理できます。
クックパッドとマイクロサービス / クックパッド開発者ブログ
http://techlife.cookpad.com/entry/2014/09/08/093000
レシピサイト「クックパッド」がマイクロサービスを選択した理由、どのようにマイクロサービス化を行ったのかを詳しく解説しています。
「クックパッド」では新規アプリケーションを作成する際、独立チームが独立したサービスとして開発を行い、最終的に各サービスと連携させるという開発手法を取り入れているそうです。
これはまさにマイクロサービスの概念であり、本記事を読むと「クックパッド」という巨大サイトがマイクロサービスを取り入れた理由がよくわかります。
「マイクロサービス」のメリットをざっくり言うと「変化に対応しやすい」こと──ただしファウラー氏は“使い過ぎ”を警告 / さくらのナレッジ
http://knowledge.sakura.ad.jp/tech/3377/
マイクロサービスの簡単な解説、SOAとマイクロサービスの違いを解説している記事です。
記事の最後に、マイクロサービスを広めたMartin Fowler氏の解説記事「MicroservicePremium」を紹介しています。
Fowler氏は、マイクロサービスはシステムが複雑化してから導入すべきであって、小さなサービスで最初から導入すべきではないという考えを示し、安易なマイクロサービスの適用を警告しています。
本記事では全文を紹介しているわけではないので、興味がある方はオリジナル記事を読んでみてください。
参照:MicroservicePremium
http://martinfowler.com/bliki/MicroservicePremium.html
マイクロサービスアーキテクチャ
http://www.amazon.co.jp/gp/product/4873117607/
O'Reilly(オライリー)から出版された「Building Microservices」の日本語版です。
マイクロサービスの定義と概念、長所と短所、設計思想、アーキテクトの役割などを詳しく解説しています。
ドメイン駆動設計でマイクロサービス開発
https://www.infoq.com/jp/news/2016/03/ddd-microservices
マイクロサービスを設計する上で必要となるドメイン駆動設計について触れた記事です。
他の記事と併せてチェックしてみてください。
マイクロサービスのアンチパターン
https://www.infoq.com/jp/news/2016/04/microservices-anti-patterns
モノリシックなシステムをマイクロサービスへ移行するにあたり、不向きなシステムもあるとされています。
本記事ではそういったアンチパターンについて紹介していますので、一度は目を通しておくとよいでしょう。
マイクロサービスの基礎を学べるスライド
マイクロサービス運用の所感 #m3dev
マイクロサービスの定義と実際に運用した所感をまとめたスライドです。
「Microservices」に掲載されている9つの定義をひとつひとつ端的に解説しています。
マイクロサービスアーキテクチャの設計 - JUG2015
MSA(Microservice Architecture)の概要、デザイン、実例を紹介しているスライドです。
最後にJavaのフレームワーク「Spring」についても触れています。
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
上記スライドと同じ方が作成しています。
こちらのスライドでは「アーキテクチャの変遷 」「サービス管理のトレンド」「MSA」「プラットフォームの視点」について紹介しています。
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ!
Javaフレームワーク「Spring」で簡単にアプリケーションが作れる「Spring Boot」とマイクロサービスアーキテクチャをテーマにしたスライドです。
「Spring Boot」とマイクロサービスアーキテクチャを学んだ上で、以下の3つの演習を行います。
・Spring BootURL短縮サービスを作る
・Spring Cloud Configで動的コンフィギュレーション
・Spring Cloud Netflixでマイクロサービスアーキテクチャ構築
まとめ
マイクロサービス関連の日本語資料や記事はまだ少ないですが、普及に伴ってこれから増えていくことでしょう。
今回は日本語記事を中心に紹介しましたので、マイクロサービスを学びたい方はぜひ読んでみてください。
まだマイクロサービスをよく知らないという方は多いと思うので、今のうちに学んで差をつけておきましょう。
ITエンジニア・Webクリエイターの転職ならレバテックキャリア
レバテックキャリアはIT・Web業界のエンジニア・クリエイターを専門とする転職エージェントです。最新の技術情報や業界動向に精通したキャリアアドバイザーが、年収・技術志向・今後のキャリアパス・ワークライフバランスなど、一人ひとりの希望に寄り添いながら転職活動をサポートします。一般公開されていない大手企業や優良企業の非公開求人も多数保有していますので、まずは一度カウンセリングにお越しください。
転職支援サービスに申し込む
また、「初めての転職で、何から始めていいかわからない」「まだ転職するかどうか迷っている」など、転職活動に何らかの不安を抱えている方には、無料の個別相談会も実施しています。キャリアアドバイザーが一対一で、これからのあなたのキャリアを一緒に考えます。お気軽にご相談ください。
「個別相談会」に申し込む