Webサービス開発者必見!マイクロサービスの理解と活用 | 千葉で集客ホームページ制作はティーエスフォート
コラム

Webサービス開発者必見!マイクロサービスの理解と活用

Webサービス開発者必見!マイクロサービスの理解と活用

マイクロサービスは、AmazonやLINEといった大規模なサービスで採用されていて、Web企業を中心に世界的な広がりを見せています。

しかしながら「名前は聞いたことあるけれど、人に対して説明はできない。」というエンジニアも案外多いのではないでしょうか。

そこで今回は、マイクロサービスに関する情報やそれに付随する技術であるKubernetesについてまとめました。

マイクロサービスとは?

マイクロサービスとは、複数のサービスを連携させてひとつのアプリケーションを構築する開発手法のことです。

各サービスを独立させることが可能となり「ソフトウェアの変更がしやすくなる」「開発のスピードが高まる」「柔軟な構築・運用ができる」といったメリットが享受できます。

マイクロサービスは、1サービスを1プロセスとして稼働させる仕組みをとっています。

サービス同士はAPIによって最小限の連携をもつのみで、基本的にはそれぞれ独立しています。

そのため、設計にあたってはそれぞれのサービスに特化した手法をとることができます。

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

マイクロサービスのメリットには以下があります。

・リソースを有効活用できる
・局所化によって障害や影響の与えるリスクを抑えられる
・新技術の採用が容易である
・新規機能の追加、高頻度の軽微な変更が容易
・更新が容易

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

マイクロサービスのデメリットには以下があります。

・サービスを的確に分割して設計するのが難しい
・一貫性に欠けるため、運用業務の負担が増加する

オーケストレーションとは?

オーケストレーションとは「編成化」「組織化」という意味ですが、ITの世界ではコンテナ化された環境を自律的に構成、維持してくれる機能のことを言います。

オーケストレーション機能を提供するツールをオーケストレーターといいます。

オーケストレーターにはいくつか種類がありますが、一番使われているのはKubernetesです。

Kubernetesの仕組み

Kubernetesは、コンテナ化されたサービスを管理するための、拡張性のあるオープンソースのプラットフォームです。

Kubernetesは以下の要素で構成されています。

クラスター
Kubernetesが1つの環境として取り扱う単位です。

マスター
クラスタ全体の管理を担当します。ユーザーが設定した内容を受け、その内容を維持するようにそれぞれのノードに指示を出します。

ノード
アプリケーションの実行環境を提供する物理/仮想マシンを指します。

ポッド
Kubernetesが処理する最小の単位で、コンテナ化されたアプリケーションを1つ以上持ちます。

Kubernetesのコンポーネント

Kubernetesをデプロイすると、クラスターが展開されます。
Kubernetesクラスターは、 コンテナ化されたアプリケーションを実行する、ノードと呼ばれるワーカーマシンの集合です。

コントロールプレーンコンポーネント
コントロールプレーンコンポーネントは、クラスターに関する全体的な決定を行います。

kube-apiserver
APIサーバーは、Kubernetes APIを外部に提供するKubernetesコントロールプレーンのコンポーネントです。

etcd
一貫性、高可用性を持ったキーバリューストアで、Kubernetesの全てのクラスター情報の保存場所として利用されています。

kube-scheduler
コントロールプレーン上で動作するコンポーネントで、新しく作られたPodにノードが割り当てられているか監視し、割り当てられていなかった場合にそのPodを実行するノードを選択します。

kube-controller-manager
コントロールプレーン上で動作するコンポーネントで、複数のコントローラープロセスを実行します。

kubelet
クラスター内の各ノードで実行されるエージェントです。
各コンテナがPodで実行されていることを保証します。

kube-proxy
kube-proxyはクラスター内の各nodeで動作しているネットワークプロキシで、KubernetesのServiceコンセプトの一部を実装しています。

コンテナランタイム
コンテナランタイムは、コンテナの実行を担当するソフトウェアです。

アドオン
アドオンはクラスター機能を実装するためにKubernetesリソースを使用します。

Web UI (ダッシュボード)
ダッシュボードは、Kubernetesクラスター用の汎用WebベースUIです。
これによりユーザーはクラスターおよびクラスター内で実行されているアプリケーションについて、管理およびトラブルシューティングを行うことができます。

コンテナリソース監視
コンテナリソース監視は、コンテナに関する一般的な時系列メトリックを中央データベースに記録します。
また、そのデータを閲覧するためのUIを提供します。

まとめ

今回の記事では、マイクロサービスとは何か、メリット・デメリットのご紹介をしました。

また、マイクロサービスとも関連のあるオーケストレーションの代表格としてKubernetesについてご紹介しました。

変化が速い時代において、開発スピードをより増すためにもマイクロサービスの活用は今後も注目される技術でもあると言えるでしょう。

関連記事

ページ先頭へ