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

Fargate + Githubでお手軽CI/CD入門

384e4d8bab8ac2a5e6f64dab1300c491?s=47 glassmonenkey
September 10, 2019

Fargate + Githubでお手軽CI/CD入門

384e4d8bab8ac2a5e6f64dab1300c491?s=128

glassmonenkey

September 10, 2019
Tweet

Transcript

  1. Fargate + Github actionで お手軽CI/CD入門 ニュースメディア テクノロジーグループ 永野 峻輔

  2. 氏名 : 永野峻輔 所属:ニュースメディア部 テクノロージグループ 業務:エキサイトニュース(PHP, JS, Python) Elastic Search

    / Sparkクラスタの構築中 趣味 : ゲーム(グラブル) 漫画など
  3. https://www.excite.co.jp

  4. 今日の話す内容 - CI/CDとは - Github Action + Fargateの組み合わせのCI/CDができ たよって報告 ※

    Dockerなどのコンテナの話が出てきますが本筋からそれ るので解説はしません。
  5. 今日の話す内容 - CI/CDとは - Github Action + Fargateの組み合わせのCI/CDがで きたよって報告

  6. CI/CD 聞いたことありますか?

  7. CI/CD やってますか?

  8. http://moe-maxim.com/nannoseikamo-eraremasendeshita/

  9. CI = 継続的インテグレーション CD = 継続的デリバリー

  10. 継続的インテグレーション 引用 https://www.redhat.com/ja/topics/devops/what-is-ci-cd • 自動ビルド • 自動(ユニット)テスト

  11. 継続的デリバリー 引用 https://www.redhat.com/ja/topics/devops/what-is-ci-cd • 自動デプロイ • カナリアリリース

  12. なぜCI/CDが大事か • プロダクトの質の向上 • 心理的安全性の向上 • PDCAの仕組み化 開発作業の専念

  13. 今日の話す内容 - CI/CDについて - Github Action + Fargateの組み合わせのCI/CDがで きたよって報告 -

    GithubActionとは - 採用したアプリケーションの要件 - Fargateとは - 構成図
  14. CI/CDの選択肢 • AWS Code系 • Jenkins • Circle CI •

    Github Action (new !!) …etc
  15. Github Actionとは • GitHub上で動作するサーバレス(コンテナ)実行環境 • 昨年10月にリリースされた機能(現在もβ版) • 現在はymlベース(Azure パイプライン互換) •

    CI/CDに注力するとのこと (issueの自動タグ付けとか出来ることはもっと広い) • .github/workflows ディレクトリにファイルを置くだけ https://help.github.com/ja/articles/about-github-actions
  16. Github Action (自動デプロイ) name: deploy on: push: branches: - master

    jobs: test: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 - name: run deploy run: cd ${GITHUB_WORKSPACE} && なんかデプロイ
  17. Github Action (cron) name: schedule on: schedule: - cron: 0

    * * * * jobs: test: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 - name: run deploy run: cd ${GITHUB_WORKSPACE} && なんか処理
  18. Github Action 履歴

  19. 目的アプリケーションの要件 • VPC内で稼働するバッチアプリケーション ◦ cronで定期実行される • デプロイはscp&sshベース ◦ EMRを都度作成して破棄する

  20. ・マネージドなコンテナクラスタ環境 ・VPC外に存在(外部から叩きやすい) ・クラウドウォッチと組み合わせることでタスクを定期実行可能 ・サービス(常駐コンテナ)とタスク(使い捨てコンテナ)の使い分け可能 ・ecs cliがdocker-composeを流用できるので学習コストも低め 1.バッチ処理に必要なものをgithub.comからコンテナ化してFargateに配布 2.FargateからVPC内のアプリケーションへアプリケーションを配布 採用理由 方法

  21. VPC デプロイサーバー郡 ① コンテナイメージをビ ルド &push ②pushしたイメージで タスクを更新 ③イメージをpull Fargate

    ECR ④定期的なタスク実行 AWS
  22. Github Action 感想  良かった点 Github上で完結(マトリックスビルドもOK) CIは簡単に書けた (※Dockerfileを書く程度の知識は必須) 個人開発で使えそう OSSのCIはこれ使ったものが増えそう。 課題点

    キャッシュが無かったり痒いところには手が届かない?
  23. Fargate 感想 良かった点 箱(クラスタ) を作れば 準備OKな感じが今っぽい ラムダほどアーキテクチャ変えなくて済む 要望 Fargateにデプロイしたコンテナに入る術がない? EKSのFargate化待ってます!!

  24. まとめ • CI/CDは大事(小並感) • Github Action + Fargateで簡単なCI/CDは実現できた • 凝ったことをしないなら入門には良さげ

    ◦ CODE系シリーズ活用しよう!! • Fargateをうまく使うと踏み台として使えそう…?