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

[JAWS-UG金沢支部×コンテナ支部合同企画]コンテナとは何か

 [JAWS-UG金沢支部×コンテナ支部合同企画]コンテナとは何か

2024年11月2日に開催された JAWS-UG 金沢支部×コンテナ支部合同企画 物理コンテナ見ながらコンテナ勉強会 にて発表させて頂いた「コンテナとは何か?」の発表資料です

https://jawsug-kanazawa.connpass.com/event/325803/

Toshihiro Furuno

November 02, 2024
Tweet

More Decks by Toshihiro Furuno

Other Decks in Technology

Transcript

  1. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナとは何か J A W S - U G ⾦ 沢 ⽀ 部 、 コ ン テ ナ ⽀ 部 合 同 企 画 Toshihiro Furuno Sr. Cloud Support Engineer AWS
  2. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • 古野 俊広 • クラウドサポートエンジニア • SME(Subject Matter Expert) § Amazon Elastic Container Service(Amazon ECS) § AWS CodeDeploy • 趣味 § 8歳、4歳の⼦供と遊ぶこと • ⾦沢との関わり § ⾦沢の⼤学に⼊学し、4年間⾦沢で ⽣活 2 ⾃⼰紹介
  3. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. アジェンダ • なぜコンテナを利⽤するのか § コンテナとは § コンテナのメリット • コンテナ化によるメリットを享受するためのアプリケーション設計 § The Twelve Factors App/Beyond the Twelve Factor App – QA 形式でAWS サポートとして運⽤が関わる部分の項⽬を3点ほどピックアップ 3
  4. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. なぜコンテナを利⽤するのか 4
  5. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. アプリケーション実⾏に必要なコンポーネント 5 ランタイム/エンジン アプリケーションコード 依存ライブラリ/パッケージ 設定
  6. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. アプリケーションは様々な環境で実⾏される 6 ローカルラップトップ ステージング/QA 本番 オンプレミス
  7. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ローカルでは動いたが、本番では動かない? 7 ローカルラップトップ ステージング/QA 本番 オンプレミス v3.0 v3.1 v2.7 v3.0 🔥
  8. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナとは 8 ランタイム / エンジン 依存ライブラリ / パッケージ アプリケーションコード コンテナランタイム コンテナホスト OS ライブラリ コンテナイメージ アプリケーション OS ライブラリ コンテナイメージ アプリケーション OS ライブラリ コンテナイメージ アプリケーション
  9. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナによる可搬性 § コンテナランタイムさえ動いていればどこでも動く 9 コンテナランタイム OS ライブラリ アプリケーション コンテナ 開発者ラップトップ コンテナランタイム OS ライブラリ アプリケーション コンテナ 開発環境 コンテナランタイム OS ライブラリ アプリケーション コンテナ 検証環境 コンテナランタイム OS ライブラリ アプリケーション コンテナ 本番環境
  10. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナ化によるメリット § コンテナ化のメリットは可搬性の⾼さ – ライブラリやランタイム、アプリケーションコードなど技術的な環境がパッケージングされて おり、様々な環境で実⾏可能 – コンテナにおける可搬性の⾼さ、及び可搬性を前提としたコンテナオーケストレーターの活⽤ により、コンテナ化のメリットを享受できる 10 効率的なオペレーション スケーラビリティ 開発へのフォーカス
  11. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナ化のメリット-効率的なオペレーション § 効率的なオペレーション – コンテナランタイムがあればいいので、迅速に環境構築ができる – コンテナ内のアプリケーションに関わらず、⼀貫性のある運⽤が可能 11 コンテナランタイム 開発者ラップトップ コンテナイメージ コンテナイメージ コンテナイメージ コンテナランタイム 開発環境 コンテナランタイム 検証環境 コンテナランタイム 本番環境
  12. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナ化のメリット-スケーラビリティ § スケーラビリティ – 可搬性が⾼いためスケーリングが容易 – コンテナオーケストレーターによるコンテナの⾃動⼊れ替え(オートヒーリング) 12 コンテナランタイム コンテナホスト コンテナ コンテナ コンテナホスト コンテナランタイム コンテナホスト コンテナ コンテナ コンテナ スケールアウト リプレース コンテナランタイム
  13. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナ化のメリット-開発へのフォーカス § 開発へのフォーカス – ⼀貫性を持つ環境の利⽤、テストやデプロイなどの⾃動化により、開発者がアプリケーション の開発にフォーカスできる 13 Listen Ideas  Experiment Innovation Flywheel  
  14. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. まとめ:コンテナ化のメリット これらのメリットを享受するためには、可搬性を 考慮したアプリケーション及びコンテナの設計・実装が必要 14 効率的なオペレーション スケーラビリティ 開発へのフォーカス
  15. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナ化によるメリット を享受するための アプリケーション設計 15
  16. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナのメリットを享受するためには • 可搬性を考慮したアプリケーションおよびコンテナの設計・実装が必要 • 具体的にどうすれば良いか分らない § The Twelve Factors App/Beyond the Twelve Factor App(12FA)を活⽤ 16
  17. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. The Twelve Factor App • コンテナにフィットする開発・運⽤指針 – https://12factor.net.jp • Amazon ECS と AWS Fargate を利⽤した Twelve-Factor Apps の開発 § https://aws.amazon.com/jp/blogs/news/developing-twelve-factor-apps- using-amazon-ecs-and-aws-fargate/ • AWS アーキテクチャで学ぶ The Twelve Factors App 本格⼊⾨ § https://aws.amazon.com/jp/builders-flash/202208/introductions-twelve- factors-app/ 17
  18. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. The Twelve Factor App 18
  19. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Beyond The Twelve Factor App • Beyond The Twelve Factor App は Pivotal 社のエンジニアによって2016頃に提唱 § 12種類のプラクティスの更新 § 新しく3種類のプラクティスを追加 § https://tanzu.vmware.com/content/blog/beyond-the-twelve-factor-app 19
  20. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Beyond The Twelve Factor App 20
  21. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 運⽤が関連する具体例 • QA 形式で AWS サポートが関わることが多い運⽤に関連するいくつかの項⽬につ いてピックアップしてご紹介 § 並⾏性/廃棄容易性 § ログ § 設定 21
  22. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Q.コンテナを起動するホストが 決まっています。どのようにす れば指定できますか 22
  23. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナが起動するホストを指定したい • 12FA 観点: 廃棄容易性/並⾏性 • 問題点 – メンテナンスによるホストの⼊れ替え、デプロイ時に考慮すべき事項が増えて運⽤の負荷 が⾼くなる • コンテナ A:コンテナホスト A で起動する必要がある • コンテナ B: コンテナホスト B で起動する必要がある 23 コンテナ A コンテナホスト A コンテナホスト B コンテナ B コンテナ B コンテナ A
  24. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナが起動するホストを指定したい • 12FA 観点: 廃棄容易性/並⾏性 • 問題点 – メンテナンスによるホストの⼊れ替え、デプロイ時に考慮すべき事項が増えて運⽤の負荷 が⾼くなる • コンテナホストB がメンテナンスの場合、コンテナホスト B-2 の起動が必要など特別なオペレー ションが必要となり、複雑化 24 コンテナ A コンテナホスト A コンテナ B コンテナホスト B コンテナ B コンテナ A コンテナホスト B-2 コンテナ B メンテナンス コンテナ A 新規起動が必要
  25. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナが起動するホストを指定したい • AWS サポート観点 § 技術的には可能 § ⼀⽅、なぜ特定のホストで起動する必要があるのか、またその制約が本当に必 要なものであるかなどは確認が必要 § AWS サポートでは1問1答ではなく、必要な場合にはお客様に追加でヒアリング させて頂き、本来の問題解決などができるように努めています 25
  26. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナが起動するホストを指定したい • Answer § Amazon ECS や Amazon Elastic Kuberneters Service(Amazon EKS) で設定可能 § ⼀⽅、どのホストでも動作するように設計し、運⽤負荷を下げることができる 可能性がある – 例: インターネットへリクエストする際の IP を固定化する必要がある • NAT Gateway を利⽤する • コンテナホストとコンテナが密結合していない状態となり、管理が容易 26 コンテナ A コンテナホスト A コンテナ B コンテナ A コンテナホスト B コンテナ B NAT Gateway AWS Cloud Internet Gateway
  27. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. [補⾜]技術的なお問い合わせに対する ガイドライン • AWS サポートでは、お客様の課題の解決を効率的かつ迅速に⾏いたいと常に考 えています。ケース起票時に、ご質問の背景や詳細を書いて頂くことでサポート 側でもお客様の詳細は把握した上で回答が可能となります • 早期解決に役⽴つポイントは以下にガイドラインとして公開しているのでぜひご 活⽤ください § https://aws.amazon.com/jp/premiumsupport/tech-support-guidelines/ 27
  28. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Q.既存アプリケーションではロ グをファイルに出⼒しています 。このアプリケーションをこの ままコンテナ化することを検討 しています 28
  29. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナアプリケーションのログ • [補⾜]AWS サポートではトラブルシューティングだけでなく、HowTo やお客様 がやりたいことを実現するための⽅法などについて調査を⾏うことなども可能 • 12FA 観点: ログ ログをイベントストリームとして扱う • 問題点 – ファイルに出⼒する場合、外部ストレージへの書き込みなど永続化できる仕組みを利⽤しない 場合、コンテナ終了後にログが確認できない – ログ出⼒先を変える場合の負荷が⾼い可能性がある 29 コンテナ コンテナホスト アプリケーションログ
  30. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナアプリケーションのログ • Answer § コンテナではログは STDOUT(標準出⼒)/STDERR(標準エラー出⼒)に書き込むよ うにする § ログドライバーの設定を変えることでログ出⼒先を変えることが可能となるた め、運⽤負荷を減らすことができる可能性がある § 例えば既存でファイル書き込みを⾏っている場合、下記例のようにシンボリッ クリンクなどを使う⽅法なども可能 – 参考: https://docs.docker.com/engine/logging/ 30
  31. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. [補⾜]re:Post 情報センター • AWS サポートでは re:Post 情報センターというよくある問題の解決⽅法などが記 載されたページがあります • 2024年10⽉現在で Amazon ECS で90以上、Amazon EKS で110以上の⽇本語記 事があります 31
  32. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. [補⾜]AWS SAWによるトラブルシューティング • AWS Support Automation Workflows (SAW) を使うことでトラブルシューティン グや運⽤の⾃動化ができます 32
  33. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Q.検証、本番環境毎に接続する DB が異なっており、それぞれ の環境のコンテナ作成を検討し ています 33
  34. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 環境毎のコンテナ設定 • 12FA 観点:設定 設定を環境変数に格納する • 問題点 – 検証・本番でコンテナのビルドタイミングが異なり、イメージの差分(SHAが異なる)が発⽣ • 本番で発⽣する問題を事前に検証環境で発⾒出来ない可能性がある • 本番で発⽣した問題再現をイメージ差異によって確認できない可能性がある 34 コンテナランタイム OS ライブラリ アプリケーション 本番⽤コンテナ 本番環境 コンテナランタイム OS ライブラリ アプリケーション 検証⽤コンテナ 検証環境
  35. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 環境毎のコンテナ設定 • Answer § DB 接続先などの設定情報は環境変数を参照し、同じイメージを使う – 検証・本番環境で利⽤するイメージは同じものを使うことでイメージの差異をなくす – 運⽤の際に⼿動での設定はミスが起きる可能性があるため、例えば環境毎に CICD 環境を構築 し、⾃動で環境変数の設定を⾏うようにする 35 本番環境パイプライン コンテナランタイム コンテナ 本番環境 本番⽤ DB デプロイ 環境変数 DB_HOST:<PROD_DB_HOST> 運⽤担当
  36. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. まとめ • なぜコンテナを利⽤するのか § コンテナとは – アプリケーションの依存関係をパッケージングしたもの § コンテナ化のメリット – 可搬性の⾼さ、及びそれを前提としたコンテナオーケストレータ • コンテナ化によるメリットを享受するためのアプリケーション設計 § The Twelve Factors App/Beyond the Twelve Factor App – 開発・運⽤を踏まえた設計を⾏うことがポイント 37