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

EdgeTech+2022 What is Cloud Native ? 2022

EdgeTech+2022 What is Cloud Native ? 2022

EdgeTech+2022
11.18(金) 12:00-13:30 | アネックスホール F201
スライド資料
#エッジテックプラス

oracle4engineer

November 18, 2022
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. EdgeTech+ 2022 What is Cloud Native ? 2022 Yutaka Ichikawa

    Principal Cloud Solution Engineer Solutions Architect Oracle Corporation Japan Nov 18.2022 CNCF, DevOps, CI/CD, Microservices, Observability, Cloud Native Database
  2. 2 Copyright © 2022, Oracle and/or its affiliates Profile Name

    • Yutaka Ichikawa/市川 豊 Belong • Solutions Architect Role • Principal Cloud Solution Engineer SNS • Twitter/GitHub/Qiita:cyberblack28 Blog • https://cyberblack28.hatenablog.com/ Materials • https://speakerdeck.com/cyberblack28/ • https://speakerdeck.com/oracle4engineer Community • Oracle Cloud Hangout Cafe #ochacafe • CloudNative Days Tokyo #cndt #o11y2022 Certified • Certified Kubernetes Administrator • Certified Kubernetes Application Developer • Certified Kubernetes Security Specialist • Kubernetes and Cloud Native Associate Publications New
  3. 3 Copyright © 2022, Oracle and/or its affiliates Agenda •

    Cloud Native Definition ✓ Cloud Native Computing Foundation(CNCF)について ✓ クラウドネイティブとは? ✓ そもそもクラウドコンピューティングとは? ✓ クラウドコンピューティングの特性 ✓ クラウドネイティブを実現する道しるべ ✓ 自動化の目的 ✓ 結局のところ、クラウドネイティブとは? • DevOps ✓ DevOpsとは? ✓ DevOpsを実現する方法 • CI/CD ✓ これまでのアプリケーション開発 ✓ OS/ライブラリとアプリケーションの分離 ✓ 仮想マシンとコンテナの違い ✓ OS/ライブラリとアプリケーションの統合 ✓ コンテナを支えるオーケストレーション ✓ コンテナアプリケーション開発におけるCI/CD • Microservices ✓ マイクロサービスの二つの側面 ✓ マイクロサービスの進化と挑戦 ✓ コンテナにおけるマイクロサービスを実現する技術 ✓ ビジネス面におけるマイクロサービス ✓ マイクロサービスの特徴 ✓ マイクロサービスも結局 • Observability ✓ そもそも監視って? ✓ オブザバビリティの背景 ✓ オブザバビリティとは? ✓ テレメトリー ✓ オブザバビリティは、クラウドネイティブシステムを支える • Cloud Native Database ✓ クラウドネイティブ時代のデータベース • OCI Cloud Native Services ✓ アプリケーションの開発・運用を支援するマネージド・サービス • OCI DevOps Demo What is Cloud Native ? 2022
  4. Cloud Native Computing Foundation(CNCF)について Cloud Native Definition Copyright © 2022,

    Oracle and/or its affiliates 5 • The Linux Foundation傘下のプロジェクトの1つで、コンテナ技術の推進と、その進化を取り巻くテクノロジー業界の足 並みを揃えるために2015年に創設された財団 • 大手クラウド事業者、ミドルウェア企業、ハードウェア製造企業、オープンソース・ソフトウェア企業、大学、その他非営 利団体などが加入、Oracleは2017年からプラチナ会員 • 年2回、Europe、North AmericaでCNCF主催の「KubeCon + CloudNativeCon」を開催
  5. Cloud Native Computing Foundation(CNCF)について Cloud Native Definition Copyright © 2022,

    Oracle and/or its affiliates 6 KubeCon + CloudNativeCon North America 2019 San Diego
  6. クラウドネイティブとは? Cloud Native Definition Copyright © 2022, Oracle and/or its

    affiliates 7 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーショ ンを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミューダブルインフラス トラクチャ、および宣言型APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはイ ンパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。 Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシステムを育成・維持して、このパラダイムの採用を促進し たいと考えてます。 私たちは最先端のパターンを民主化し、これらのイノベーションを誰もが利用できるようにします。 Cloud Native Computing Foundation(CNCF) Cloud Native Definition v1.0 | https://github.com/cncf/toc/blob/master/DEFINITION.md Cloud Native Computing Foundation(CNCF)におけるクラウドネイティブの定義 “拡張性・柔軟性に優れたアプリケーションをクラウドの特性を活かし 最小限の労力で構築および実行できるようにすること”
  7. そもそもクラウドコンピューティングとは? Cloud Native Definition Copyright © 2022, Oracle and/or its

    affiliates 8 クラウドコンピューティングとはモデルであり、構成変更が可能なコンピューティング資源(例としてネットワーク、サービス、ストレージ、アプリケーション、サービ ス)の共有プールを、オンデマンドなネットワークアクセスで可能にする。 それはわずかな管理の手間、もしくはサービスプロバイダとのやりとりによって迅速に準備され、提供される。 このクラウドモデルは可用性を促進するものであり、5つの本質的な性質と、3つのサービスモデル、そして4つのデプロイメントモデルから構成される。 The NIST Definition of Cloud Computing | https://csrc.nist.gov/publications/detail/sp/800-145/final The NIST Definition of Cloud Computingにおけるクラウドコンピューティングの定義 5つの本質的な性質 • オンデマンド・セルフサービス • 幅広いネットワークアクセス • リソースの共有 • 迅速な拡張性 • 計測可能なサービス 3つのサービスモデル • Cloud Software as a Service (SaaS) • Cloud Platform as a Service (PaaS) • Cloud Infrastructure as a Service (IaaS) 4つのデプロイメントモデル • プライベートクラウド • コミュニティクラウド • パブリッククラウド • ハイブリッドクラウド
  8. クラウドコンピューティングの特性 Cloud Native Definition Copyright © 2022, Oracle and/or its

    affiliates 9 • オンデマンド・セルフサービス • 幅広いネットワークアクセス • リソースの共有 • 迅速な拡張性 • 計測可能なサービス • 資産保有が不要 • 利便性が高い • リソース調達が早い • 柔軟な拡張性 • 利した分だけ課金 オンプレミスでは困難なことが、クラウドコンピューティングは実現できる
  9. Cloud Native Definition Copyright © 2022, Oracle and/or its affiliates

    10 1. CONTAINERIZATION | コンテナ化 • 仮想マシンとは異なり、環境差異が無く、軽量なイメージで可搬性が 高く、リリースサイクルを速め、機敏さと信頼性を兼ね備えたアプリ ケーションリリースを実現 2. CI/CD | 継続的インテグレーション/デリバリー • ソースコードの変更を契機に、自動的なビルド、テスト、そしてステー ジング環境および本番環境へのデプロイにつながるCI/CD環境を構 築する 3. ORCHETRATION & APPLICATION DEFINITION | オーケストレーションツール、アプリケーション定義 • コンテナ化されたアプリケーションをKubernetes基盤で自律的に運用 • Helmを利用して、マニフェストを効率的に管理 CNCF Trail Map | https://github.com/cncf/trailmap コンテナ化 開発自動化 運用自動化 拡張性・柔軟性に優れたアプリケーションを最小限の労力で クラウドネイティブを実現する道しるべ
  10. Cloud Native Definition Copyright © 2022, Oracle and/or its affiliates

    11 自動化の目的 人的関与を極力減らして向上化 技術に任せられるものは任せて効率化、 そして、人にしかできないことに時間やコストを傾ける 向上したビジネス価値をエンドユーザに提供する エンドユーザの満足度、企業収益/競争力を向上
  11. Cloud Native Definition Copyright © 2022, Oracle and/or its affiliates

    12 結局のところ、クラウドネイティブとは? 「CNCFに関連するプロダクト利用 = クラウドネイティブ」 ではない CNCF Cloud Native Interactive Landscape | https://landscape.cncf.io/
  12. Cloud Native Definition Copyright © 2022, Oracle and/or its affiliates

    13 結局のところ、クラウドネイティブとは? 人的関与を極力減らしてビジネス価値の向上を目指して、 それをエンドユーザに届けるマインドセットを持つこと
  13. Cloud Native Definition Copyright © 2022, Oracle and/or its affiliates

    14 CloudNative Days Fukuoka 2019 『飛び込もう Cloud Native の世界』草間一人 (@jacopen) https://speakerdeck.com/jacopen/fei-biip-mou-cloud-nativefalseshi-jie
  14. DevOps Copyright © 2022, Oracle and/or its affiliates 16 DevOpsとは?

    開発(Development)と運用(Operations)が互いに協力し合うことで、開発・運用するソフトウェア/システムに よってビジネスの価値をより高めるだけでなく、そのビジネスの価値をより確実かつ迅速にエンドユーザに届け続ける概念 Dev Ops
  15. DevOps Copyright © 2022, Oracle and/or its affiliates 17 DevOpsを実現する方法

    1.アジャイル開発 • 「計画、設計、実装、テスト」という開発工程を機能単位の小さいサイクルで繰り返して開発を行う開発手法 • ウォーターフォールと異なり、仕様変更に強く、プロダクトの価値を最大化することを目的とする • サービスインまでの時間を短縮できる
  16. DevOps Copyright © 2022, Oracle and/or its affiliates 18 DevOpsを実現する方法

    2.CI/CD • ソースコードからアプリケーションとしてビルドするタイミングでテストを行って、完成した成果物(アーティファクト)を保存 するまでの工程を自動化 • 早期にバグを発見、対処できることでアプリケーションの品質を高めることができる仕組み 継続的インテグレーション(CI: Continuous Integration) • 継続的インテグレーションによって生成された成果物(アーティファクト)をステージング環境や本番環境などの各環境 に配置する仕組み • リリース作業を簡素化して、安全、スピード、品質の向上を実現するプロセス 継続的デリバリー(CD: Continuous Delivery)
  17. これまでのアプリケーション開発 CI/CD Copyright © 2022, Oracle and/or its affiliates 20

    物理マシン 仮想マシン 仮想マシン(クラウド) コンテナ 物理サーバでアプリケーションを稼働 VM 物理サーバ上に複数の仮想マシンでアプリケーションを稼働 クラウドをベースとしたスケーラブルな仮想マシンでアプリケーションを稼働 物理マシン・仮想マシンもノードとして束ねて、コンテナという小さい単位 でアプリケーションを稼働
  18. これまでのアプリケーション開発 CI/CD Copyright © 2022, Oracle and/or its affiliates 21

    アプリケーション コードをソースコードリポジトリに コミット/プッシュ CI/CDパイプラインによる テスト、ビルド、デプロイ Developer Code Repository CI/CD Pipeline すべて自動化されている場合もあれば、手動で行う場合もあります。 本番環境 ステージング環境 検証環境 Operator Infrastructure Engineer 開発環境 OS/ライブラリ VM 物理マシン 仮想マシン 仮想マシン (クラウド)
  19. OS/ライブラリとアプリケーションの分離 CI/CD Copyright © 2022, Oracle and/or its affiliates 22

    アプリケーション 本番環境 ステージング環境 検証環境 開発環境 OS/ライブラリ VM 物理マシン 仮想マシン 仮想マシン (クラウド) アプリケーションは物理マシンや仮想マシンのOS/ライブラリ上で稼働 稼働するアプリケーションは実行環境に依存する 環境差異が原因で他の環境で稼働するけど、 本番環境で稼働しない等の障害が発生する OSのパッチバージョンが異なる、このライブラリが無 かった、関係ないものがインストールされている…
  20. CI/CD Copyright © 2022, Oracle and/or its affiliates 23 アプリケーション

    OS/ライブラリ • 仮想マシンイメージがベンダー製品特有(ベンダー ロックイン) • 容量も重い(数ギガ~数十ギガ) • 可搬性(Portability)が低い Xen Server 仮想マシン イメージ KVM VMWare ハイパーバイザー ハードウェア VMWare Xen/Server KVM 物理/仮想マシンにおける、OS/ライブラリのアップデートには人手 や時間を要するため、アプリケーションのリリースに影響する… 仮想マシン OS/ライブラリとアプリケーションの分離
  21. CI/CD Copyright © 2022, Oracle and/or its affiliates 24 これまでのアプリケーション開発

    OS/ライブラリが既に整っている実行環境にアプリケーションをデプロイするという形式 1.アプリケーション • 環境差異による問題が発生 • OS/ライブラリ側に何かあるとアプリケーションに影響 2.インフラ • 仮想マシンイメージがベンダー製品特有(ベンダーロックイン) • 仮想マシンイメージの容量が重く可搬性(Portability)が低い • 物理/仮想マシンの特性上、OS/ライブラリのアップデートに時間を要して、アプリケーションのリリースに影響する OS/ライブラリとアプリケーションの分離
  22. 仮想マシンとコンテナの違い CI/CD Copyright © 2022, Oracle and/or its affiliates 25

    ハードウェア ハイパーバイザー OS/Hyper Visor OS/Hyper Visor カーネル カーネル アプリケーション アプリケーション ライブラリ ライブラリ 仮想マシン 仮想マシン ハードウェア カーネル OS/Hyper Visor OS/Hyper Visor コンテナ コンテナ コンテナエンジン 各仮想マシンのカーネル上で実行、隔離性が高いが、起動 が遅く(数分)オーバヘッドが大きい。 カーネルを共有しているため、隔離性は低いが、起動が高速 (数秒)でオーバヘッドが小さい。 仮想マシン コンテナ アプリケーション アプリケーション ライブラリ ライブラリ
  23. OS/ライブラリとアプリケーションの統合 CI/CD Copyright © 2022, Oracle and/or its affiliates 26

    • OS/ライブラリとアプリケーションをパッケージイメージ化 • 技術としてはOSSのため、ベンダーロックインは発生しない • イメージはこれまでの仮想マシンイメージに比べるとはるかに軽いのでポータビリティ性が高い OS/ライブラリ アプリケーション コンテナイメージ 1.ビルド(Build) ビルド(Build) OS/ライブラリ
  24. OS/ライブラリとアプリケーションの統合 CI/CD Copyright © 2022, Oracle and/or its affiliates 27

    2.シップ(Ship) • イメージをレジストリに保存して、共有 OS/ライブラリ OS/ライブラリ OS/ライブラリ イメージレジストリ Push Pull シップ(Ship) イメージの共有 OS/ライブラリ コンテナプラットフォーム
  25. OS/ライブラリとアプリケーションの統合 CI/CD Copyright © 2022, Oracle and/or its affiliates 28

    • コンテナイメージを基にコンテナを起動します。 3.ラン(Run) コンテナプラットフォーム上でイメージからコンテナを起動して、アプリケーションを稼働。 イメージもプラットフォームも特定ベンダー技術に依存しないため、ベンダーロックインも無い。 OS/ライブラリ ラン(Run) OS/ライブラリ コンテナプラットフォーム コンテナ コンテナイメージ
  26. OS/ライブラリとアプリケーションの統合 CI/CD Copyright © 2022, Oracle and/or its affiliates 29

    コンテナアプリケーション開発 OS/ライブラリとアプリケーションを統合して、軽量イメージ化して、コンテナプラットフォームにコンテナとしてデプロイする形式 1.アプリケーション • OS/ライブラリとアプリケーションが一つに統合されているため、環境差異による問題が起きにくい 2.インフラ • 仮想マシンイメージと仕組みが異なり、OSSベースでベンダーロックインもなく、軽量で可搬性(Portability)が高い • OS/ライブラリのアップデートも容易なため、リリースサイクルを速め、スピード(Agility)が向上
  27. コンテナを支えるオーケストレーション CI/CD Copyright © 2022, Oracle and/or its affiliates 30

    Kubernetesは、Google社内のコンテナーオーケストレーションシステムであるBorgからインスパイアされて開発された OSSのコンテナーオーケストレーション。 読み方:クーバーネーティス、クーバネティス、クバネティス等 略称:K8s(Kubernetes) 8文字 現在は、CNCF(Cloud Native Computing Foundation)で管理され、多数の企業が参加するコミュニティで開発。
  28. コンテナを支えるオーケストレーション CI/CD Copyright © 2022, Oracle and/or its affiliates 31

    Kubernetesの主な役割と実現 • コンテナのスケジューリング • ローリングアップデート • オートスケーリング • 死活監視 • 頻繁なアプリケーションのデプロイを可能にするシステム基盤 • 無停止によるリリース、高可用なシステム基盤 • 負荷に応じた伸縮自在なシステム基盤 主な役割 実現 • コンテナの自動修復 • サービスディスカバリ • ロードバランシング
  29. 32 Copyright © 2022, Oracle and/or its affiliates CI/CD マニフェストファイル

    YAML Controllerがあるべき理想の状態へ収束 Controller内のReconciliation loop(調整ループ)と呼ばれる、あるべき理想の状 態へ収束させるループ処理を実行。 Kubernetesクラスタ 登録 Controller 監視 コンテナ管理 (作成・削除) Reconciliation loop コンテナを支えるオーケストレーション 宣言的オペレーション
  30. 33 Copyright © 2022, Oracle and/or its affiliates CI/CD Reconciliation

    loop Observe Act Analyze 現在の状態を確認 あるべき理想の状態と現在の状態 との差分を分析 分析した差分に対する処理を実行 コンテナを支えるオーケストレーション
  31. 34 Copyright © 2022, Oracle and/or its affiliates CI/CD Observe

    Act Analyze Controller あるべき理想の状態 Kubernetesクラスタの状態 指定された 「replicas: 3」 のPod数を維持すること コンテナを支えるオーケストレーション 宣言的オペレーション
  32. 35 Copyright © 2022, Oracle and/or its affiliates CI/CD Observe

    Act Analyze Controller あるべき理想の状態 Kubernetesクラスタの状態 (例)起動しているPodが2個の場合 Observe 理想:3 現状:2 コンテナを支えるオーケストレーション 宣言的オペレーション
  33. 36 Copyright © 2022, Oracle and/or its affiliates CI/CD Observe

    Act Analyze Controller あるべき理想の状態 Kubernetesクラスタの状態 (例)起動しているPodが2個の場合 Analyze 理想状態と比較して、Podが1個足りない コンテナを支えるオーケストレーション 宣言的オペレーション
  34. 37 Copyright © 2022, Oracle and/or its affiliates Observe Act

    Analyze Controller あるべき理想の状態 Kubernetesクラスタの状態 Act 「image: nginx:1.21.0」のPodを作成 (例)起動しているPodが2個の場合 CI/CD コンテナを支えるオーケストレーション 宣言的オペレーション
  35. コンテナを支えるオーケストレーション CI/CD Copyright © 2022, Oracle and/or its affiliates 38

    Kubernetesは分散処理基盤 Virtual Machine BareMetal Kubernetes Container
  36. コンテナを支えるオーケストレーション CI/CD Copyright © 2022, Oracle and/or its affiliates 39

    Kubernetes is becoming the Linux of the cloud by Jim Zemlin (The Linux Foundation)
  37. コンテナを支えるオーケストレーション CI/CD Copyright © 2022, Oracle and/or its affiliates 41

    Oracle Container Engine for Kubernetes (OKE) マネージドKubernetesサービス Oracle Cloud Infrastructure Registry (OCIR) マネージドなコンテナレジストリ Oracle Cloud Infrastructureの機能として提供されるマネージドKubernetesサービスとコンテナレジス トリ
  38. コンテナアプリケーション開発におけるCI/CD CI/CD Copyright © 2022, Oracle and/or its affiliates 42

    コードをソースコードリポジトリにコミッ ト/プッシュ CIパイプラインによる テスト、ビルド、 イメージプッシュ Developer Code Repository CI/CD Pipeline Operator Infrastructure Engineer コンテナプラットフォーム へのデプロイ Code Dockerfile manifest Build Run イメージ レジストリ Ship イメージ 共有 CIOps Push型 ソースコードが更新されるたびにCIパイプラインが稼働して、アプリケーションテスト、コンテナイメージビルド、コンテナイメー ジプッシュ、CDパイプラインによるデプロイ。 CI CD
  39. 43 Copyright © 2021, Oracle and/or its affiliates CI/CD ソフトウェアをビルド、テスト、およびデプロイし、開発ライフサイクルの各フェーズを自動化

    Bare Metal Compute Container Engine For Kubernetes Virtual Machine Functions 環境管理 デプロイメント・パイプライン アーティファクト管理 Fully-managed OCI DevOps Service デプロイ ロールバック ビルド・パイプライン OCI DevOps OCIR & Artifact Registry
  40. コンテナアプリケーション開発におけるCI/CD CI/CD Copyright © 2022, Oracle and/or its affiliates 44

    Dev/Staging/Prod CI/CD Container Image Registry Code & Config Repository Developer Read/Write Read Read/Write Read Read/Write apply Image Pull Kubernetesクラスタが増えるたびにセキュリ ティ含めた設定や権限管理も増えるため、 管理が煩雑となる。。 Kubernetesクラスタ外部での権限管理となるため、セキュリティリスクがある。。 K8s API CIOpsにおけるセキュリティリスクと管理の煩雑化
  41. CI/CD Copyright © 2022, Oracle and/or its affiliates 46 ①

    Code Change & Git Push ② Image Build & Test & Image Push Developer Code Repository CI Pipeline Operator Infrastructure Engineer コンテナープラット フォームへのデプロイ イメージ共有 Code Dockerfile manifest Build Run Ship Config Repository ③ Pull Request ④ Pull Request Merge イメージ レジストリ ⑤ Polling & Sync GitOps Pull型 Kubernetesクラスタ内に配置されたGitOpsオペレーターがConfigリポジトリを定期的にポーリングして、更新を検知し て更新内容をKubernetesクラスタに反映する仕組み。 コンテナアプリケーション開発におけるCI/CD GitOps オペレター CI CD
  42. 47 Copyright © 2022, Oracle and/or its affiliates CI/CD CIOpsの課題を解消

    CodeとConfigのリポジトリを分けることで、相互の影響を回避および境界線の明確化。特権ユーザの認証情報を外 部に持つ必要が無く、APIを外部に公開する必要もない。 CI Pipeline Container Image Registry Dev/Staging/Prod Code Repository Developer Read Config Repository GitOps Operator apply Read/Write Read CodeとConfig のリポジトリを 分けることで相 互の影響を回避 できて、境界線 が明確。 認証情報を外部に持つ必要がないため、 クラスタが増えても管理しやすい。 K8S API Read/Write Read Read Read/Write Image Pull Read/Write コンテナアプリケーション開発におけるCI/CD
  43. 48 Copyright © 2022, Oracle and/or its affiliates マニフェスト専用のGitリポジトリ上のマニフェストファイルの内容と実環境の状態が同一。マニフェストをGit管理することで、 履歴管理、ロールバック対応などが柔軟に行える。再現性を保証。

    CI Pipeline Container Image Registry Code Repository Developer Config Repository Dev Staging Prod manifest Equal マニフェストファイルの内容と稼働しているKubernetes クラスタ状態が同一。 Git管理により履歴管理、ロールバックも容易。 CIOpsの課題を解消 コンテナアプリケーション開発におけるCI/CD CI/CD
  44. 49 Copyright © 2022, Oracle and/or its affiliates • マニフェストファイルをGit管理

    - デプロイ先に対して「誰が、何時、何」を変更したのか(変更差分)を履歴で追える - デプロイ先をいつでも前の状態に戻すこと(ロールバック)ができる - プルリクエストによるレビュー・マージプロセスを通すことで組織ガバナンスを適用できる • 自動化 - 手動コマンドによるヒューマンエラーの排除 - 運用コストの軽減 GitOpsのメリット コンテナアプリケーション開発におけるCI/CD CI/CD
  45. 50 Copyright © 2022, Oracle and/or its affiliates CICD •

    CIツール ツールの傾向 CircleCI、TravisCI、GitHub Actions、GitLab Runnerなど、これまでも利用され続けているCIツールとGitOps ツールを組み合わせるケース。 KubernetesのCustomResourceとしてパイプラインを定義(Kubernetesマニフェスト)できる、Kubernetes- nativeなCIを実現できるTEKTONやArgo WorkflowsとGitOpsツールを組み合わせるケース。 コンテナアプリケーション開発におけるCI/CD
  46. 51 Copyright © 2022, Oracle and/or its affiliates • GitOpsツール

    ツールの傾向 Cloud Native関連のカンファレンスやコミュニティイベントでよく取り上げられているGitOpsツール。 CICD コンテナアプリケーション開発におけるCI/CD
  47. コンテナアプリケーション開発におけるCI/CD CI/CD Copyright © 2022, Oracle and/or its affiliates 52

    コンテナの可搬性(Portability)とスピード(Agility)を持ち合わせ、 品質および生産性の高いアプリケーション開発を実現 リリースサイクルを速め、 エンドユーザに最高品質のサービスを提供 これまで時間やコストを要していた箇所の改善、 より良いビジネスロジックに時間やコストを傾ける エンドユーザ様の満足度、企業収益の向上につなげる
  48. マイクロサービスの二つの側面 Microservices Copyright © 2022, Oracle and/or its affiliates 55

    1.開発組織や文化と関わる側面 マイクロサービスには、「開発組織や文化と関わる側面」と「技術的な側面」の二側面ある 開発組織の成長に伴うチーム、人員の増加が発生しても、小規模なチーム開発と同様に素早くプロダクト開発を維持す る 2.技術的側面 マイクロサービスは、個々に開発された複数の小さなサービスを連携させて、設計・運用を実施するソフトウェアのアーキテク チャ
  49. マイクロサービスの進化と挑戦 Microservices Copyright © 2022, Oracle and/or its affiliates 56

    チームサイズが小さい場合 • 一つのアプリケーションに機能を集約して開発 • 速度と開発品質の面で合理的 チームサイズが大きい場合 • コミュニケーションコストの増加 • 20人以上になるとチーム破綻へ 会議に限らず、開発チーム人数においても理想は “ Two Pizza Rule ” “会議の参加者が多いほど、生産性は低下する。これを解決するために、参加メン バーを2枚のピザを分け合える人数に抑える。”
  50. マイクロサービスの進化と挑戦 Microservices Copyright © 2022, Oracle and/or its affiliates 57

    マイクロサービスの前段として組織の細分化 100人いる会社で、100人を一つにして開発するよりも、主要な機能を10個に分けて機能ごとに10人のチームを10 個作って開発した方が効率的です。 100人で開発 10人のチームを10チーム作って開発
  51. マイクロサービスの進化と挑戦 Microservices Copyright © 2022, Oracle and/or its affiliates 58

    組織の分散化による課題 • アプリケーションデプロイのサイクルを他チームと完全に共有していることで、各チームの裁量でリリースできない • アプリケーションを機能ごとにスケーリングできないため、パフォーマンス要件の厳しいチームに引きずられる • 他チームと同じプロセス内で動作していて、他チームの障害を完全に分離できない • 他チームとコードベースを共有しているため、境界線や責任範囲が曖昧
  52. マイクロサービスの進化と挑戦 Microservices Copyright © 2022, Oracle and/or its affiliates 59

    組織的には分散化によって裁量ある小さいチームによる開発のスピード向上を目指せていても、 ソフトウェアの面では、依然として大きいチームとして機能する必要がある • コミュニケーションコストの増加 • チーム裁量の低下 • 曖昧な責任範囲 大きいチームとしての課題を解消しきれない
  53. マイクロサービスの進化と挑戦 Microservices Copyright © 2022, Oracle and/or its affiliates 60

    ソフトウェアの面でも組織の分散化に沿って分散化を進める • 小さいチームが自律的に機能することで、全体としてのプロダクト開発ス ピードを向上 • 各チームでデプロイサイクルが独立しているので、事業要件に沿って自 由にリリース • チームごとにパフォーマンス要件の異なるアプリケーションをスケーリング • 機能増加と共にチームと人員もスケールすることで、アプリケーションと組 織が同時に成長 このソフトウェア開発手法がマイクロサービス serviceA serviceB serviceC Service TeamB TeamA TeamC Team serviceN TeamN
  54. マイクロサービスの進化と挑戦 Microservices Copyright © 2022, Oracle and/or its affiliates 61

    • サービスによるコンポーネント化 • ビジネス機能に基づいたチーム編成 • プロジェクトではなく製品として捉えて開発運用 • インテリジェントなエンドポイントシンプルなパイプ • 非中央集権的な言語やツールの選択 • 非中央集権的なデータ管理 マイクロサービスの9つの特徴 マイクロサービスにおけるガイドライン • ITインフラの自動化(Infrastructure as Code) • 障害、エラーを前提とした設計 • 先進的な設計 James Lewis/Martin Fowlerの"Microservices" | https://martinfowler.com/articles/microservices.html
  55. マイクロサービスの進化と挑戦 Microservices Copyright © 2022, Oracle and/or its affiliates 62

    https://www.itmedia.co.jp/enterprise/articles/1810/11/news049.html 2018年にメルカリがマイクロサービスアーキテクチャを採用して、組織、サービス、そして企業としても拡大を目指し、 継続中。
  56. マイクロサービスの進化と挑戦 Microservices Copyright © 2022, Oracle and/or its affiliates 63

    モノリスからマイクロサービス アプリケーション モノリス アプリケーション アプリケーション アプリケーション アプリケーション マイクロサービス ServiceA ServiceB ServiceC ServiceD Service
  57. マイクロサービスの進化と挑戦 Microservices Copyright © 2022, Oracle and/or its affiliates 64

    そして、モダナイズ クラウドネイティブ技術を利用したマイクロサービス Virtual Machine OKE ServiceA ServiceB ServiceD ServiceC Service
  58. コンテナにおけるマイクロサービスを実現する技術 Microservices Copyright © 2022, Oracle and/or its affiliates 65

    Service Mesh アプリケーションとプロキシ機能の分離 アプリケーションプロセスごとに専用のプロキシを配 置して、そのプロキシにネットワーク周りの仕事をま かせる App Proxy container container Pod プロキシ機能の中央管理 プロキシ機能は大量になるのでコンフィグレーションの管理コスト が増加。中央にプロキシ機能の管理するコントロールプレーンを 配置して効率的に管理
  59. ビジネス面におけるマイクロサービス Microservices Copyright © 2022, Oracle and/or its affiliates 66

    ビジネスには進化のスピードと品質が求められる • サービスの早期リリース • 市場の動向/反応を早期フィードバックして対応 • サービス停止による機会損失をなくす システムは変化するビジネス要件に合わせ短い時間で高頻 度にリリースすることが求められる • アプリの変更をすぐに本番環境に適用 • 変化を許容できるシステムを構築 • 停止時間の短縮と運用作業の効率化 業務 効率化 ビジネス 創造 社外 社内業務の 効率化 社外顧客向け 新ビジネス 創造 社内 高頻度かつ即時に本番反映 可能なアプリケーションが必要
  60. マイクロサービスの特徴 Microservices Copyright © 2022, Oracle and/or its affiliates 67

    マイクロサービス・アーキテクチャ 大規模なシステムを疎結合な複数のサービスの組み合わせで実現する設計方式 • アップデートの容易性 • スケールの容易性 • 高可用性
  61. 68 Copyright © 2022, Oracle and/or its affiliates Microservices マイクロサービスの特徴

    アップデートの容易性 • 他のサービスへの影響を極小化し た形で、アップデート対象のサービ スのみをアップデート可能 • 高頻度にサービスのアップデートが 可能 スケールの容易性 • 他のサービスに影響を与えること なく、必要なサービスのみをスケー ルアウト可能 • 使用するリソースを最適化 高可用性 • サービスが独立しているため、障 害の影響を極小化 • 残ったサービス群でサービス提供 を継続していくことが可能 アップデート スケール 障害発生 影響なし
  62. Copyright © 2022, Oracle and/or its affiliates 69 マイクロサービスには文化的側面と技術的側面があり、その調和の最終的に目指すところは? マイクロサービスも結局

    Microservices 速く、正確に高品質なサービスを提供して、エンドユーザ様の満足度、企業収益、ビジネス価値の向上 これまで学んできたクラウドネイティブの意義と同じ!
  63. 71 Copyright © 2022, Oracle and/or its affiliates Observability そもそも監視って?

    Monitoring = 監視、観察して記録する 何のために、監視、観察して記録する? • サービスやアプリケーションの健全性を確認 • 障害やトラブルの原因調査 • キャパシティ分析 • サービス利用者の行動分析 サービスやシステムを利用するユーザに影響を与えないため 技術、運用、ビジネスなどに多岐にわたる
  64. 72 Copyright © 2022, Oracle and/or its affiliates Observability そもそも監視って?

    サービスやシステムの利用者が、問題なく利用できる、「安定稼働している状態」を維持する! 監視の意義 • より良い方法で、システムの稼働状況を把握できている状態 • システム運用において、判断に必要となる情報を取得できている状態 • 迅速に障害やトラブルに対応できる状態 これまでもこれからも、こうした本質は変わらない
  65. 73 Copyright © 2022, Oracle and/or its affiliates Observability オブザバビリティの背景

    これまでのシステム 従来のWeb3層モデルのようなシンプルな構成のシステムであれば、比較的容易に障害を調査することが可能。 LB/Web/App/DBなど それぞれのコンポーネント を追いやすい
  66. 74 Copyright © 2022, Oracle and/or its affiliates Observability オブザバビリティの背景

    分散システム 分散システムのような小さなサービスが疎結合するようなシステムでは、構成が複雑となり障害発生個所や原因追求が 困難であり、まして人の手で行うことは非現実的。 それぞれのコンポーネント を追うのは非現実的
  67. 75 Copyright © 2022, Oracle and/or its affiliates Observability オブザバビリティの背景

    分散システム 右図にあるような分散システムでは、大量のサービスが連携して、 一つのシステムとして成り立っているため、障害が発生した際の検 知など、これまでのように容易にはいかない… 『Adoption of Cloud Native Architecture, Part 2: Stabilization Gaps and Anti-Patterns』 https://www.infoq.com/articles/cloud-native-architecture-adoption-part2/
  68. 76 Copyright © 2022, Oracle and/or its affiliates Observability オブザバビリティとは?

    オブザバビリティの意味 Observability might mean different things to different people. 可観測性は、人によって意味が異なる場合があります。 『 Distributed Systems Observability』 https://www.oreilly.com/library/view/distributed-systems-observability/9781492033431/ Observability = 可観測性 Observability(可観測性)は、人によってまたはシステムによって基準、観点、解釈の仕方が違うものなので 本セッションの内容も一例と捉えてください。
  69. 77 Copyright © 2022, Oracle and/or its affiliates Observability オブザバビリティとは?

    クラウドネイティブにおけるオブザバビリティ Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil. クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実 行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがありま す。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変 更を最小限の労力で頻繁かつ予測どおりに行うことができます。 『 CNCF Cloud Native Definition v1.0』 https://github.com/cncf/toc/blob/main/DEFINITION.md クラウドネイティブの文脈では、Observability(可観測性)は、 クラウドネイティブなシステムを実現するまたは支える一要素
  70. 78 Copyright © 2022, Oracle and/or its affiliates Observability オブザバビリティとは?

    クラウドネイティブにおけるオブザバビリティ Kubernetes上のPod(コンテナ)を例に考えてみると、決められたNodeに決められたPod(コンテナ)が稼働するとは限らな いため、これまでの監視方法とは違うアプローチが必要となる。 OKE Virtual Machine Virtual Machine Virtual Machine Operator Node状況、Kubernetes Cluster状況(Podなど)、 アプリケーション、データベー スなど色々ある
  71. 79 Copyright © 2022, Oracle and/or its affiliates Observability オブザバビリティとは?

    • 人またはシステムによって基準・観点は異なる • クラウドネイティブなシステムを実現するまたは支える一要素 • 従来のシステムとは異なるアプローチが必要(分散システム、コンテナなど) • より良い方法で、システムの稼働状況を把握できている状態 • システム運用において、判断に必要となる情報を取得できている状態 • 迅速に障害やトラブルに対応できる状態 この本質も不変!
  72. 80 Copyright © 2022, Oracle and/or its affiliates Observability Observabilityを実現する3要素

    Metrics Logs Traces 各要素が連携してObservabilityを実現 させることが重要 特定の時間間隔で測定して統 計したもの 発生したイベントをタイムスタンプで記録 したもの 依存関係がある一連のリクエストフ ローを始まりから終わりまでを変換し たもの 何が起きているのか 何が起きたのか どこで起きたのか
  73. 81 Copyright © 2022, Oracle and/or its affiliates Observability Observabilityを実現する3要素

    Observabilityを実現する主なツール Metrics Logs Traces Prometheus & Grafana Grafana Loki EFK Jaeger Zipkin Open Telemetry
  74. 82 Copyright © 2022, Oracle and/or its affiliates Observability Observabilityを実現する3要素

    Observabilityを実現する主なOCI Service Metrics Logs Traces Monitoring Logging Application Performance Monitoring Logging Analytics Notifications
  75. Copyright © 2022, Oracle and/or its affiliates 83 オブザバビリティは、クラウドネイティブシステムを支える 速く、正確に高品質なサービスを提供して、エンドユーザ様の満足度、企業収益、ビジネス価値の向上

    提供だけではなく、常にユーザエクスペリエンスを損なうことが無いよう維持、 そして、障害やトラブルが発生した場合も速く、正確に対応できる体制も維持する! Observability
  76. 85 Copyright © 2022, Oracle and/or its affiliates Cloud Native

    Database クラウドネイティブ時代のデータベース OKE DB DB DB サービスA サービスB サービスC マイクロサービス1つに1つのDBを備える構成、「Database per Service」という原則において、マイクロサービス側のア ジリティ、可用性、拡張性をDB側もどうアプローチしていくべきなのか? コンテナの特性を生かした小さなデ プロイ単位によるアジリティの向上 サービス単位ごとの可用性 サービス単位ごとの拡張性 データの整合性を保ち、永続化が必要となるDB、アジリ ティへのアプローチはどうする?? DBレプリカにおけるプラットフォームの広域災害、そ れに伴うパフォーマンスや整合性にどう備える?? サービスのスケールにおける DBの拡張性はどうする??
  77. 86 Copyright © 2022, Oracle and/or its affiliates Cloud Native

    Database クラウドネイティブ時代のデータベース OKE サービスA サービスB サービスC 各クラウド事業者が提供するマネージドのDBサービス(DBaaS)を利用して、スケール、リードレプリカ、マルチクラウド、 マルチリージョンなどをベースに可用性、拡張性を高める。 DBaaS Autonomous Database MySQL Database Service NoSQL Database Cloud Service
  78. 87 Copyright © 2022, Oracle and/or its affiliates Cloud Native

    Database クラウドネイティブ時代のデータベース OKE サービスA サービスB サービスC Kubernetesにおいては、Operatorを利用して、DBのようなステートフルなソフトウェアをステートレスなアプリケーションと 同様に効率的に運用・保守(可用性、拡張性含む)を高める。 Operator Oracle Database Operator Oracle MySQL Operator
  79. 88 Copyright © 2022, Oracle and/or its affiliates Cloud Native

    Database クラウドネイティブ時代のデータベース OKE サービスA サービスB サービスC 水平方向の拡張性を備えながら、地理的に離れた所へのレプリカ配置を可能とするなどNoSQLのような特徴を持ちつ つ、ACID準拠のトランザクションを保証し、SQLが利用可能なRDBとしての特性も併せ持つデータベース。 NewSQL CockroachDB TiDB yugabyteDB 互換 互換
  80. アプリケーションの開発・運用を支援するマネージド・サービス Oracle Cloud Native Services Copyright © 2022, Oracle and/or

    its affiliates 90 Storage OCI Core Infrastructure Compute Database Networking OCI Cloud Native Landscape 開発・運用管理ツール アプリケーション実行基盤 API 管理 Oracle Functions API Gateway サービス間連携 オブザーバビリティ OCI DevOps OCI Registry Resource Manager OCI Service Mesh OCI Workflow* Container Engine for Kubernetes (Managed/Virtual Nodes*) メッセージング Queue* Streaming Service Connector Hub Notifications Application Performance Monitoring Logging Monitoring Events Container Instance* *: Coming Soon! WebLogic Server for OCI/OKE OTMM (Free版) 開発フレームワーク Helidon MP/SE Micronaut
  81. 92 Copyright © 2021, Oracle and/or its affiliates OCI DevOps

    Demo コード 管理 ビルド 成果物 管理 デプロイ End to End の開発・運用プロセス 幅広い環境に対応 コード管理、ビルド・パイプライン、 成果 物管理、デプロイメント・パイプラインから 構成される各機能を用いた、一気通貫 の開発・運用プロセスを実現 アーティファクトサービスと連携、実行環 境を問わず、幅広い環境へのデプロイ を実現 OCI DevOpsのサービスとしての価 格は無料 ソフトウェアをビルド、テスト、およびデプロイし、開発ライフサイクルの各フェーズを自動化 Bare Metal Compute & Virtual Machine OKE Functions 価格無料 OCIR Artifact Registry 環境管理 アーティファクト管理 (*コード・リポジトリのストレージ、およびビルドのためのコン ピュートは別途必要)
  82. 93 Copyright © 2021, Oracle and/or its affiliates OCI DevOps

    Demo ソフトウェアをビルド、テスト、およびデプロイし、開発ライフサイクルの各フェーズを自動化 Environment Build Pipeline: CI Deployment Pipeline: CD Artifact ▪ ユースケース 継続的インテグレーション/継続的デリバリー(CI/CD) の実現、アプリケーション開発のライフサイクルを想定した システム開発および運用環境の整備 ▪ 特徴 Code Repository:ソースコード管理(Git) Build Pipeline (CI):ソフトウェアビルドの自動化 Artifact:成果物管理 Environment:デプロイ先管理 (Compute,OKE,Functions) Deployment Pipeline (CD) :デプロイの自動化 ▪ 価格 無料 (*コード管理のストレージ、およびビルドのためのcomputeは別途必要) BM & VM Compute OKE Functions Developer 開発環境 デプロイ 統合テスト 実行 承認 本番環境 デプロイ ビルド 実行 成果物 検証 成果物 デリバリ Code Repository OCIR Artifact Registry OCI DevOps
  83. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    94 環境構築後、コード変更とGit Pushをトリガーに、一連のパイプラインを自動実行、OKEクラスタにサンプルコンテナアプ リケーションがデプロイを確認
  84. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    95 1.OKEセットアップ Oracle Container Engine for Kubernetesを利用して、3ノードのKubernetesクラスタを構築
  85. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    96 2. OCI Notifications セットアップ OCI Notificationsと連携して、登録したメールアドレスにOCI DevOpsから通知を受け取ることができるようにする
  86. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    97 3.プロジェクト OCI DevOpsは、プロジェクト単位で管理するため、最初にプロジェクトを作成
  87. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    98 4.環境 OCI DevOpsからOKEクラスタにアプリケーションのデプロイを行うために、OKEクラスタを登録
  88. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    99 5.コード・リポジトリ 独自のプライベート・コードリポジトリをOCI DevOps上に作成
  89. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    10 0 6.アーティファクト ビルドパイプラインでビルドしたコンテナイメージを格納するコンテナイメージレジストリのセットアップとOCI DevOpsから OKEクラスタにデプロイする際に利用するマニフェストをアーティファクトレジストリに登録
  90. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    101 7.デプロイメント・パイプライン アーティファクト・レジストリと連携して、OKEクラスタにアプリケーションを自動デプロイするためのパイプラインを作成
  91. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    102 8.ビルド・パイプライン コードリポジトリからソースをダウンロードして、コンテナイメージビルド、コンテナイメージをOCIRに格納、デプロイメント・パ イプライン連携という一連の流れをビルド・パイプラインとして作成
  92. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    103 9.トリガー ソースコードを変更して、コードリポジトリへの「git push」コマンド実行をトリガーに、これまで作成してきた「ビルド・パイプ ライン」、「デプロイメント・パイプライン」が自動で稼働して、OKEクラスタにアプリケーションがデプロイ可能にする
  93. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    104 10.パイプラインの実行 / 11.デプロイの確認 実際にソースコードを変更して、「git push」をトリガーにOKEクラスタへの自動デプロイを実行
  94. OCI DevOps Demo Copyright © 2021, Oracle and/or its affiliates

    105 サンプルアプリケーションのソースコード、環境構築テキストは、以下を参照 https://github.com/oracle-japan/oracle-developer-days-2021-ocidevops-hol GitHub Tutorial https://oracle-japan.github.io/ocitutorials/cloud-native/devops-for-commons https://oracle-japan.github.io/ocitutorials/cloud-native/devops-for-beginners-oke/ Oracle Cloud Infrastructure(OCI) DevOps 事前準備 Oracle Cloud Infrastructure(OCI) DevOps ことはじめ - OKE編 -
  95. Copyright © 2022, Oracle and/or its affiliates 108 2022/11/21-22 https://event.cloudnativedays.jp/cndt2022

    ハイブリッド開催! 有明セントラルタワーホール&カンファレンス +オンライン 参加費無料 #CNDT2022
  96. Oracle Code Night Online 様々なテーマで開催中︕ Oracle Code online 開催情報は Connpass

    で公開中︕ oracle-code-tokyo-dev.connpass.com 過去開催 Oracle Code online は YouTubeにて公開中︕ youtube.com/c/JapanOracleDevelopers
  97. Thank you 110 Copyright © 2020, Oracle and/or its affiliates

    | Confidential: Internal/Restricted/Highly Restricted