Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure Kubernetes Service を活用したマイクロサービス開発/Ignite-osaka

9481f5fd577257e4cef132b4fd53ddce?s=47 TonyTonyKun
January 24, 2020

Azure Kubernetes Service を活用したマイクロサービス開発/Ignite-osaka

Microsoft Ignite the Tour Osaka のブレイクアウトセッションスライドです。

9481f5fd577257e4cef132b4fd53ddce?s=128

TonyTonyKun

January 24, 2020
Tweet

Transcript

  1. None
  2. 自己紹介 http://gooner.hateblo.jp/

  3. 会社紹介 Innovation DevOps 新技術を中心とした革新的な ソリューションを提供 構築した資産を活用し、ITのよる価値創造を最 大最速にするクラウド環境を活用した 開発・ 運用プロセスの構築・定着化を支援 ・マイクロサービス

    アーキテクチャ ・コンテナライズド アーキテクチャ ・API マネジメント導入 ・開発プロセス標準化推進 ・DevOps 導入支援 お客様の利用用途に応じた最適なソフト ウェア アーキテクチャ を提案 ・クラウド移行 ・アーキテクチャ構築 ・標準化推進 ・技術トレーニング Strategy
  4. Agenda

  5. なぜ、マイクロサービスを採用するのか?

  6. モノリシックなシステムが抱える課題

  7. マイクロサービスを採用する理由 ① 価値のあるソフトウェアを、短期的かつ継続的にリリースしたい

  8. マイクロサービスを採用する理由 ② マイクロサービス開発の複雑さをシンプルにする Kubernetes や Serverless の普及と進化により、現実解になってきた

  9. マイクロサービス アーキテクチャ Item Master API Stock Command API Stock Query

    API Stock Processor API POS API BOX API Smart Box Mobile App IoT Hub App Center Push Notification Change Feed Observability( Metrics / Logging / Distributed Tracing ) Azure Monitor Application Insights Functions Cosmos DB Functions Functions Functions Functions Functions Cosmos DB Cosmos DB Cosmos DB SQL DB
  10. マイクロサービス アーキテクチャ Item Master API Stock Command API Stock Query

    API Stock Processor API POS API BOX API Smart Box Mobile App IoT Hub App Center Push Notification Azure Kubernetes Service Observability( Metrics / Logging / Distributed Tracing ) Azure Monitor Application Insights Cosmos DB Change Feed BOX POS Stok Item Master Stock SQL DB
  11. そのシステムに Kubernetes は必要ですか? 本セッションでは、マイクロサービスを採用し、プラットフォーム に Kubernetes を導入する決断を下したことを前提として進めます

  12. Azure Kubernetes Service とは?

  13. なぜコンテナを使うのか?

  14. コンテナオーケストレーションとは?

  15. Kubernetes のアーキテクチャ 構成要素 説明 Master Node Node の稼働状況やリソース消費を管理する Node コンテナーが配置される実行環境

    Pod 単一もしくは複数のコンテナーをまとめて管理する単位 Kubernetes Master Node Node ( VM ) Node Container Container Pod Node ( VM ) Container Container Pod Node ( VM )
  16. Kubernetes のアーキテクチャ 構成要素 説明 Service 外部IPアドレスを構成し、コンテナのアプリケーションを公開する。 複数の Node に配置された Pod

    へロードバランスする。 Container Pod Node ( VM ) Container Container Pod Node ( VM ) Container Service Kubernetes Client
  17. Kubernetes のアーキテクチャ 構成要素 説明 Deployment 複数の Replica Set を管理し、ローリングアップデートを行う。 Replica

    Set Pod のレプリカ数を管理し、スケールアウト/インでレプリカ数を増減させ る。Pod の稼働状況を監視し、必要に応じて新しい Pod を立ち上げる。 Deployment Kubernetes Pod Pod Replica Set (v.1.0.0) Pod Pod Replica Set (v.2.0.0)
  18. Azure Kubernetes Service を使うメリット

  19. マイクロサービスの開発から展開まで

  20. マイクロサービスの開発ライフサイクル Local Dev Team B Team A Azure DevOps Azure

    Container Registry 開発環境 開発 / テスト / 本番環境 Repository Pipeline Azure Kubernetes Service Azure Kubernetes Service Azure Kubernetes Service
  21. Demo

  22. マイクロサービス開発の ベストプラクティス

  23. マイクロサービス開発のベストプラクティス

  24. 1. Helm でマイクロサービスの構成を管理する

  25. 2. Nginx Ingress Controller で外部向けエンドポイントを公開する ※ Azure ポータルから設定できる HTTP Application

    Routing アドオンの本番運用は非推奨です。 POS Service Client Item Service Nginx Ingress Controller /pos /item Ingress.yaml Ingress.yaml Kubernetes Cluster
  26. 3. アップグレード戦略には Blue / Green デプロイを採用する ※ サービスメッシュの Istio を使わなくても、Blue

    / Green デプロイが可能 POS Service Client Nginx Ingress Controller Kubernetes Cluster Pod Pod pos-api v1 pos-api v1 pos-api v2 Service
  27. 3. アップグレード戦略には Blue / Green デプロイを採用する Nginx Ingress Controller Microservices

    ( Pod ) Kubernetes Cluster v 1.13.12 Nginx Ingress Controller Kubernetes Cluster v 1.14.11 Microservices ( Pod ) Application Gateway V2 Data Store
  28. 4. Pod と Node のスケーリングを組み合わせて構成する 200m 256Mi 100m 128Mi

  29. 4. Pod と Node のスケーリングを組み合わせて構成する ※ 導入時は Cluster Autoscaler を使わずに、Node

    数を固定して運用を開始する方法もあります。
  30. 5. 障害が発生する前提で構成を決める

  31. 5. 障害が発生する前提で構成を決める / 80 /readiness 80

  32. 6. Azure Monitor でマイクロサービスを監視する Kubernetes Docker Application Container(Pod) アプリ監視 インフラ・ミドル

    ウェア監視 Application Insights Azure Monitor for Containers OS VM マイクロサービス プラットフォーム
  33. 6. Azure Monitor でマイクロサービスを監視する

  34. 6. Azure Monitor でマイクロサービスを監視する

  35. まとめ

  36. まとめ

  37. None