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

どちらかだけじゃもったいないかも? ECSとEKSを適材適所で併用するメリット、運用課題とそれ...

どちらかだけじゃもったいないかも? ECSとEKSを適材適所で併用するメリット、運用課題とそれらの対応について

Hiroki Takatsuka

February 28, 2025
Tweet

More Decks by Hiroki Takatsuka

Other Decks in Technology

Transcript

  1. 1. はじめに 2. ECSとEKSの一般的な話 3. TROCCO®について 4. TROCCO® on ECS

    “and” EKS 5. まとめ 6. EKS Auto Mode 目次 ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a 2
  2. 髙塚広貴 (@tk3fftk) 株式会社primeNumber プロダクト開発本部 Head of SRE • ヤフー株式会社 (2016

    ~ 2022) ◦ CI/CDプラットフォーム Screwdriver.cd SREチームの スクラムマスターやEM • 株式会社primeNumber (2022 ~ ) ◦ TROCCO®/COMETA®のSRE, EM, たまにSecurity • 猫🐈 ◦ アルくん (アビシニアン ♂ 4歳) 自己紹介 ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a 3
  3. ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a 4 今日の発表で伝えたいこと • ワークロードによってはECS “and” EKSの選択肢もありかも? ◦

    絶対良い、ではなくあくまで選択肢の提示🚀 ▪ ECS “and” EKSでサービス提供しているTROCCO®の運用経験を通じて説明します • ECS “and” EKSのアーキテクチャについて「アーキテクチャConference 2024」 における弊社CTO室中根さんの発表の一部を深堀りする connecting the dots ◦ PaaSとSaaSの境目で信頼性と開発速度を両立する 〜TROCCO®のこれまでとこれから〜
  4. • 単純な構成で動かすなら運用管理はかなりシンプル • フルマネージド型のコンテナオーケストレーションサービス ◦ コンテナの配置・スケジューリングをAWSが完全に管理 ◦ ≒ 開発者はアプリケーション開発に集中できる •

    他AWSサービスとの統合が容易 ◦ Elastic Load BalancingやCloudWatchと連携し、自動スケーリングや監視 ◦ IAMによるきめ細かいアクセス制御やVPCとの統合でセキュリティを強化 • 複数のデプロイ先オプション ◦ Amazon EC2, AWS Fargate, ECS Anywhere [おさらい] Amazon Elastic Container Service (ECS) ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a 6
  5. • 拡張性が高くオープンソースのエコシステムも利用できるが、管理は複雑 • マネージド Kubernetes (k8s) サービス ◦ Control PlaneはAWSが完全管理

    ◦ インプレースアップデートに対応 ◦ k8s主要コンポーネントやAWSサービスとの連携のためのコンポーネントは EKSアドオンとして提供され、管理が容易 • 複数のデプロイ先オプション ◦ Amazon EC2, AWS Fargate, Hybrid Node, EKS Anywhere, Auto Mode… ※ EKSのロゴは ですがECS との差分がKだけなのでk8sのロゴ を使います [おさらい] Amazon Elastic Kubernetes Service (EKS) ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a 7
  6. ワークロードによっては、併用することで EKSの高い拡張性を享受しつつ学習コストや運用コストをカバーできるのでは? ECS ECS and EKS EKS 拡張性 低 高

    👍 高 👍 学習コスト 低 👍 中 高 運用コスト 低 👍 中 高 ECS “and” EKS は…? ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a10
  7. コアの価値提供したい部分をEKSに移行してスケーラビリティを高める ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a22 PaaSとSaaSの境目で信頼性と開発速度を両立する 〜TROCCO®のこれまでとこれから〜 より抜粋 スケールアウト スケールイン デプロイ

    Before (ECS) After (EKS) ECS Task数 = 同時実行可能数 SQSへの流量を見てスケールアウトするなど試行錯誤 起動に時間がかかる 実行中のジョブがノード上に存在すると スケールインできない Lambdaを使ったりと原始的な手法で試行錯誤 実行に長時間かかっているジョブがあると、 そのECSタスクをローリングアップデートできず デプロイが一向に完了しない Cluster Autoscalerにより Jobを立ち上げるための Nodeリソースがないとスケールアウト Nodeが空いているとスケールイン 実行中のJobがある場合にも完了を待つ イメージタグを変えるだけでデプロイ可能に 実行中のJobがある場合にも影響を受けない
  8. • EKS Version更新はジョブ基盤のことだけ考えればOK ◦ EKSカナリアリリースの仕組みを作った際にもAPI/UIのことは考慮不要だった • クラスタのスケーリングもジョブ基盤としてのリソースだけ見積もればよい • 運用ツールやちょっと動かしたい系も載せちゃえ、とならない ◦

    3. のネットワーク分離の話も関連 ECSとEKSを併用することで、EKSはコアの価値提供(ジョブ基盤)に特化できる ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a29 1. ジョブ基盤という単一の目的を持つEKSクラスタになる
  9. • EKSに統一していた場合、ノイジーネイバーが発生する可能性 ◦ 例: APIに高負荷がかかってスケールしたため、ジョブの起動が遅れる ◦ 例: 大量にジョブが動いていたため、APIがスケールできずエラー/デグレ発生 • ECS側にFargate

    Spotを入れてtaskが中断されても実行中のジョブは影響なし ECSとEKSを併用することで、EKSはコアの価値提供(ジョブ基盤)に特化できる ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a30 2. ジョブ基盤の負荷がAPI/UIに直接的な影響を与えない (逆も同様)
  10. ECSは運用コストもかなり低い ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a35 • Platform Versionのアップグレードも気づけば終わっているレベル • おかね的にもEKSと比べると安いので、スケーリングは多少大味でも良い ◦

    TROCCO®ではリソース利用率ベースのオートスケールのみ ◦ オートスケールを作り込むコスト < 常時task数を増やす が合理的な場合もある • ⚠ ただし、複雑なことをやろうとするとECSも運用コストが高くなってくる
  11. • TROCCO®ではSSM Parameter StoreをECSとEKSから参照している • それぞれクレデンシャルの更新反映タイミングが違う ◦ ECS: Update Service時に更新

    ◦ EKS: External Secrets OperatorでSecretsを定期更新、Pod再起動時に反映 👉 頻繁に更新するものではないため、ドキュメントを用意して運用でカバー ECSとEKS間のクレデンシャルの更新反映タイミングを意識する必要がある ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a38
  12. • 2024年12月1日 (AWS re:Invent 2024) にリリースされたEKSの新機能 • つらいインフラ管理のほとんどが自動化される ◦ EKSバージョン更新、ノードスケーリング、EKSアドオン管理など

    • Karpenterがデフォルトで含まれており、スケーリングはKarpenterベース ◦ KarpenterではEC2 APIを直接実行するためインスタンスの起動が高速 ◦ Karpenter自体もAuto Modeの管理対象なので管理不要 ▪ ユーザーはKarpenter設定用のマニフェストを書いてapplyするだけ ◦ ⚠ 何もPodが動いていなければ、0台までスケールインする • ⚠ Auto Modeで起動されたEC2インスタンスに対して追加コスト(12%)が発 生 • ⚠ EC2インスタンスのAMI指定やSSH接続等はできない [おさらい] EKS Auto Mode ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a44
  13. EKS Auto Mode はTROCCO®的にはこれからに期待🚀 ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_a46 TROCCO®のジョブ基盤には(まだ)不向き • AMIが指定できない

    👉 転送ジョブ用コンテナイメージを含むゴールデンAMIが指定不可 • 自動でノードがアップデートされる 👉 転送ジョブは途中で止めてしまうと問題があるが、強制終了する可能性 • 最低台数0台までスケールイン 👉 転送ジョブのリソース要求が始まる前にノードを用意しておきたい ▪ 常にover provisioningしておけばいいが、認知負荷↑ • 通常クラスタよりおねだんが高い💸 👉 ECS on Fargate部分を移行するにも too much
  14. 48 We Are Hiring ! primeNumberではプロダクトづくりに携わるさまざまな職種を絶賛募集しております! まずは、お気軽にカジュアル面談からでも! (ボドゲカジュ面もあるよ🎲) 募集職種 ・Product

    SRE ・Corporate SRE ・ソフトウェアエンジニア ・QAエンジニア ・エンジニアリングマネージャー ・PdM/PMM ・テクニカルライター ・デザイナー 採用サイト