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

[Amazon EKS on AWS Fargate] スタートアップの "次の3年" を支えるためのインフラ技術 / AWS DEV DAY EKS ON FARGATE

[Amazon EKS on AWS Fargate] スタートアップの "次の3年" を支えるためのインフラ技術 / AWS DEV DAY EKS ON FARGATE

AWS DEV DAY 2022 登壇資料です。

プロダクトのローンチから2年が経った私たちのチームには、今後より大きくスケールし、より早く改善を続けるためのアーキテクチャが必要になっていました。そこで私たちは、 ’次の3年’ の事業の成長を支えるために、Amazon EKS を軸としながらサーバーレス技術を積極的に取り入れていく、という方針を採ることとしました。

本セッションでは、EKS on Fargate を中心とした モバイルを含めたアプリケーションのバックエンドシステムを構築・運用するための勘所についてのナレッジを共有します。

https://github.com/aws-events/aws-dev-day-online-japan-2022-cfp/issues/45

Takahiro Ikeuchi

November 10, 2022
Tweet

More Decks by Takahiro Ikeuchi

Other Decks in Technology

Transcript

  1. Nov 9, 2022 C - 1 [Amazon EKS on AWS

    Fargate] スタートアップの "次の3年" を支えるためのインフラ技術 池内 孝啓 - Takahiro Ikeuchi Awarefy CTO
  2. 技術選定 = 投資であり、事業戦略 技術選定は将来に向けて 行われるべき 採用 生産性 コスト 楽しさ 将来性

    安定性 キャリア ブランド どこに投資するかという 意志決定もある トレンド 好み
  3. Amazon Elastic Kubernetes Service (EKS) リリースまでの最短ルートを目指すなら Amazon Elastic Container Service

    (Amazon ECS) も 選択肢に 技術投資をするなら Kubernetes と判断 AWS CDK との組み合わせで構築コストを最小化(後述) 選定の理由
  4. AWS Fargate - (Amazon EKS on AWS Fargate) Amazon EKS

    において Amazon Elastic Compute Cloud (Amazon EC2) を運用しないための唯一の選択肢 サーバーレスの継続 選定の理由 40
  5. AWS Cloud Development Kit (CDK) AWS CloudFormation を管理していく戦略のひとつとして 途中から Infrastructure

    as Code の大変さを被らないため に最初から投入していく TypeScript バージョンを採用 選定の理由
  6. Amazon Elastic Container Service (Amazon ECS) もじゅうぶん巨人ですけどね 少人数のチームが(マイクロサービス化もしていないのに) Amazon EKS

    を採用する理由 巨人( = k8s エコシステム)の肩に乗る 一度構築できてしまえば運用は大変ではない 構築は Amazon EKS Blueprints for CDK がオススメ(次頁)
  7. とにかく依存関係が多い Amazon Virtual Private Cloud (Amazon VPC) Subnet groups, AWS

    Security Groups etc... 構築に20分程度はかかり試行錯誤が大変 AWS CDK + Amazon EKS つまづきポイント
  8. AWS Cloud Development Kit (CDK) https://aws-quickstart.github.io/cdk-eks-blueprints/ Well-Architected な Amazon EKS

    クラスターを構築するための 秘伝(?)のレシピが搭載されたライブラリ群
  9. Infrastructure as Code / GitOps Open ID Connect で GitHub

    上の 特定リポジトリからのCDK実行を許可 https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security- hardening-with-openid-connect
  10. AWS の構成管理を「コード」で行える https://github.com/aws/aws-cdk AWS Cloud Development Kit (CDK) Amazon EKS

    Blueprints その後 Amazon EKS のクラスタ構築後は、 Kubernetes Manifest を書こう AWS の関心事が関係する Manifest は 仕様やバージョンに特に注意して進める
  11. AWS の構成管理を「コード」で行える https://github.com/aws/aws-cdk AWS Cloud Development Kit (CDK) gRPC を対象とする

    Web アプリを運用する場合、下記3つに注意 ALB 関連のオプションを gRPC 向けの内容にする ALB からのヘルスチェックにアプリ側で応答する Pod(コンテナ)内のヘルスチェックに対応する
  12. AWS の構成管理を「コード」で行える https://github.com/aws/aws-cdk AWS Cloud Development Kit (CDK) Amazon EKS

    on AWS Fargate 注意点 Daemon Set 未対応 シークレット管理の選択肢が限られる Sidecar は対応してます AWS Graviton プロセッサ未対応 対応に期待
  13. AWS の構成管理を「コード」で行える https://github.com/aws/aws-cdk AWS Cloud Development Kit (CDK) Amazon EKS

    とシークレット管理 スマートな解決策は現状提示されていない https://github.com/aws/secrets-store-csi-driver-provider-aws https://github.com/external-secrets/external-secrets Secrets Store CSI Driver が有力だが、Daemon Set の使えな い AWS Farget では利用できない External Secrets Operator を採用 65
  14. AWS の構成管理を「コード」で行える https://github.com/aws/aws-cdk AWS Cloud Development Kit (CDK) RDB マイグレーションどこでやろう問題

    シークレット管理と並ぶ運用課題2大あるあるの1つ Pod の起動前に DBマイグレーション こっちも起動したから DBマイグレーション Replica set : 2
  15. AWS の構成管理を「コード」で行える https://github.com/aws/aws-cdk AWS Cloud Development Kit (CDK) Amazon EKS

    とDB マイグレーション Argo CD を使おう Manifest 運用を GitOps で遂行するための便利ツール https://argoproj.github.io/
  16. Infrastructure as Code / Git Ops GitHub 上の差分を検知して Manifest を適用(SYNC)

    SYNC の前後に HOOK を仕込むことが できる この仕組みを利用して、 DB マイグレーションを実行する 70