Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

© 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 ⾃⼰紹介

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

© 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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

© 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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

© 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 新規起動が必要

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

© 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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

© 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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. まとめ 36

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Thank you! 38