Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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をうまく使うと踏み台として使えそう…?