IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウドネイティブで行こう

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第5回 マイクロサービスとは (宮崎悟) 2022年10月

前回は、コンテナオーケストレーションのデファクトスタンダードであるkubernetesについて説明しました。今回は、クラウドネイティブを構成する技術である、マイクロサービスについて説明します。

マイクロサービスとは

マイクロサービスは、ソフトウェアが持つ機能を細かいサービスとして複数に分け、それぞれを連携させてシステムを動作させるアーキテクチャです。

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

マイクロサービスは、複数の機能を1つのアプリケーションで動作させるモノリシックアーキテクチャと対比されます。以下で、モノリシックとマイクロサービスを比較してみます。

  • モノリシック
    • 複数の機能を、1つのアプリケーションとして動作
      • 1つのコンピュータ言語で記述し、開発環境を統一できる
      • 変更した機能を反映するためには、アプリケーション自体を再起動する
      • 処理の状態(ステート)を持つことができ、ステートの内容で処理を変更できる
    • 機能間の連携をメモリ上で行う
      • ボトルネックが少なく高速
    • フォークやスレッドにより処理を並列に行う
    • ロードバランサにより複数サーバで処理を並列化
    • メモリ使用量が多い
  • マイクロサービス
    • 複数の機能を、機能ごとにアプリケーションとしてサービスを動作させる
      • 複数のコンピュータ言語で記述できる
      • 変更したアプリケーションのみを再起動する
    • 機能間の連携は、ネットワーク経由
      • モノリシックよりも連携が低速
      • 同じホストだけでなく、違うホスト上のアプリケーションも使用可能
      • 処理の状態(ステート)を持つことをしない
    • アプリケーションを複数起動することで、処理を並列に行う
      • 負荷の多いアプリケーションのみを増やすことが可能
      • 問題が発生しても、すべてのアプリケーションを再起動しなくても良い
なぜマイクロサービスなのか

上記に述べたように、両方ともメリット・デメリットのあるアーキテクチャです。では、なぜマイクロサービスが注目されてきているのか、それはコンピュータ環境の変化によるものです。

コンピュータの世界では、ムーアの法則にそって処理速度を更新してきました。ムーアの法則を簡単に言うと「集積回路(LSI)上のトランジスタ数は2年毎に2倍となる」で、年数ごとにコンピュータ(CPU)の処理速度が早くなるという法則です。しかしムーアの法則は、現在のアプローチでは物理的な限界を突破できず、コンピュータの処理速度は停滞しています。

現在では、複数のCPU(マルチコア)を持つことで、処理速度ではなく処理量を増やしています。モノリシックなアプリケーションではサーバを複数用意して処理量を確保したり、一部を別アプリケーションで動作させて対処しています。このような環境では、モノリシックなアプリケーションではデメリットが生じます。例えば、アプリケーションの肥大、開発ペースの低下、アプリケーションの陳腐化、サーバ追加時のコスト増などです。

マイクロサービスは、モノリシックなアプリケーションの処理の一部を切り出し、サービス化するところから始めます。そして、全ての機能がサービスとして提供され、密結合から疎結合に変わるのがゴールです。

  • サービスの処理を単純にし、開発運用コストを下げる
  • サービスをスケールアウトすることで、一番負荷のかかる処理に対処する
  • ネットワークを介したAPIを使用して、複数サーバに横断するサービスの提供

これらのメリットはコンテナ技術と相性がよく、Kubernetesなどと同時に使用することで、サービス構築を自動化できます。

終わりに

今回は、マイクロサービスの概要について説明しました。なぜ、マイクロサービスという概念が生まれてきたのが、おわかりいただけたでしょうか。次回は、マイクロサービスを実現する技術の1つである、サービスメッシュについて説明します。次回をお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes