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

コンテナの価値とは

F6df8bd336f1ff47494a43c68a562bfa?s=47 satokota
April 21, 2021
450

 コンテナの価値とは

F6df8bd336f1ff47494a43c68a562bfa?s=128

satokota

April 21, 2021
Tweet

Transcript

  1. © 2019 IBM Corporation 1 © 2020 IBM Corporation 1

    1 コンテナ共創センター勉強会 #1 ~コンテナの価値とは~
  2. © 2019 IBM Corporation 2 © 2020 IBM Corporation 2

    2 はじめに ü 個⼈利⽤の範囲を超えて、本資料の複製、転載、転⽤、引⽤等の⼆次利⽤は禁⽌させていただきます。 ü 本資料は講師が慎重に著述・編集しています。ただし、本資料の記述内容に関わる運⽤結果にまつわる あらゆる損害・障害につきましては、責任を負いませんのであらかじめご了承ください。 ü 本資料における全ての掲載内容は、あくまで私⾃⾝の⾒解であり、必ずしも私の所属団体・企業における ⽴場、戦略、意⾒を代表するものではありません。
  3. © 2019 IBM Corporation 3 © 2020 IBM Corporation 3

    3 ⾃⼰紹介 Yoichiro Suzuki(鈴⽊ 洋⼀朗) 所属︓ ⽇本アイ・ビー・エム株式会社 ※本資料における全ての掲載内容は、あくまで私⾃⾝の⾒解であり、必ずしも私の所属団体・企業における⽴場、 戦略、意⾒を代表するものではありません。 経歴︓ マルチテナント型クラウドサービスの運⽤を経て、様々な業界におけるクラウド・コンテ ナの設計・構築・運⽤・技術⽀援を担当。 共著︓ 『OpenShift徹底活⽤ガイド』 シーアンドアール研究所出版 認定資格︓ twitter︓ @yoichiro_2 SPECIALIST IN OPENSHIFT ADMINISTRATION SPECIALIST IN OPENSHIFT APPLICATION DEVELOPER
  4. © 2019 IBM Corporation 4 © 2020 IBM Corporation 4

    4 ⽬次 • コンテナが求められる背景 • コンテナが企業にもたらす効果 • DockerとKubernetes
  5. © 2019 IBM Corporation 5 © 2020 IBM Corporation 5

    5 ⽬次 • コンテナが求められる背景 • コンテナが企業にもたらす効果 • DockerとKubernetes
  6. © 2019 IBM Corporation 6 © 2020 IBM Corporation 6

    6 KubeCon + CloudNativeCon North America 2018 「Developing Kubernetes Services at Airbnb Scale」より引⽤ における1週間あたりの開発数 20k 15k 10k 5k 2018年 2017年 2016年 2015年 2014年 DXでは、頻繁なアプリ開発・改修をして、 ユーザー満⾜度の向上及びシェアの拡⼤が重要 頻繁なリリースができる 柔軟なITシステムが必要 DX時代に求められるITシステム
  7. © 2019 IBM Corporation 7 © 2020 IBM Corporation 7

    7 DX時代に求められるITシステム 項⽬ 守りのIT、Mode1、SoR 攻めのIT、Mode2、SoE 重要視される 価値 安定可動、決められた要件通りの動作 スピード、柔軟性、 拡張性、ユーザー体験 投資⽬的 コスト削減、業務の効率化 ビジネスの収益、新規ビジネス創出 ⽂化 システムの変更は極⼒⾏わず、基本塩漬け 障害を起こさない ビジネスの収益を最優先とし、積極的な開発・変 更を⾏う 障害は起きることが前提 開発・運⽤ ウォーターフォール、モノリシック、開発・保守の 分離 アジャイル、マイクロサービス 、DevOps(SRE) 改修頻度 1回/数ヶ⽉~数年 1デプロイ/(⽇/週単位)
  8. © 2019 IBM Corporation 8 © 2020 IBM Corporation 8

    8 インフラは従来と 同じで良いか︖
  9. © 2019 IBM Corporation 9 © 2020 IBM Corporation 9

    9 従来インフラが抱える課題 ①環境構築のリードタイム • ⼿作業かつ基盤チームと開発チームによる頻繁なやりとりに、環境構築のリードタイムが発⽣している • 頻繁なやりとりによって作業ミスや⼿戻りが発⽣しやすく、開発⽣産性の妨げとなっている ②システムの複雑性 • オペレーティングシステムとミドルウェアやアプリケーションが利⽤するライブラリが依存関係にあるため、 パッチ適⽤の影響がシステム全体に伝搬してしまうため慎重にならざるを得ない ③資源費⽤の増⼤・無駄 • 常時起動しない開発・検証環境のために資源を確保せざるを得ない
  10. © 2019 IBM Corporation 10 © 2020 IBM Corporation 10

    10 これらの課題は なぜ発⽣しているのか︖
  11. © 2019 IBM Corporation 11 © 2020 IBM Corporation 11

    11 インフラとアプリが 密接に関連しているから アプリ インフラ
  12. © 2019 IBM Corporation 12 © 2020 IBM Corporation 12

    12 アプリ インフラ インフラとアプリが分離できたら︖ ü開発者が⾃律的にアプリのデプロイ・削除ができる üアプリは原則インフラとの依存関係を無視できる ü使ってない開発・検証⽤アプリは落としておける
  13. © 2019 IBM Corporation 13 © 2020 IBM Corporation 13

    13 アプリ インフラ インフラとアプリを 分離する技術として コンテナが注⽬されている
  14. © 2019 IBM Corporation 14 © 2020 IBM Corporation 14

    14 コンテナ コンテナ コンテナ コンテナとは コンテナとは ⼀つのOS上に複数のアプリケーションを分離して実⾏することが可能な技術 コンテナの特徴 • 1つのOS環境に複数の分離された空間(コンテナ)を作成 • 分離された空間はOSの1プロセスとして稼働 • カーネルは共有するが、分離された空間はそれぞれ独⽴して稼働 • アプリケーションとライブラリの依存性を解決し、コンテナごとに異なるバージョ ンを導⼊可能 アプリ ライブラリ アプリ ライブラリ アプリ ライブラリ OS コンテナ・ランタイム
  15. © 2019 IBM Corporation 15 © 2020 IBM Corporation 15

    15 サーバ型と⽐較して サーバ型 コンテナ型 ü 仮想マシンごとに隔離 ü HWレベルの仮想化 ü OSカーネルを専有 ü プロセスをグループ化 ü OSレベルを抽象化 ü OSカーネルを共有 ポータブル 容易なカスタマイズ ⼩さい MBメモリー使⽤量 迅速 秒単位での稼働 ハードウェア OS コンテナ・ランタイム ハードウェア ハイパーバイザー ゲストOS ゲストOS ゲストOS 仮想マシン 仮想マシン 仮想マシン ライブラリ ライブラリ ライブラリ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ ア プ リ
  16. © 2019 IBM Corporation 16 © 2020 IBM Corporation 16

    16 ⽬次 • コンテナが求められる背景 • コンテナが企業にもたらす効果 • DockerとKubernetes
  17. © 2019 IBM Corporation 17 © 2020 IBM Corporation 17

    17 コンテナで期待される効果 アプリリリース速度の向上 作業 依頼書 作業 依頼書 作業 依頼書 作業 依頼書 サーバ アプリ 担当者 インフラ 担当者 サーバ インフラ担当者 コンテナ アプリ担当者 コンテナ コンテナ アプリとインフラ担当者間で 頻繁なやりとりが発⽣ アプリ担当者が⾃律的に アプリ環境をデプロイ
  18. © 2019 IBM Corporation 18 © 2020 IBM Corporation 18

    18 コンテナで期待される効果 インフラ資源の効率化 サーバ 利⽤していないアプリ分も インフラ資源を割り当て 利⽤していないアプリは削除して 必要な時に起動 サーバー コンテナ アプリ アプリ コンテナ アプリ コンテナ アプリ コンテナ アプリ コンテナ アプリ コンテナ アプリ コンテナ アプリ コンテナ アプリ コンテナ アプリ アプリ アプリ サーバ アプリ アプリ アプリ サーバ アプリ アプリ アプリ サーバ アプリ アプリ アプリ 新たな開発環境 インフラ資源が⾜りないと 構築不可 コンテナ アプリ コンテナ アプリ コンテナ アプリ 新たな開発環境 削除して余った資源を 割り当て ・・・利⽤していないアプリ
  19. © 2019 IBM Corporation 19 © 2020 IBM Corporation 19

    19 コンテナで期待される効果 柔軟な開発端末 開発端末 システムごとに開発端末を⽤意 ⼀つの開発端末上で 複数のミドルウェアを構築 開発端末 Weblogic 8 Oracle Database 8 開発端末 WAS 8 DB2 11 開発端末 WAS 7 Oracle Database 7 Docker コンテナ Weblogic 8 コンテナ WAS 8 コンテナ DB2 11 コンテナ WAS 7 コンテナ Oracle Database 7 コンテナ Oracle Database 8 コンテナ イメージ コンテナ イメージ コンテナ イメージ 共通レジストリ 必要なイメージを pullするだけ インストール ⼿順書 インストール ⼿順書 インストール ⼿順書 インストール ⼿順書 インストール ⼿順書 インストール ⼿順書
  20. © 2019 IBM Corporation 20 © 2020 IBM Corporation 20

    20 コンテナで期待される効果 可搬性の向上 アプリがインフラ環境に依存しやすい どのインフラ環境でも アプリ実⾏が可能 AWS Azure GCP オンプレミス 開発端末 AWS Azure GCP オンプレミス 開発端末 コンテナ 実⾏環境 アプリ アプリ アプリ アプリ アプリ アプリ アプリ コンテナ 実⾏環境 コンテナ 実⾏環境 コンテナ 実⾏環境 コンテナ 実⾏環境
  21. © 2019 IBM Corporation 21 © 2020 IBM Corporation 21

    21 コンテナが企業にもたらす効果 環境構築 リードタイムの短縮 インフラ資源の 効率化 柔軟な 開発環境 可搬性の 向上 早期ビジネスの ⽴ち上げ コスト削減 市場のニーズに いち早く対応 開発⽣産性の 向上 ⼈的⼯数削減 資源削減 売上げ拡⼤
  22. © 2019 IBM Corporation 22 © 2020 IBM Corporation 22

    22 コンテナ化の事例 課題 開発⽤VMをデプロイするために、使⽤⽤途や責任者、コストなど を記載した申請書を起票する必要があり、払い出しに4~7⽇ほど 掛かっていた。 解決策 コンテナ基盤を導⼊し、その上でアプリのコンテナ化やアジャイル開 発、CIを実装。 導⼊効果 ü 6ヶ⽉のプロジェクト後、全てのECサイト⽤アプリケーションをコン テナ基盤上で動かすことに成功 ü VM払い出し期間は半分になり、リリースはこれまで4-6週間 だったものが1⽇あたり3,4回ほどになった。 ü ⼀ヶ⽉あたり80000ビルド実施されている スポーツ⽤品を中⼼とした、アディダスブランドを販売する企業 参考 「Kubernetes Case Study adidas」
  23. © 2019 IBM Corporation 23 © 2020 IBM Corporation 23

    23 コンテナ化の事例 課題 運⽤の効率化、開発速度の向上を⾏うため、CI/CDプロジェクト を開始してデプロイ時間を⼤幅に短縮。デプロイをより⾼速化する ための環境を模索。 解決策 基盤としてコンテナ環境(Kubernetes)を採⽤ 導⼊効果 ü CICDによるデプロイ時間が30分のところ、5分に短縮 ü CPU使⽤率を5倍から12倍に改善(2600台以上のVMにな る予定が40台のVMで実⾏) 全⽶最⼤の⾼級百貨店でアパレル・ストア 参考 「Kubernetes Case Study NORDSTROM」
  24. © 2019 IBM Corporation 24 © 2020 IBM Corporation 24

    24 ⽬次 • コンテナが求められる背景 • コンテナが企業にもたらす効果 • DockerとKubernetes
  25. © 2019 IBM Corporation 25 © 2020 IBM Corporation 25

    25 コンテナを動かすカーネル技術 OS コンテナ / コンテナ / / /tmp/aaa /tmp/bbb chroot namespace OS コンテナ UID:1001 コンテナ / |- /tmp |_ /var PID:1001 UID:1001 PID:1001 / |- /tmp |_ /var OS コンテナ コンテナ cgroup cpu: ~100m memory: ~500M cpu: ~500m memory: ~1G
  26. © 2019 IBM Corporation 26 © 2020 IBM Corporation 26

    26 コンテナ・ランタイムとは コンテナ・ランタイムとは アプリやライブラリをOS上で分離して実⾏するのに必要な機能を備えたコンテナ実⾏環境。 以下⼆つで構成される。 • High-level Container Runtime OSのデーモンとして常駐し、KubernetesやDockerなどから命令を受け付け、 Low-level Container Runtimeにコンテナ実⾏の命令を⾏う。 代表例)containerd, cri-o • Low-level Container Runtime バイナリとしてHigh-level Container Runtimeから受け取った情報を基に、 namespaceなどのOS機能を使ってコンテナを実⾏する。 代表例)runc コンテナ アプリ ライブラリ コンテナ アプリ ライブラリ コンテナ アプリ ライブラリ OS コンテナ・ランタイム
  27. © 2019 IBM Corporation 27 © 2020 IBM Corporation 27

    27 Dockerとは ü ユーザーがコンテナを実⾏・管理するための機能を提供 ü Docker社が開発しているオープンソース・ソフトウェア ü コンテナ・ランタイムにはcontainerdやruncが採⽤
  28. © 2019 IBM Corporation 28 © 2020 IBM Corporation 28

    28 Dockerのコンポーネント Registry Client Dockerのコマンド操作環境 Engine Containerの実⾏環境(コンテナ・ランタイム) Image Containerを作成するためのテンプレート Registry Imageを格納する場所 Container Imageを基に実⾏されたアプリケーション Image Client Engine Image Container Container
  29. © 2019 IBM Corporation 29 © 2020 IBM Corporation 29

    29 サーバー サーバー サーバー サーバー サーバー サーバー Dockerの限界 コンテナを使い始めると、数は次第に増加し、 複数のサーバーで構成されるようになります。 Google社は 数⼗億 のコンテナが稼働 https://cloud.google.com/containers?hl=ja コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ サーバー Dockerだけでは限界が ü 数千台のコンテナをどうやって効率的に管理するのか︖ ü ホストマシンが複数台になった時のリソース管理は︖ ü どのサーバー上のコンテナが障害になっているのか︖ ü 複数の役割のコンテナを同時に起動するには︖ ü スケールアウトしたときロードバランサにどうやって反映する︖
  30. © 2019 IBM Corporation 30 © 2020 IBM Corporation 30

    30 コンテナオーケストレーションツール コンテナ オーケストレーション ツール サーバー サーバー サーバー コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ 空き リソース
  31. © 2019 IBM Corporation 31 © 2020 IBM Corporation 31

    31 Kubernetesとは リリース ü 2000年初頭 Google,Inc. Borg Project ü 2015年 CNCFよりKubernetes 1.0 リリース ü 2021年4⽉時点 最新バージョンは1.21 特徴 ü AWS, Azure, VMWare, IBM Cloud, Google Cloudなど、多数 の⼤⼿ベンダーが開発に参画 ü コンピューティング・ネットワーキング・ストレージのオーケストレーションを⾏ い、コンテナ管理に必要な機能を提供 ü オープンソースソフトウェア ü CNCFの成熟度レベルではGraduatedプロジェクトに認定され、コントリ ビューションの活性度やコミュニティの成熟度が認められている ü Graduatedの評価を受けているコンテナオーケストレーションツールは Kubernetesだけ
  32. © 2019 IBM Corporation 32 © 2020 IBM Corporation 32

    32 Kubernetesの便利な機能 n スケールアウト n ポリシーベースでの可⽤性 n 負荷分散 n ロールアップデート n ネットワーク管理 n 永続ストレージ管理 n CPU/Memory リソース管理 コンテナの可⽤性、スケーラビリティ、保守性を⾼めてくれる便利な機能が盛りだくさん
  33. © 2019 IBM Corporation 33 © 2020 IBM Corporation 33

    33 まとめ • コンテナのオーケストレー ション • コンテナ管理の⾃動化 • 開発⽣産性向上 • 可搬性の向上 • 資源の効率化 • サーバー仮想統合 頻繁なアプリ開発・リリースを 実現するのに限界が 膨⼤に膨れ上がる コンテナの管理に限界が
  34. © 2019 IBM Corporation 34 © 2020 IBM Corporation 34

    34 ご清聴ありがとうございました︕︕ 是⾮、コンテナの活⽤をご検討ください︕︕