SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
JenkinsとCodeBuildとCloud Buildと私
Shoji Shirotori / @irotoris
Recruit Lifestyle Co., Ltd.
自己紹介
白鳥 昇治(シロトリ ショウジ) / @irotoris
データエンジニア@リクルートライフスタイル
社内データ分析基盤/データパイプラインの開発を担当(分析もします)
Docker ❤ Kubernetes ❤ CD/CI ❤ Serverless ❤ BigData
いまやっているCI/CD
AWS / GCP / オンプレで構成されたデータ分析基盤のデプロイ・構成管理
データ加工・集計アプリケーションとそのコンテナのビルド・テスト・デプロイ
CI/CD(AsIs)
Database
Server
Batch
Server
Github Enterprise
Container
Registry
Container
RegistryBatch
Server
On-Premise
CI Notification from Jenkins
God (Infra Team)
×Services×ENV
etc. etc.
Jenkins運用でやりたくないこと
Jenkins Agentのインスタンス・ランタイム・パッケージ管理
CI用の権限強めのアクセスキーの発行・管理
Jenkinsプラグイン管理
Jenkins運用でやりたくないこと
Jenkins Agent(ビルドサーバ)のインスタンス・ランタイム・パッケージ管理
僕「opensslのバージョン古くてこのパッケージ動かないんですけど…。」
神「でもバージョン上げるとこっちのパッケージが動かなくなるので…。」
僕「えぇ…」
Jenkins運用でやりたくないこと
Jenkins Agent(ビルドサーバ)のインスタンス・ランタイム・パッケージ管理
僕「ジョブの並列度上がってきたからAgent追加しよ」
バージョン固定してないパッケージ「昨日メジャーバージョンアップしたで!!」
Agentたち「「「「はい環境差分」」」」
僕「動かん…なんでや…」
Jenkins運用でやりたくないこと
Jenkins Agent(ビルドサーバ)のインスタンス・ランタイム・パッケージ管理
僕「ジョブの並列度上がってきたからAgent追加しよ」
サーバーレス好きな僕「システムはサーバーレスなのにCIでサーバー増やすんか
www」
僕「自己矛盾つらい」
Jenkins運用でやりたくないこと
CI用の権限強めのアクセスキーの発行・管理
僕「Terraformでクラウドリソースのcreate/delete/modifyするから、CIの権限めちゃ
強いなぁ」
僕「$ git push」
僕「あっ」
→怖いのでJeninsのインスタンスにIAM Roleつけてそのインスタンス上でCI実行
→環境ごとにMaster/Agentが誕生する→管理がさらに面倒になる
Jenkins運用でやりたくないこと
Jenkinsプラグイン管理
僕「Blue Ocean入れよう」
Job「NullPointerException」
僕「!?」
リトライポチー
Job「SUCCESS」
僕「!?!?」
カンファレンス>Goole Cloud Build!!
ブログ>AWS CodeBuild便利!!
カンファレンス>Goole Cloud Build!!
ブログ>AWS CodeBuild便利!!
AWS CodeBuild ???
マネージドなコンテナベースのビルド実行環境
- 指定したランタイムのコンテナや自作コンテナを実行
- ビルド成果物はECRやS3へ保存
分単位の従量課金、無料枠あり
yamlでコマンドや処理順序を記述していく
選べるインスタンスタイプ、並列実行もOK
AWS Codeシリーズと組み合わせてCI/CDパイプラインを作る、そのパーツ
Jenkinsプラグイン(https://github.com/awslabs/aws-codebuild-jenkins-plugin)
Google Cloud Build ???
マネージドなコンテナベースのビルド実行環境
- 指定したランタイムのコンテナや自作コンテナを実行
- ビルド成果物はGCRやGCSへ保存
分単位の従量課金、無料枠あり
yamlでコマンドや処理順序を記述していく
選べるインスタンスタイプ、並列実行もOK
CI/CDパイプラインとしても使える
Jenkinsプラグイン(https://github.com/jenkinsci/google-cloudbuild-plugin)
JenkinsとCodeBuildとCloud Buildと私
どこまでCodeBuild / Cloud Buildにまかせるか??
1. CI / CDパイプライン全部。もうJenkinsいらないやつ。
2. ビルド実行環境のみ。Jenkinsからビルドサービスをキックする。
Cloud
Build
Build / UT Deploy - Dev
Integration Test
UI Test
Deploy - Prd
Build / UT Deploy - Dev
Integration Test
UI Test
Deploy - Prd
Cloud
Build
Cloud
Build
Cloud
Build
Cloud
Build
Cloud
Functions
JenkinsとCodeBuildとCloud Buildと私
どこまでCodeBuild / Cloud Buildにまかせるか??
1. CI / CDパイプライン全部(もうJenkinsいらないやつ)
2. ビルド実行環境のみ。Jenkinsからビルドサービスをキックする。
→現状、オンプレ+マルチクラウド
→インフラのビルドやデプロイは同じ場所で統合されたパイプラインにしたい
→でもコンテナだけのデプロイは統合しなくても OK
→デプロイ単位に応じてどっちも試す
● コンテナのビルド・デプロイとかの単発ジョブで済むやつ →1
● ビルド・テスト・Devデプロイ・Prdデプロイ、とパイプラインが長いやつ →2
CI/CD(ToBe)
Database
Server
Batch
Server
Github Enterprise
Container
Registry
Container
RegistryBatch
Server
On-Premise
CI Notification from Jenkins
God (Infra Team)
etc. etc.
JenkinsとCodeBuildとCloud Buildと私
Jenkins Agent(ビルドサーバ)のインスタンス・ランタイム・パッケージ管理
ランタイムのコンテナ化で解決
CodeBuild/Cloud Buildともにメインどころのビルドランタイムは公式で用意(なければ
自作する)
  →AWSのほうが種類多くて汎用的(+=Python, Ruby, etc.)
  →GoogleはGCPに特化(+=gcloud, gsutil, kubectl)
CodeBuild/Cloud Build上で実行できればインスタンス管理・Agentのスケールはなに
も考えなくていい。
JenkinsとCodeBuildとCloud Buildと私
CI用の権限強めのアクセスキーの発行・管理
CodeBuild/Cloud Build側でIAM Roleベースで実行する
→アクセスキーはいらない
JenkinsとCodeBuildとCloud Buildと私
Jenkinsプラグイン管理
JenkinsとCodeBuildとCloud Buildと私
Jenkinsプラグイン管理
方針:必要最低限の信頼できるプラグインのみ(それってどんなプラグイン?)
おじさんA「Jenkins、君はGit pullしてBuildサービスのAPIを叩いて結果を教えてくれれ
ばええんやで。プリセットのプラグインのみでいくで。」
おじさんB「CodeBuildもCloud Buildもプラグインから実行するよ。バグってたら自分で
直すよ。便利なプラグインは使っていこう。」
チームメンバのスキルとJenkinsおじさんの思考で決めると良さげ
CI/CD(ToBe)
Database
Server
Batch
Server
Github Enterprise
Container
Registry
Container
RegistryBatch
Server
On-Premise
CI Notification from Jenkins
etc. etc.
God (Infra Team)
CI/CD(Now)
Database
Server
Batch
Server
Github Enterprise
Container
Registry
Container
RegistryBatch
Server
On-Premise
CI Notification from Jenkins
etc. etc.
一部導入
一部導入まだ
God (Infra Team)
CodeBuild / Cloud Buildのいいところ
yamlでビルドステップが書ける、シンプルな構成
ビルド高速化Tipsがある
● ステップの並列実行が簡単に設定可能
● Container Registory、S3 or GCSをキャッシュ置き場として使える
ビルドマシンのリソースマネジメントがいらない
API経由での実行ができる、CIサーバーから切り離されたリソースとして使える
 
CodeBuild / Cloud Buildのかゆいところ①
Cloud BuildはGithub EnterpriseからWebhookで連携できない
● JenkinsがHubとして大活躍
○ APIでCloud Buildを実行
○ JenkinsがGoogle Cloud Source Repository(GCSR)へGit Push、GCSRからCloud Buildをキック
CodeBuild / Cloud Buildではビルド/テスト結果の統計レポート機能が乏しい
● Jenkinsがビルド/テスト成果物を表示
● 結果確認はSlackで頑張る
 
CodeBuild / Cloud Buildのかゆいところ②
CodeBuild / Cloud BuildはSlack Integration機能がない
● LambdaやCloud Functionで通知機能作ればOK
● CloudWatch Event、Cloud Pub/Subでビルドステータスが取得可能
CodeBuild / Cloud Buildでは複雑なパイプラインは表現しきれない
● 条件による分岐など。結局 Shellで書くことに。
● そもそも「Build」サービスだし。
パイプラインの可視性に乏しい
● やっぱりJenkinsのBlue Oceanがナンバーワン! 
まとめ
AWS CodeBuild / Google Cloud BuildにJenkinsのビルド実行環境を委譲して得られ
るもの
● Jenkins Agentのインスタンス・ランタイム・パッケージ管理からの解放
● CI用の権限強めのアクセスキーの発行・管理がなくなる
● Jenkinsプラグイン管理の最小化
● (実行環境がスケールするCron)
まとめ
AWS CodeBuild / Google Cloud BuildにJenkinsのビルド実行環境を委譲して得られ
るもの
● Jenkins Agentのインスタンス・ランタイム・パッケージ管理からの解放
● CI用の権限強めのアクセスキーの発行・管理がなくなる
● Jenkinsプラグイン管理の最小化
● (実行環境がスケールするCron)
あともう少し…残りの問題は高可用性なJenkins Masterだ!!
To Be Continued...
JenkinsとCodeBuildとCloud Buildと私

Contenu connexe

Tendances

Tendances (20)

マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
Azure Data Explorer
Azure Data ExplorerAzure Data Explorer
Azure Data Explorer
 
Istioサービスメッシュ入門
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation 20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
Argo CD Deep Dive
Argo CD Deep DiveArgo CD Deep Dive
Argo CD Deep Dive
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOps
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito
 
ここが良かったDatadog
ここが良かったDatadogここが良かったDatadog
ここが良かったDatadog
 
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 

Similaire à JenkinsとCodeBuildとCloud Buildと私

JAWSUG & JAZUG Sendai Azure Update 20140517
JAWSUG & JAZUG Sendai Azure Update 20140517JAWSUG & JAZUG Sendai Azure Update 20140517
JAWSUG & JAZUG Sendai Azure Update 20140517
Ayako Omori
 

Similaire à JenkinsとCodeBuildとCloud Buildと私 (20)

Docker Enterprise Editionで実践するCaaS
Docker Enterprise Editionで実践するCaaSDocker Enterprise Editionで実践するCaaS
Docker Enterprise Editionで実践するCaaS
 
ECSとGitLabでCI環境構築
ECSとGitLabでCI環境構築ECSとGitLabでCI環境構築
ECSとGitLabでCI環境構築
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
 
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
 
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
 
Microsoft Azure Update 20151112
Microsoft Azure Update 20151112Microsoft Azure Update 20151112
Microsoft Azure Update 20151112
 
Dockerだけではないコンテナのはなし
DockerだけではないコンテナのはなしDockerだけではないコンテナのはなし
Dockerだけではないコンテナのはなし
 
【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
 
JAWSUG & JAZUG Sendai Azure Update 20140517
JAWSUG & JAZUG Sendai Azure Update 20140517JAWSUG & JAZUG Sendai Azure Update 20140517
JAWSUG & JAZUG Sendai Azure Update 20140517
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
 
Microsoft AI Platform
Microsoft AI PlatformMicrosoft AI Platform
Microsoft AI Platform
 
Gitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイGitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイ
 

JenkinsとCodeBuildとCloud Buildと私