Service meshについて説明してみる
ある会社のある人と面接をした時にservice meshについて聞かれて全く回答ができなかった。悔しいので調べた。理解を深めるために簡単にまとめてみた。
なにこれ?
Service meshとは、Containerを実際の環境に配置する際のアーキテクチャパターンの一つで、観測性(Observability)、セキュリティ、信頼性などの機能をクラウドネイティブなアプリケーションに透過的にアプリケーションレイヤーではなくプラットフォームレイヤに挿入する方式。
Service meshはKubernetesを利用している企業間では急速に普及しつつあるistioとか、Linkerdなどが有名
具体的に何が嬉しいの?
アプリケーションレイヤーではService meshについて意識する必要がない
あらかじめ環境を用意しておくと、アプリケーションを追加するだけで各アプリケーションの状態や関連が把握できる様になる。
現在の状況だけでなく、過去の状況及び現在までの推移もダッシュボードで把握できる。
Linkedを入れてみた
Linkedのページのgetting-startedを参考にして、ローカルで環境を作ってみた。実際の画面はこんな感じ。
画面にはインストール済みの各アプリケーションが表示されており、実際にアプリケーションにアクセスするとSuccess Rateがリアルタイムに変化する。サンプルで提供されているvote-botアプリケーションには意図的にいくつかエラーが発生する箇所が用意されており、そこにアクセスを繰り返すと、Success Rateがどんどん下がっていくといった感じ。
それぞれの行の一番右に表示されているGraphanaアイコンをクリックすると、こんな感じでダッシュボードも参照することができる。これもリアルタイムでリフレッシュされていく(これはすごい。ただ、データはどこに保管されているのかが不明・・消えちゃったりしない?)
感想
これまでDockerやECSは利用してきたが、K8S系の環境の利用はあまり経験がなかった。小さく始めるにはECSの方が手軽なのかもしれないが、大規模のサービスとなってきた場合は、こう言った技術をK8S環境で活用していく方が良いのかもしれない。