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

ECS Fargate build on AWS CodeBuild

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Yuto Komai Yuto Komai
November 15, 2018

ECS Fargate build on AWS CodeBuild

2018/11/15 Amazon Game TechNight #8 で発表した資料です。

オレ的最強ECS & Fargate build環境 on AWS
- CodeBuild 基本編
- CodeBuildを使った実際のパイプライン紹介
- CodeBuild 応用編

https://amazongametechnight08.splashthat.com/

キーワード
#AWS #docker #CodeBuild #CodePipeline #ECS #Fargate #Jenkins #Deploy #ContinuousDelivery

Avatar for Yuto Komai

Yuto Komai

November 15, 2018
Tweet

More Decks by Yuto Komai

Other Decks in Technology

Transcript

  1. 自己紹介 氏名 / 経歴 - 駒井祐人 @e__koma - NTT DATA

    - ミッションクリティカルシステム 設計構築 - Akatsuki Inc. - Store上位タイトル開発/運用経験1年半 - リリース直前の負荷対策4タイトル 座右の銘 - あらゆる人間関係の衝突はカレーの欠如によるものだ # サーバサイド/インフラ # VTuber / xRTech # カレー # ハッカソン/イベント運営
  2. CodeBuildのうれしみ - サーバレス + スケーラビリティ - AWS各種サービスとの連携 - SSMパラメータストア -

    秘匿情報の管理が超楽に - 従量課金 - VPC内で実行が可能 - CodeBuildからEC2/RDSアクセス可能 - 豊富なビルド環境 - さまざまな言語サポート - カスタムDokcer Imageも可能 - CloudFormationで管理可能 - 環境を作れば、ビルド環境も一緒に作れる
  3. すなわち (1章まとめ) docker build on Jenkinsのつらい部分… Jenkins CodeBuild マシンスペック そこそこ必要

    small / medium / largeの3タイプ (スケールするためsmallで十分満たす) 同時実行数 master並列数を超えると詰ま る or Slave 上限申請したら気にすることがなくなる。 (デフォルト20) メンテナンス つらい メンテレス セキュリティ 秘匿情報がもりもり SSMパラメータストアとの連携 コスト 起動している時間 従量課金
  4. すなわち (1章まとめ) docker build on Jenkinsのつらい部分… 解決!! Jenkins CodeBuild マシンスペック

    そこそこ必要 small / medium / largeの3タイプ (スケールするためsmallで十分満たす) 同時実行数 master並列数を超えると詰ま る or Slave 上限申請したら気にすることがなくなる。 (デフォルト20) メンテナンス つらい メンテレス セキュリティ 秘匿情報がもりもり SSMパラメータストアとの連携 コスト 起動している時間 従量課金
  5. そもそもCodePipelineとは? AWSが提供するフルマネージドパイプラインサービス - Source / Build / StagingのステップをGUI/CLIでカスタム可能 - AWS

    Integrationが豊富 - CodeDeploy - ECSデプロイ - CloudFormation - Lambda - GitHubのpush hookによるCI/CD - 手動承認も可能
  6. なぜCodePipelineを使わないのか? ゲーム開発の現場では - 複数環境 - dev/staging/feature/QA …etc - 複数条件 -

    ゲームマスタのversion - アセットのversion - これらを非エンジニアがデプロイ
  7. Jenkins Blue Ocean シンプルかつ美しいJenkins UI - 非エンジニアでも分かりやすい - classic UIは過去の遺物

    - 弊社内ではTeenager風 Jenkins - step単位のログの見やすさ - CodeBuild Plugin - Jenkinsはビルド命令を投げるだけ - master 1nodeで並列数を山盛り上げれる - 構築はOfficial Docker Imageを起動するだけ - Pipeline as a CodeのGUI support
  8. このアーキテクチャを採用して幸せになったこと (2章まとめ) - インタフェースが直感的 - 誰でもボタンポチでデプロイ - 進捗が追える - スケーラビリティ

    - JenkinsはCodeBuildに命令しているだけなのでパワーが不要 - t3.smallサーバ1台で10環境ビルドでもマシンリソースすっかすか - コスト減 - 2018/10のビルド料金は $20 - 自動で構築できるビルド環境 - Pipeline as a Code - CloudFormation管理 - メンテレス
  9. その他 Docker 18.09 以降 (2018/11/08〜) をCodeBuildがsupportしてくれるとより一層夢が広 がる - multi stage

    buildの並列ビルド - 2倍高速化できるという事例も - cache mount - うまく活用して30倍以上高速化を実現した事例も 引用:https://medium.com/nttlabs
  10. 2.バッチ処理 メリット - ビルド済みのアプリケーションロジックを再利用できる - Lambdaでは実現しづらい。 - サーバレス - バッチサーバの必要がなくなりメンテレス

    - 従量課金 - 長時間バッチ、並列バッチも可能 デメリット - CodeBuildのプロビジョニングに30〜40秒程度、余計な時間がかかる
  11. 3.セキュリティ Role / IAMキーの権限は最小にしたい - Role - 必要な権限のみを付与する - IAMキー

    - 必要な権限のみを付与する - IP制限 IAMキーにはIP制限をかけることができる! (キー情報が漏洩する最悪の状況でもリスク低減)
  12. 3章まとめ - ビルド高速化 - BestPracticeに沿ったImage軽量化を - ビルドキャッシュはlayer cachingがオススメ - バッチ処理

    - CodeBuildはサーバレスバッチ環境にも使えて幸せ - セキュリティ - ECRはinternet経由する。 - IAMキーにはIP制限をかけ、CodeBuildが利用するNAT GatewayのEIPを許可しよう
  13. 全体まとめ 第1章:CodeBuild 基本編 - CodeBuildの特徴を紹介。サーバレスかつスケーラビリティなbuild環境 第2章:事例紹介 - Jenkins Blue Ocean

    + CodeBuild連携で 清く正しく美しく 第3章:CodeBuild 応用編 - サーバレスバッチでメンテレスの運用を