Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

氏名 : 永野峻輔 所属:ニュースメディア部 テクノロージグループ 業務:エキサイトニュース(PHP, JS, Python) Elastic Search / Sparkクラスタの構築中 趣味 : ゲーム(グラブル) 漫画など

Slide 3

Slide 3 text

https://www.excite.co.jp

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

CI/CD やってますか?

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

今日の話す内容 - CI/CDについて - Github Action + Fargateの組み合わせのCI/CDがで きたよって報告 - GithubActionとは - 採用したアプリケーションの要件 - Fargateとは - 構成図

Slide 14

Slide 14 text

CI/CDの選択肢 ● AWS Code系 ● Jenkins ● Circle CI ● Github Action (new !!) …etc

Slide 15

Slide 15 text

Github Actionとは ● GitHub上で動作するサーバレス(コンテナ)実行環境 ● 昨年10月にリリースされた機能(現在もβ版) ● 現在はymlベース(Azure パイプライン互換) ● CI/CDに注力するとのこと (issueの自動タグ付けとか出来ることはもっと広い) ● .github/workflows ディレクトリにファイルを置くだけ https://help.github.com/ja/articles/about-github-actions

Slide 16

Slide 16 text

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} && なんかデプロイ

Slide 17

Slide 17 text

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} && なんか処理

Slide 18

Slide 18 text

Github Action 履歴

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

VPC デプロイサーバー郡 ① コンテナイメージをビ ルド &push ②pushしたイメージで タスクを更新 ③イメージをpull Fargate ECR ④定期的なタスク実行 AWS

Slide 22

Slide 22 text

Github Action 感想  良かった点 Github上で完結(マトリックスビルドもOK) CIは簡単に書けた (※Dockerfileを書く程度の知識は必須) 個人開発で使えそう OSSのCIはこれ使ったものが増えそう。 課題点 キャッシュが無かったり痒いところには手が届かない?

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

まとめ ● CI/CDは大事(小並感) ● Github Action + Fargateで簡単なCI/CDは実現できた ● 凝ったことをしないなら入門には良さげ ○ CODE系シリーズ活用しよう!! ● Fargateをうまく使うと踏み台として使えそう…?