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

教えると学ぶ -Cloud Native Technology-

教えると学ぶ -Cloud Native Technology-

OSC 2020 Online/Fall の資料です。

cyberblack28

October 23, 2020
Tweet

More Decks by cyberblack28

Other Decks in Technology

Transcript

  1. OSC2020 Online/Fall 2020.10.23
    CNBF(Cloud Native Bright Future)
    Yutaka Ichikawa
    教えると学ぶ
    ~ Cloud Native Technology ~

    View Slide

  2. Certification & Community
    CKA CKAD KCM100
    2018 2019
    #CNDT2020
    Name: Yutaka Ichikawa
    Twitter/GitHub/Qiita: cyberblack28
    Hatena Blog: https://cyberblack28.hatenablog.com/
    Slides: https://speakerdeck.com/cyberblack28
    Job
    Educational Solution Architect / Technical Educator
    Developer Advocate / Technical Evangelist
    Infrastructure Engineer / Frontend Engineer
    Profile
    #cnbfmeetup
    Cloud Native
    Bright Future

    View Slide

  3. AP Communications Co., Ltd
    Let’s Start
    Cloud Native

    View Slide

  4. ● What’s CNBF
    ● Myself
    ● Learn Cloud Native Technology
    ● Teach Cloud Native Technology
    ● Summary
    ● Information
    Agenda

    View Slide

  5. What’s CNBF

    View Slide

  6. クラウドネイティブで、企業情報システムに
    明るい未来を切り開くMeetup
    Cloud Native Bright Future(CNBF)とは?
    これからクラウドネイティブに取り組みたい企業と、クラウドネイティ
    ブの先進企業の交流によって、中⽴に、企業情報システムが新たな段階
    に踏み出すことを⽀援するコミュニティです。
    Promotion Movie
    http://bit.ly/CNBF-Promotion

    View Slide

  7. CNBF Community Members
    Masaya Aoyama Isao Shimizu Makoto Hasegawa
    Yutaka Ichikawa Maho Takara Daiki Hayakawa

    View Slide

  8. Myself

    View Slide

  9. Myself
    日々この3つの調和を目指して活動しています
    極める = エンジニアとして技術を極める
    伝える = エバンジェリスト・アドボケートとして技術を提唱する
    教える = 技術教育者として技術を教える
    極める、伝える、教えるの調和

    View Slide

  10. Myself
    「極める、伝える、教える」
    の根底にあるもの

    View Slide

  11. Myself
    それは、「学び」

    View Slide

  12. Myself
    エンジニアとして技術を極められない...
    自身が学ばないと









    ... 技








    ...

    View Slide

  13. Myself
    「学び」をどうしているか?

    View Slide

  14. Myself
    「何から始めて良いのかわからない」
    へのアプローチ

    View Slide

  15. Learn Cloud Native Technology

    View Slide

  16. Learn Cloud Native Technology
    Books
    ここ数年にかけてDocker/Kubernetesに関連する書籍が多数出版されました。
    DockerとKubernetesを合わせて学ぶことができます。

    View Slide

  17. Learn Cloud Native Technology
    Books
    Kubernetesの詳細を学ぶことができます。

    View Slide

  18. Learn Cloud Native Technology
    Books
    クラウドネイティブアプリケーションを支える技術としてのDocker/Kubernetesから関
    連する技術まで、これからのエコシステムについて学ぶことができます。

    View Slide

  19. Learn Cloud Native Technology
    Books
    Docker/Kubernetes上で稼働させるアプリケーションを
    プロダクションで利用するにはどうするべきかを学ぶことができます。

    View Slide

  20. Learn Cloud Native Technology
    Web Informations
    Docker/Kubernetesの公式サイトでは、最新の情報や公式ドキュメントがあります。
    https://kubernetes.io/
    https://www.docker.com/

    View Slide

  21. Learn Cloud Native Technology
    Web Training
    無料でブラウザさえあればハンズオントレーニングを利用できます。
    Docker/KubernetesだけでなくたくさんのCloud Native技術コンテンツがあります。
    https://www.katacoda.com/

    View Slide

  22. Learn Cloud Native Technology
    Conference & Event
    技術カンファレンスや技術コミュニティ主催のイベントに参加することで
    キャッチアップできます。
    #CNDT2020
    #KubeCon
    #CloudNativeCon #k8sjp
    KubeFest tokyo

    View Slide

  23. Learn Cloud Native Technology
    Seminar & Training
    有料/無料含め、Cloud Native Technologyのセミナーやトレーニングを
    利用して学ぶことができます。
    Docker
    Kubernetes

    View Slide

  24. Learn Cloud Native Technology
    Contribute
    Cloud Native TechnologyはOSSがベースとなっているため
    ソースコードを読むことで勉強となり、修正をプルリクエストして貢献もできます。
    海外のエンジニアともSlackなどで交流できます。
    ソースコードは敷居が高い場合があるかもしれません。
    公式ドキュメントの翻訳でコントリビュートにチャレンジもできます。

    View Slide

  25. Learn Cloud Native Technology
    Writing
    個人ブログ、QiitaなどのWeb執筆、zenn、技術書典などで自主的に書籍を執筆する
    ことで学びを得ることができます。

    View Slide

  26. Learn Cloud Native Technology
    SNS
    Twitter、FacebookなどでCloud Native Technologyのインフルエンサーや情報源とな
    るアカウントをフォローして情報をキャッチアップすることから学びに繋がります。

    View Slide

  27. Learn Cloud Native Technology
    Certificates
    資格取得を目指して学ぶのも一つです。
    CKA CKAD CKS
    New!

    View Slide

  28. Learn Cloud Native Technology
    Main business & Side business
    本業の仕事で個人またはチームで試行錯誤しながら、
    副業で自分よりも優れた人たちと共に学ぶのも一つです。

    View Slide

  29. Learn Cloud Native Technology
    Community
    技術コミュニティのミートアップに参加または登壇することで学ぶことができます。
    運営メンバーになることで人脈も広がります。

    View Slide

  30. Myself
    コミュニティついて深堀

    View Slide

  31. Learn Cloud Native Technology
    クラウドネイティブの状況は、
    パブリッククラウドが騒がれ始めた時に似ています。
    クラウドの時代にはコミュニティがエンジニアの成長を支えていくのではないか
    Publickey 2014.2.21
    このクラウドをクラウドネイティブに置き換えると当てはまります。

    View Slide

  32. Learn Cloud Native Technology
    クラウドネイティブ関連技術は、社内や仕事を通して学べる範囲を超えてます!!
    ● 会社の上司が、こうした新技術を包括的に
    教えてくれますか?
    ● クラウドネイティブにおける
    DevOps,IoT,Machine Learningなど、多岐
    にわたる分野を教えられる人はいますか?
    ● 「できます、やります、頑張ります!」
    に限界がありませんか?

    View Slide

  33. Learn Cloud Native Technology
    実際の声
    “社内に一人でも最新の技術をキャッチアップして、実践して、反映
    できる人がいれば良いのですが、現状のIT企業、特に中小企業や最
    新技術とは縁遠い部署などでは、最新技術のキャッチアップや技術
    取得、社内育成において困難な状況にあります。”

    View Slide

  34. Learn Cloud Native Technology
    コミュニティがエンジニアの成長のための大事な場所に
    クラウドネイティブ時代の様々な技術を学ぶために社外へ出て行
    き、情報収集、情報発信、情報共有を実践してスキルアップや社内
    にフィードバックして育成を計る。
    ● 国内外カンファレンス
    ● ミートアップ
    ● 勉強会/もくもく会
    ● セミナー/トレーニング
    ● コミュニティ運営
    ● 技術書籍
    ● Web情報/トレーニング
    ● コントリビュート/Slack
    ● 技術ブログ/執筆
    ● SNS
    イベントへの参加 情報収集、発信、共有

    View Slide

  35. Learn Cloud Native Technology
    Cloud Native Technology’s Community
    #k8sjp #dockertokyo
    #rancherjp #paasjp
    #cndjp
    #k8sinternal
    #k8snovice
    #cloudnativejp
    #envoytokyo
    #prometheustokyo #japanrook #openshiftjp

    View Slide

  36. Learn Cloud Native Technology
    参加者のメリット
    ● 最新技術、事例等のキャッチアップ
    ● 人とのつながり
    ● 社内フィードバックからの育成
    参加者のデメリット
    ● レベルが高すぎて、ついていけない

    View Slide

  37. Learn Cloud Native Technology
    一部の声
    “最新の技術をどんどん取り入れて、実践している人達の話は参考にな
    りますが、レベルが高くてついていけない。結局何から始めてよいのか
    分からない。”
    “入門者向けのハンズオン勉強会は、入りやすく、有識者に質問や相談
    することができるので非常にありがたい。自分のスキルアップだけでな
    く、社内へのフィードバック、育成への良いきっかけとなる。”

    View Slide

  38. Learn Cloud Native Technology
    Docker 入門ハンズオン勉強会
    札幌、東京、名古屋、
    大阪、京都、神戸、
    広島、岡山、福岡、沖縄
    全29回 1年 約400人 無料
    #kujiraya

    View Slide

  39. Learn Cloud Native Technology
    心の奥底にある声
    “できる人に教わりたい、
    学びたい、一緒にやりたい”

    View Slide

  40. Teach Cloud Native Technology

    View Slide

  41. Teach Cloud Native Technology
    学んで身に着けた技術を
    どう教えるか、どう教えてきたか?

    View Slide

  42. Teach Cloud Native Technology
    もちろん、
    教えることで学ぶこともあります

    View Slide

  43. Teach Cloud Native Technology
    技術面だけではなく、
    教え方も考えなければならない

    View Slide

  44. Teach Cloud Native Technology
    伝えるから教える

    View Slide

  45. Teach Cloud Native Technology
    座学とハンズオン

    View Slide

  46. Teach Cloud Native Technology
    1. 主催者がPC、環境、教材もすべて準備
    a. 受講者にとっては良いが、主催者としては準備労力とコストが発生
    2. 受講者にPCも環境セットアップも準備してもらう(教材は主催者)
    a. 主催者にとって準備労力やコストは抑えられるが、受講者のPC環境差異に
    よるトラブル率が高まる
    b. 受講者としては準備労力とコストが発生
    ハンズオン環境ってどうしてます?

    View Slide

  47. Teach Cloud Native Technology
    1. 受講者にクラウド(有料/無料)のアカウントを準備してもらう
    a. ノートPC(Win/Mac不問)にブラウザだけで、環境差異のトラブルが生じにくい
    b. 受講者の準備作業はクラウドのアカウント作成
    c. 主催者の準備労力とコストを削減
    d. クラウドベースの教材にすることで、受講後も同じ環境で復習できる
    2. Google Cloud Platform(GCP)、Microsoft AzureのCloud Shellが便利
    a. 受講者の事前準備におけるツールのインストールが不要になる
    b. 全てコマンド操作に集約できる
    ハンズオン環境はクラウド利用

    View Slide

  48. Teach Cloud Native Technology
    1. スライド
    a. 図を多く、文字少なめで簡潔が理想!
    b. コマンド結果を載せる場合は、説明が必要な場合に!
    2. ハンズオン用テキスト
    a. 手打ちではオペミスによる誤作動率があがります
    b. 復習の利便性向上
    c. コピー&ペースト用のテキストとコマンド結果表示も掲載しておくと良い
    d. 「クリップボードにコピー」ボタンを用意をオススメ!
    e. どこで?⇒GitHub、GitLab、Qiita、ブログサービスなど
    教材はどうしてます?

    View Slide

  49. Teach Cloud Native Technology
    1. 座学とハンズオンの組み合わせ
    2. ハンズオンのパターン
    a. 受講者と一緒に行う
    b. 一定時間を設けて受講者に実習、実習後に解説
    3. ハンズオンの前に必ず全体説明
    4. ハンズオン中に何をやっているか見失わないようにする
    トレーニングの流れはどうしてます?

    View Slide

  50. Teach Cloud Native Technology
    初級講座で
    Docker/Kubernetesのつまずくポイント

    View Slide

  51. Teach Cloud Native Technology
    1. 仮想マシンとコンテナの違い
    2. 仮想マシンイメージとコンテナイメージ(イメージとコンテナ含む)の違い
    3. DockerとContainerRuntimeの関係性
    4. Kubernetesってそもそも何?
    5. コンテナアプリケーション開発の全体像って?
    Q&Aでもよく質問されます

    View Slide

  52. Teach Cloud Native Technology
    仮想マシンとコンテナの違い
    Virtual Machine
    Hypervisor
    Hardware
    Kernel
    Library
    Application
    Virtual Machine
    Kernel
    Library
    Application
    Conainer
    Container Engine
    Hardware
    Kernel
    Library
    Application
    Container
    Library
    Application
    各仮想マシンでカーネルが稼働、隔離性が高いが、
    起動が遅く(数分)オーバヘッドが大きい
    カーネルを共有しているため、隔離性は低いが、
    起動が高速(数秒)でオーバヘッドが小さい
    仮想マシンは個別のカーネル利用、コンテナはホストのカーネルを共有

    View Slide

  53. Virtual Machine
    Teach Cloud Native Technology
    仮想マシンイメージとコンテナイメージの違い
    Application
    OS/Library
    Hypervisor
    Hardware
    仮想マシンイメージがベンダー製品特有
    の形式で容量も重く可搬性も低い
    仮想マシンイメージ

    View Slide

  54. Teach Cloud Native Technology
    コンテナイメージ
    1.ビルド(Build)
    OS/Library
    Application
    OS/Library
    Container Image
    Build
    ● OS/ライブラリとアプリケーションをパッケージイメージ化
    ● イメージはこれまでの仮想マシンイメージに比べるとはるかに軽いのでポータビリティ性が高い
    2.シップ(Ship)
    ● イメージをレジストリに保存して共有
    OS/Library
    Container Image
    OS/Library
    Image Registry
    OS/Library
    Push Pull
    Image Share/Ship

    View Slide

  55. Teach Cloud Native Technology
    3.ラン(Run)
    OS/Library
    Container Image
    ● イメージを基にコンテナを起動します。
    Run
    OS/Library
    Container
    OS/Library
    Container
    コンテナープラットフォーム上でイメージからコンテナを起動して、アプリケーションを稼働させます。
    イメージもプラットフォームも特定ベンダー技術に依存しないため、ベンダーロックインもありません。
    Container Platform

    View Slide

  56. Teach Cloud Native Technology
    DockerとContainer Runtimeの関係性
    コンテナを実際に作るのはDockerではなく、Container Runtimeです。
    Docker
    Docker Client
    containerd
    runC
    Linux
    cgroups Namespaces
    Union
    Filesystem
    Network
    Low-level
    Container Runtime
    High-level
    Container Runtime
    OCI(Open Container Initiative)
    CRI(Container Runtime Interface)
    kubelet
    Container

    View Slide

  57. Teach Cloud Native Technology
    docker
    CLI
    dockerd Containerd runC
    Low-level
    Container Runtime
    High-level
    Container Runtime
    Docker
    Engine
    Client Side Server Side
    構成要素 説明
    docker CLI コマンドラインインターフェースとしてDockerコマンドを提供します。
    dockerd イメージ、ファイルシステム、ネットワークの管理、REST APIの提供するDockerの本体。Mobyとも呼ばれています。
    containerd CNCF(CloudNativeComputingFoundation)にホストされているcontainerdは、Dockerのハイレベルコンテナーランタイムとしてコンテナーのラ
    イフサイクルを担います。KubernetesではCRI(Container Runtime Interface)プラグインに対応してPod用のNICやベースとなるpauseコンテ
    ナーを作成します。
    runC OCI(Open Container Initiative)にホストされているrunCは、Dockerのローレベルコンテナーランタイムとしてシステムリソースの隔離で
    namespace、制限でcgroups、セキュリティでAppArmor・SELinux・seccomp等、ホストカーネルの機能を利用してコンテナーを作成します。

    View Slide

  58. Teach Cloud Native Technology
    そもそもKubernetesとは?
    BareMetal
    Virtual Machine
    Kubernetesは分散処理基盤
    Kubernetes
    Container

    View Slide

  59. Image Repositry
    Teach Cloud Native Technology
    コンテナアプリケーション開発の全体像って?
    OS/Library OS/Library OS/Library
    Container
    OS/Library
    Container
    Container Platform
    BareMetal
    Virtual
    Machine
    IaaS
    Developer
    Code
    Repository
    CI/CD
    Pipeline
    Build Ship
    Run
    コンテナープラットフォーム
    へのデプロイ
    CIパイプラインによる
    テスト、ビルド、イメージプッシュ
    イメージ共有
    コンテナーの可搬性(Portability)とスピード(Agility)を持ち合わせ、
    品質および生産性の高いアプリケーション開発を実現
    Infrastructure
    Engineer
    Operator
    Code
    Dockerfile
    manifest

    View Slide

  60. Image Repositry
    Teach Cloud Native Technology
    OS/Library OS/Library OS/Library
    Container
    OS/Library
    Container
    Container Platform
    BareMetal
    Virtual
    Machine
    IaaS
    Developer
    Code
    Repository
    CI/CD
    Pipeline
    Build
    Ship
    Run
    コンテナープラットフォーム
    へのデプロイ
    CIパイプラインによる
    テスト、ビルド、イメージプッシュ
    イメージ共有
    傾向として、CDをGitで管理するGitOps手法が取り入られ始めています。
    Infrastructure
    Engineer
    Operator
    Config
    Repository
    Pull
    Request
    GitOps Operator
    CD
    Change
    manifest
    Change
    code
    manifest
    Code
    Dockerfile

    View Slide

  61. Summary

    View Slide

  62. Teach Cloud Native Technology
    学ぶと教えるは表裏一体、
    継続することが大切です!

    View Slide

  63. Information

    View Slide

  64. CNBF Next Online Meetup
    2020.11.11(Wed)
    詳細は近日公開!!
    https://cnbfmeetup.connpass.com/

    View Slide

  65. Thank you !!

    View Slide