デプロイ王子のテクノロジ解説!

細かく分けて何度もデプロ~イ!マイクロサービスアーキテクチャの利点・欠点

廣瀬一海(デプロイ王子) 2016年07月13日 07時00分

  • このエントリーをはてなブックマークに追加

 こんにちは。デプロイ王子こと廣瀬一海です。前回はインフラストラクチャアーキテクチャとして、Serverless Computingを取り上げました。今回はソフトウェアアーキテクチャとして話題となっている「マイクロサービスアーキテクチャ(Microservice Architecture)」を取り上げ、そのメリットとデメリットについて説明します。

 この数年の間に、私たちが開発するソフトウェアが対象とするクライアントデバイスは多様化し、求められる機能も大幅に増えてきました。クライアントに合わせて、開発言語やフレームワークや手法も異なり、開発製品の一部にクラウドが提供するサービスを活用するケースも多くなってきました。

 今回解説するマイクロサービスアーキテクチャは、これらの変化に対応するには「どのような仕組みが良いか?」「どのように分離するのが適切であるか?」というソフトウェア工学におけるSoC(関心の分離)の延長上にある考えです。

マイクロサービスアーキテクチャとは

 マイクロサービスという言葉は、ThoughtWorks社のJames Lewis氏が、2012年にポーランドのクラクフで開催されたJava言語のカンファレンス「33rd Degree Conference」にて、“Micro services - Java, the Unix Way” という題で自社のケーススタディとして発表しました。

Microservices』を執筆しました。この記事はマイクロサービスに関する資料として、多くの開発者がエンタープライスソフトウェア開発における指針として参考にするようになりました。

マイクロサービスとモノリシックサービス

 マイクロサービスとはどのような仕組みのアーキテクチャなのか、従来のアプリケーションと比較してみましょう。下図の右がマイクロサービス、左が従来型のモノリシックなアプリケーションです。


マイクロサービスとモノリシックサービス

 ここで言うモノリシックなアプリケーションとは、エンタープライズ向けのアプリケーションサーバ実装やフレームワークを用いた階層型のマルチティアアーキテクチャを指します。エンタープライズの大規模企業システム向けJava実装であったJ2EEとJavaEEは、この十数年の間、JBoss、WebSphere、WebLogic、GlassFishのような、アプリケーション統合基盤上に展開・実装されてきました。

 このようなマルチティアアーキテクチャの特徴は次のとおりです。

  1. 同一のプログラミング言語
  2. 単一のプロセス
  3. プログラミング言語の機能を利用して、クラス、メソッド、名前空間の分離で管理
  4. テスト環境を用意して慎重にテストを行う
  5. デプロイメントは一括で行う
  6. サーバ単位のスケールアウト


マルチティアアーキテクチャのアプリケーション構成

 上図の用語の補足ですが、“境界付けられたコンテキスト”とは、ドメイン駆動設計(DDD)の用語で、論理的に作られたグループであるドメインの境界を指すものです。やや乱暴な例えですが、分かりやすくイメージするために、大きな企業組織の各部門を想像してみてください。この場合における“境界付けられたコンテキスト”は各部門のアプリケーションのデータを管理するモデルを指します。

 では、マイクロサービスアーキテクチャの場合はどうでしょうか。特徴を以下に挙げてみます。

  1. アプリケーションを小さな複数のサービスの結合によって構成
  2. 各サービスは異なるプログラミング言語で良い
  3. 各サービスは異なるストレージ技術で良い
  4. 各サービスは独立してデプロイメントが可能
  5. HTTPを用いた軽量なWeb APIで通信を行う
  6. 各サービスは独立してスケールアウトが可能
  7. 各サービスはシンプルであるためDevOpsによる自動化が可能
  8. パフォーマンス、ログ、例外処理などはAPIゲートウェイで集約管理


マイクロサービスアーキテクチャ

 マイクロサービスは、従来1つのフレームワークとライブラリで開発されていたモノリシック(一枚岩)なソフトウェアを、RESTなどのシンプルなWeb APIを用いて業務単位に分割してコンポーネント化し、Web APIのサービス同士を結合することで全体のプロダクトサービスを構成しようとする設計です。また、ストレージもデータの性質に合わせて適材適所で選択することになります。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

  • このエントリーをはてなブックマークに追加

この記事を読んだ方に

関連ホワイトペーパー

連載

CIO
シェアリングエコノミーの衝撃
デジタル“失敗学”
コンサルティング現場のカラクリ
Rethink Internet:インターネット再考
インシデントをもたらすヒューマンエラー
トランザクションの今昔物語
エリック松永のデジタルIQ道場
研究現場から見たAI
Fintechの正体
米ZDNet編集長Larryの独り言
大木豊成「仕事で使うアップルのトリセツ」
山本雅史「ハードから読み解くITトレンド放談」
田中克己「展望2020年のIT企業」
松岡功「一言もの申す」
松岡功「今週の明言」
内山悟志「IT部門はどこに向かうのか」
林 雅之「デジタル未来からの手紙」
谷川耕一「エンプラITならこれは知っとけ」
大河原克行「エンプラ徒然」
内製化とユーザー体験の関係
「プロジェクトマネジメント」の解き方
ITは「ひみつ道具」の夢を見る
セキュリティ
エンドポイントセキュリティの4つの「基礎」
企業セキュリティの歩き方
サイバーセキュリティ未来考
ネットワークセキュリティの要諦
セキュリティの論点
スペシャル
エンタープライズAIの隆盛
インシュアテックで変わる保険業界
顧客は勝手に育たない--MAツール導入の心得
「ひとり情シス」の本当のところ
ざっくり解決!SNS担当者お悩み相談室
生産性向上に効くビジネスITツール最前線
ざっくりわかるSNSマーケティング入門
課題解決のためのUI/UX
誰もが開発者になる時代 ~業務システム開発の現場を行く~
「Windows 10」法人導入の手引き
ソフトウェア開発パラダイムの進化
エンタープライズトレンド
10の事情
座談会@ZDNet
Dr.津田のクラウドトップガン対談
Gartner Symposium
IBM World of Watson
de:code
Sapphire Now
VMworld
Microsoft WPC
Microsoft Connect()
HPE Discover
Oracle OpenWorld
Dell Technologies World
AWS re:Invent
AWS Summit
PTC LiveWorx
吉田行男「より賢く活用するためのOSS最新動向」
古賀政純「Dockerがもたらすビジネス変革」
中国ビジネス四方山話
ベトナムでビジネス
日本株展望
企業決算
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]