Onairがおもしろかったので、メモがてら。
気になる人はあやふやなここじゃなくて、本家を見てね。
PDFも動画も公開されてるしデモもあるよ!!!
2019/02/21 GoogleCloudで実践するマイクロサービスアーキテクチャ
https://cloudplatformonline.com/onair-japan-past-webinars.html#past-video
で、内容。今回ほんとに勉強になったなぁ・・・。
◆時代はモノリスからマイクロサービスですよ。
・モノリス:フロントエンド・バックエンド・データベースの三層構造アーキテクチャ
いわゆる、よくある構造の奴。LAMPとかね。
・デメリット:スモールスタートにはいいんだけど、大きくなると、
運用ややこしいし、テスト大変だし、スケーリングしづらいし、
全体に波及するから変更容易性が低くなる。
・マイクロサービス:サービスごとにアプリケーションを独立させて、それぞれを疎結合させる
APIとかでやり取りさせて、必要機能ごとにデプロイしたり連携したり管理する最近のやつ
●メリット
・機能追加や新機能の導入が楽
・スケールアウト・可用性・耐障害性向上
・DevOps/アジャイルとの親和性→開発スピードUP
●デメリット
・サービスディスカバリー(どこで何のサービス動いてるか)
・オートスケーリング
・トラフィックコントロール(どこを何のプロトコルが動いてるか)
・障害の分離(Fault Isolation)
・可観測性(Observability)
・サービス間の認証認可
→これらのデメリットにGCPは有効だよ!
=>GKEで解決できちゃう項目が下記
(GKEとはKubarnetesのマネージドサービスですよ。詳しいことは別途)
・サービスディスカバリー(どこで何のサービス動いてるか)
・オートスケーリング
詳しく言うと、GKEの↓のような機能で解決!
●Auto-everithin(機能名ではなく出演者の造語)
・Auto-reoair:パフォーマンスに問題のあるNodesを自動リプレイス
・Auto-upgrade:しょっちゅうUPしてうっとおしいk8sだけど、
GKE上のは常に最新に自動更新するよ!
・Auto-scale:需要に応じてNodeを自動的に調整するよ
・Auto-Provision(Beta):ClusterAutoscalarの一部として動作し、
適切なNodePoolを作ったり消したりするよ
●RegionalCluster
・k8sのマスター一個じゃ心もとないから同一リージョンの別ゾーン3つに複製して、99.95のSLAを出してるよ
・マスター側のメンテがあっても多ゾーンに複製してるからサービス断なしだよ!
●ReionalPersistentDisk
・セカンダリのゾーンのディスクに対してデータをミラーリングするよ。
・ゾーンに障害があった場合は別のゾーンに対比してミラーリングしてるディスクをアタッチするよ
●Node Auto-Provisioning
・NAPはGKEのスケーリング機能と一緒に動作して、workloadに最適なインタ素を使って新しいNodePoolを勝手にアップグレードしてくれるよ
●PrivateCluster
・PublicIPを持たないNodeを利用可能にしてセキュリティ強化!
●ContainerNativeLoadbalancing ←version依存あり
・NEGを使って、HTTPSロードバランサーから直接PODのIPを参照(doubleHopを解決!)
サービスメッシュ=Istioで解決するのか下記4項目
・トラフィックコントロール(どこを何のプロトコルが動いてるか)
・障害の分離(Fault Isolation)
・可観測性(Observability)
・サービス間の認証認可
ほら!デメリット全部解決できるじゃん!
まず、サービスメッシュとは?
●サービスメッシュ:マイクロサービス環境において、サービスディスカバリ、
トラフィックコントロール、認証認可(セキュリティ)、
メトリクス収集(ログ等の可観測性)などの機能を担う技術やソフトウェア
↑アプリやサービスごとにそれぞれこの機能を入れるのは大変なので、システム全体にこれを入れる。
で、GoogleさんとIBMが中心に作ってるのがIstioさん。(GCP:Istio on GKE)←ベータ版
・サイドカーといわれるネットワークプロキシを使うことで機能を提供しているよ。
・IstioさんとのサイドカーがEnvoy(えんぼい)さん
・GCP:Istio on GKEとして、GKEのアドオンとしてつかえるから超簡単よ。
・自動でcontorolplaneをアップグレードするし、StackDriverにログもながしてくれるよ
まぁ、挙動詳細は直接Onair見てもらうとして。
●Istioのアーキテクチャ
・Pilot:Envoyと連携してサービス間の通信えおせいぎょ(ルーティングとか)
・Envoy:ネットワークプロキシ
・Mixier:ポリシー管理、テレメトリサービスとの連携。スタックドライバーやサードパーティーツールにログ送ったり。
・Citadel(シタデル):サービス間の相互TLSや証明書発行(要はCA局)
なんかホンマに楽しいな。
できればみんな、動画を見てください!まじでわかりやすいから。