SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
Copyright Drecom Co., Ltd. All Rights Reserved.
sue445
2016/12/01 ドリコムAdventCalendar
ドリコムのインフラCI
Copyright Drecom Co., Ltd. All Rights Reserved.
● Go Sueyoshi a.k.a sue445
○ Ruby歴 4年半
○ golang歴 2年
○ Go歴 34年(34歳)
● 株式会社ドリコム インフラストラクチャー部所属
○ インフラチームは全部で数人
○ 社内ツールや社内ライブラリを中心に、サーバサイド全般をアプリから
インフラまで浅く広く
○ 良く言えば「フルスタックエンジニア」、悪く言えば「ワンオペエンジニア」
● 「ドリコムのプリキュアの人」として社内外で有名
自己紹介
Copyright Drecom Co., Ltd. All Rights Reserved.
【宣伝】ドリコムについて
● http://www.drecom.co.jp/
● スマホゲームと広告配信サービスを開発・運用している会社
● 社員数280名
● ゲームはRuby + Ruby on Rails、広告はElixir + Phoenix
Copyright Drecom Co., Ltd. All Rights Reserved.
Agenda
● インフラCIとは?
● 弊社のインフラCI
● 使ってるツールの紹介
● Jenkinsのジョブ
● インフラCIのハマりどころ
● おまけ
Copyright Drecom Co., Ltd. All Rights Reserved.
インフラCIとは?
● インフラ環境をCIすること
○ よくある例)PullRequestで検証環境にプロビジョニングを
実行し、問題なければPullRequestをマージ、自動的に本
番環境にも同じプロビジョニングが実行される
● 詳しい資料
○ インフラの継続的デリバリー - naoyaのはてなダイアリー
http://d.hatena.ne.jp/naoya/20140821/1408577976
○ インフラ系技術の流れ - Gosuke Miyashita
http://mizzy.org/blog/2013/10/29/1/
● 弊社のケースは若干違う(後述)
Copyright Drecom Co., Ltd. All Rights Reserved.
弊社のインフラCIでやってること
● ゴール
○ 特定のアプリに依存しない全社基盤のイメージを作成
○ 必要に応じてアプリ固有のレシピも適用してイメージを作
成
● Jenkinsで行っていること
○ PullRequestやmasterブランチをAWSなどにプロビジョニ
ングを実行(開発ビルド)
■ 自動実行
○ masterブランチをAWSなどにプロビジョニングを実行し、イ
メージの作成(イメージビルド)
■ インフラチームによる手動実行
Copyright Drecom Co., Ltd. All Rights Reserved.
インフラCIの全体像(開発ビルド)
社内Jenkinsサーバ
ソースをclone
JenkinsがVagrantで
AWSなどにVMを立て
て、itamaeのレシピと
Serverspec実行
Copyright Drecom Co., Ltd. All Rights Reserved.
インフラCIの全体像(イメージビルド)
ソースをclone
packerでitamaeとServerspecを実行
して、問題なければイメージ( AMIや
テンプレート)を作成する
社内Jenkinsサーバ
AMI
テンプレート
Copyright Drecom Co., Ltd. All Rights Reserved.
使っているツールの紹介
Copyright Drecom Co., Ltd. All Rights Reserved.
使っているツール:itamae
● http://itamae.kitchen/
● クックパッドの中の人が作ったプロビジョニングツール
● Ruby製でChefの軽量版
● 日本人が作ったということもあり、国内だと割と使われている
○ 日本語で質問できるのもメリット
○ 海外からのissueやPRも見るので海外で全然使われてい
ないってわけではなさそう
● 自分で作ったレシピをgem(Rubyのライブラリ)にして
rubygems.org(gemのホスティングサイト)で配布することもで
きる
Copyright Drecom Co., Ltd. All Rights Reserved.
サンプルコード
recipe.rb
package 'nginx' do
action :install
end
service 'nginx' do
action [:enable, :start]
end
● itamae local recipe.rb
● itamae ssh --host host001.example.jp recipe.rb
Copyright Drecom Co., Ltd. All Rights Reserved.
Chef -> itamae
● 弊社だと元々CentOS 6環境をChefでプロビジョニングしてい
た
○ ドリコムのInfrastructure as code
http://www.slideshare.net/y05_net/infrastructure-as-co
de-35373108
● CentOS 7移行時にChefのレシピを全部itamaeに置き換えた
○ レシピ数は全部で30~40くらい
○ 過渡期でインフラエンジニア2人 + アプリエンジニア4人くら
いがかりで2~3ヶ月
○ 既存サービスはそのままで、新規サービスは全てCentOS
7で作成
Copyright Drecom Co., Ltd. All Rights Reserved.
itamaeを導入した理由
● vs Chef
○ ChefはRuby製だけどRuby以外に覚えること(Chefの独
自ルール)が多くて初見だと学習コスト高そうだった
○ itamaeは普通のRubyのgemでRubyを知っていれば他に
覚えることは少ないのでアプリエンジニアにもとっつきやす
い
○ 当時6人中3人がitamae使えたのでチーム内で教えれば
なんとかなるだろうという思い
● vs Ansible
○ 検討材料としては挙がったけど、Ruby書ける人が多かっ
たので流れでitamaeになった
Copyright Drecom Co., Ltd. All Rights Reserved.
使っているツール:Serverspec
● http://serverspec.org/
● RSpec(Rubyのテスティングフレームワーク)をベースにした、
インフラ構成をテストするためのツール
● インフラ構成のテストをするツールだとこれがデファクトスタン
ダード
● itamaeで実行したプロビジョニングが本当に設定されてるかど
うかの検証をしている
Copyright Drecom Co., Ltd. All Rights Reserved.
nginx_spec.rb
describe package('nginx') do
it { should be_installed }
end
describe service('nginx') do
it { should be_enabled }
it { should be_running }
end
サンプルコード
Copyright Drecom Co., Ltd. All Rights Reserved.
使っているツール:Vagrant
● https://www.vagrantup.com/
● HashiCorp社が作った仮想環境の構築ツール
● VirtualBoxやAWSなどを同一インターフェースで扱える
● プラグイン導入することでいろんな環境で使える
Copyright Drecom Co., Ltd. All Rights Reserved.
Vagrantプラグイン
● https://github.com/schubergphilis/vagrant-cloudstack
○ IDCFがcloudstackのAPIに対応してるのでvagrantプラグ
インもそのまま使えた
● https://github.com/KariusDx/vagrant-aws
○ スポットインスタンス対応のfork版
○ CIでスポットインスタンスを使うことにより費用を抑えてい
る(オンデマンドの1/10くらいの値段)
● どちらも社内で使うには若干機能足りてなかったり、バグが
あったのでPR投げた
○ vagrant-cloudstackはmasterに取り込まれたが現時点で
はまだリリースされてない
○ vagrant-awsはPR放置されてる(´・ω・`)
Copyright Drecom Co., Ltd. All Rights Reserved.
Tips:正式公開されていないVagrantプラグインを使う方法
● 正式公開されていれば vagrant plugin install でインストール
すれば使えるが、それができない時の対処法
● Vagrantプラグインも普通のgemなので、Gemfileを書いて
bundle exec vagrant 〜 で実行すればいい
● https://www.vagrantup.com/docs/plugins/packaging.html
source "https://rubygems.org"
group :development do
gem "vagrant", github: "mitchellh/vagrant", tag: "v1.8.6"
end
group :plugins do
gem "vagrant-aws", github: "sue445/vagrant-aws", branch: "spot_iam_instance_profile"
gem "vagrant-cloudstack", github: "schubergphilis/vagrant-cloudstack", branch: "master",
ref: "c2107d"
end
Copyright Drecom Co., Ltd. All Rights Reserved.
使っているツール:Packer
● https://www.packer.io/
● HachiCorp社が作った、複数プラットフォームでイメージを作
成するツール
● プラグイン導入することでいろんな環境で使える
● packer buildでやってること
○ 1. イメージを作りたい先のクラウドにVMを作成
○ 2. 予めgit archiveでtar.gzに固めておいたローカルのレシ
ピをVMに転送
○ 3. VM内でtar.gzを展開してレシピとテストを実行
○ 4. 問題なければイメージを作成
Copyright Drecom Co., Ltd. All Rights Reserved.
プロビジョニングの構成
● 1つのVMに対してitamaeを2回実行している
● 1回目:イメージ作成時
○ role(サーバの役割)に関わらずpackageは全てインストー
ルする
● VM作成してクラウドのコンソールからタグを付与
● 2回目:VM再起動時
○ VM起動時に2回目のitamaeを実行するためのsystemd
serviceを実行
○ 自分自身に付与されたタグ情報を取得
■ roleに応じてserviceを起動(例:dbロールであれば
mysqlを起動)
■ タグにアプリ名が含まれていればアプリ固有のレシピ
を実行
Copyright Drecom Co., Ltd. All Rights Reserved.
開発ビルド用のジョブ
● マルチ構成プロジェクトにして、1つのジョブで同時に複数ビル
ドが実行できるようにしてる
● Jenkins 2.0の新機能のpipelineを使いたいけど、複数のジョ
ブのコンソールログが1ヶ所になって混ざってしまうので移行は
してない
Copyright Drecom Co., Ltd. All Rights Reserved.
開発ビルド用のジョブ
縦の軸はどのクラウドに対してプロビジョニングをするかどうか
● 対応するVagrantプラグインをインストールして
● vagrant up --provider=$PROVIDER みたいな感じで実行
$
P
R
O
V
I
D
E
R
Copyright Drecom Co., Ltd. All Rights Reserved.
開発ビルド用のジョブ
横の軸は使用するnodeファイル(設定ファイル)
● リポジトリにコミットしてるのはdefault.yml(role全無し)だけだ
が、ビルド時にrolesを全部付与したyml(role_all.yml)を生成
してビルドを実行することにより、role全有り、全無しを両方テ
ストしてる
$NODE
Copyright Drecom Co., Ltd. All Rights Reserved.
イメージビルド用のジョブ
● プルダウンでパラメータを切り替えている
● 弊社だとサービス単位(費用が発生する請求単位)で AWSや
IDCFのアカウントが複数分かれているので、作成先のアカウ
ントを選択できるようにしてる
○ クラウドによってはアカウント間でのイメージ共有ができる
ので不要なんだけど念のため
Copyright Drecom Co., Ltd. All Rights Reserved.
イメージビルド用のジョブ
● パラメータが多いけど、Rebuilder Pluginで一度使ったパラ
メータを使いまわせるようにしてるので2回目以降はそんなに
大変ではない
○ https://wiki.jenkins-ci.org/display/JENKINS/Rebuild+Pl
ugin
● イメージ作成に成功したらgitのtagを作り、かつイメージにも
tagと同じ名前をつけることにより、イメージからどの時点の
ソースコードを元にビルドしたかが特定できるようにしてる
Copyright Drecom Co., Ltd. All Rights Reserved.
イメージビルド用のジョブ
git tags
AMI
Copyright Drecom Co., Ltd. All Rights Reserved.
インフラCIのハマりどころ
1. ビルドが遅い
2. たまにビルドが落ちる
Copyright Drecom Co., Ltd. All Rights Reserved.
1. ビルドが遅い
● VMの起動に1〜2分
● itamaeを全部流し切るのにローカル実行で20分くらい、AWS
のc3.largeで10分くらい
● Serverspecの実行は数分
● 解決策は金の弾丸で殴るしかなさそうw
Copyright Drecom Co., Ltd. All Rights Reserved.
何が遅いのか調べる
● itamae実行時に --profile をつければコマンド単位の実行時
間をjsonで出力してくれる
● jsonをparseして処理時間が長いものを抽出
● ワーストランキングを出力するスクリプト
○ https://gist.github.com/sue445/96058bd109601b58f5a
81b826949135f
Copyright Drecom Co., Ltd. All Rights Reserved.
調べた
● 36.90秒 yum -y install td-agent-2.3.1
● 36.33秒 yum -y install openssl-devel
● 26.64秒 /usr/local/bin/gem update --force --no-document
● 19.99秒 yum -y install ImageMagick-6.7.8.9
● 17.93秒 yum -y install tcpflow
● 17.33秒 yum -y install epel-release
● 15.76秒 yum -y install chrony-2.1.1
● 15.13秒 yum -y install gcc-c++
● 14.20秒 yum -y install autoconf
● 14.20秒 yum -y install mdadm
Copyright Drecom Co., Ltd. All Rights Reserved.
_人人人人人人人_
> yum install <
 ̄Y^Y^Y^Y^Y^Y ̄
Copyright Drecom Co., Ltd. All Rights Reserved.
なぜ遅いか考察
● rpmの取得と、取得したrpmをローカルにインストールする部
分のどっちが遅いかまでは検証してない
● packageを全部インストールした状態でイメージ化しておい
て、roleによってserviceの起動のみを切り替えるというのは理
にかなってそう
Copyright Drecom Co., Ltd. All Rights Reserved.
2. たまにビルドが落ちる
毎回2 x 3通りもテストをやってると1つだけビルドが落ちることが
たまによくある(インフラCIガチャ)
Copyright Drecom Co., Ltd. All Rights Reserved.
インフラCIのビルドが落ちるケース
● VM起動に失敗
● rsync中に固まる
○ 無限に止まるので他のジョブに影響するのでタイムアウト
30分に設定
○ https://wiki.jenkins-ci.org/display/JENKINS/Build-timeo
ut+Plugin
● AWSスポットインスタンスの価格高騰で起動に失敗
○ $0.04に設定していればほぼ安全圏だけど、たまに$1超え
るw
○ 高騰していないスペックやアベイラビリティゾーンを変えて
回避
Copyright Drecom Co., Ltd. All Rights Reserved.
インフラCIのビルドが落ちるケース
● レシピ実行中にプロセスが突然死ぬ
○ 何回実行しても再現するので調べたら、一部コマンドの標
準出力への書き込みをやめたらプロセスが死ななくなった
● rikenが調子悪くてyum install失敗
● いずれの場合も失敗した内容によって偶然落ちたビルドなの
でスルーするかどうか判断する必要がある(つらい)
● コンソールログの内容を見て判断する必要があるので、失敗
した時のために可能な限りログは全部出しておく
Copyright Drecom Co., Ltd. All Rights Reserved.
おまけ1:テスト駆動インフラ
アプリ開発でよく使われるTDD (Test Driven Development = テ
スト駆動開発) をインフラにも適用することができる
1. インフラの確認項目をServerspecでテストを書く
2. 期待したエラーが出ることを確認 (Red)
3. サーバで適用したいitamaeのコードを書く
4. テストが通っていることを確認 (Green)
5. ダメなら3に戻る
6. 必要ならリファクタリング (Refactoring)
● VagrantとVirtualBoxを使うと手軽にVMを作り直せるのでイン
フラTDDしやすい
Copyright Drecom Co., Ltd. All Rights Reserved.
テスト駆動インフラでも黄金の回転を
http://www.slideshare.net/t_wada/the-spirit-of-tdd/27
Copyright Drecom Co., Ltd. All Rights Reserved.
おまけ2:Jenkins運用
● Jenkinsサーバ構築自体もitamaeで行ってる
○ コマンド1つで必要なミドル一式(jenkins, nginx, vagrant, packer,
virtualbox辺り)全部入るようになってる
● webから設定する部分(インストールしてるプラグインとか)は
全部社内confluenceにまとめた
● バックアップ
○ 1日1回 https://github.com/sue445/jenkins-backup-script を定期実
行して設定やプラグイン一式をtarに保存
○ tarを物理的に別の所にあるバックアップサーバに転送
○ Jenkinsマシンがいつ死んでもすぐに復旧できるようになってる
○ Jenkins本体やプラグインのアップデート前にバックアップしておくとす
ぐに戻せて安心
Copyright Drecom Co., Ltd. All Rights Reserved.
最後に
● 複数のクラウドに対するインフラCIの事例はあまり見ないの
で、参考になったら幸いです

Contenu connexe

Tendances

【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜 虎の穴 開発室
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよDrecom Co., Ltd.
 
Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Naotoshi Seo
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについてMasahito Zembutsu
 
Serf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfraSerf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfraNaotoshi Seo
 
Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門虎の穴 開発室
 
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarbitamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarbGo Sueyoshi (a.k.a sue445)
 
カンバンと朝会とわたくし
カンバンと朝会とわたくしカンバンと朝会とわたくし
カンバンと朝会とわたくしDrecom Co., Ltd.
 
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選虎の穴 開発室
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾外道 父
 
こんな辛いテストはいやだ
こんな辛いテストはいやだ こんな辛いテストはいやだ
こんな辛いテストはいやだ Takuya Mikami
 
runC概要と使い方
runC概要と使い方runC概要と使い方
runC概要と使い方Yuji Oshima
 
Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519虎の穴 開発室
 
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計Shinnosuke Tokuda
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Tokoroten Nakayama
 
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI虎の穴 開発室
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Tsunenori Oohara
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するKohei Tokunaga
 

Tendances (20)

【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
 
GitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼうGitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼう
 
技術書へのいざない
技術書へのいざない技術書へのいざない
技術書へのいざない
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ
 
Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
Serf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfraSerf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfra
 
Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門
 
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarbitamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
 
カンバンと朝会とわたくし
カンバンと朝会とわたくしカンバンと朝会とわたくし
カンバンと朝会とわたくし
 
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
 
こんな辛いテストはいやだ
こんな辛いテストはいやだ こんな辛いテストはいやだ
こんな辛いテストはいやだ
 
runC概要と使い方
runC概要と使い方runC概要と使い方
runC概要と使い方
 
Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519
 
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰する
 

En vedette

ザビ家の野望 〜 全自動ZABBIX AWS編 〜
ザビ家の野望 〜 全自動ZABBIX AWS編 〜ザビ家の野望 〜 全自動ZABBIX AWS編 〜
ザビ家の野望 〜 全自動ZABBIX AWS編 〜Katsuhiro Miura
 
ドリコムのInfrastructure as code
ドリコムのInfrastructure as codeドリコムのInfrastructure as code
ドリコムのInfrastructure as codeYosuke Hiraishi
 
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasualTakahiro Okumura
 
開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみたpyar6329
 
gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbGo Sueyoshi (a.k.a sue445)
 
2016 1214-dev-night-vol1-in-tanita
2016 1214-dev-night-vol1-in-tanita2016 1214-dev-night-vol1-in-tanita
2016 1214-dev-night-vol1-in-tanitaNaoto Gohko
 
オフショア開発で心がけている5つの俺ルール
オフショア開発で心がけている5つの俺ルールオフショア開発で心がけている5つの俺ルール
オフショア開発で心がけている5つの俺ルールReimi Kuramochi Chiba
 
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方Hisahiko Shiraishi
 
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話Tokoroten Nakayama
 
What's Amazon Athena? - re:Growth 2016 Osaka
What's Amazon Athena? - re:Growth 2016 OsakaWhat's Amazon Athena? - re:Growth 2016 Osaka
What's Amazon Athena? - re:Growth 2016 OsakaGanota Ichida
 
モバイルアプリ研修イントロダクション
モバイルアプリ研修イントロダクションモバイルアプリ研修イントロダクション
モバイルアプリ研修イントロダクションJoe_noh
 
Web開発研修イントロダクション
Web開発研修イントロダクションWeb開発研修イントロダクション
Web開発研修イントロダクションJoe_noh
 
Webオペレーション研修イントロダクション
Webオペレーション研修イントロダクションWebオペレーション研修イントロダクション
Webオペレーション研修イントロダクションJoe_noh
 
お産ウィークイントロダクション
お産ウィークイントロダクションお産ウィークイントロダクション
お産ウィークイントロダクションJoe_noh
 
サイクルOJTイントロダクション
サイクルOJTイントロダクションサイクルOJTイントロダクション
サイクルOJTイントロダクションJoe_noh
 
HTC Vive の開発環境構築(物理)
HTC Vive の開発環境構築(物理)HTC Vive の開発環境構築(物理)
HTC Vive の開発環境構築(物理)Masataka Kohagura
 
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartupGo Sueyoshi (a.k.a sue445)
 
【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化Yuki Kanazawa
 

En vedette (20)

ザビ家の野望 〜 全自動ZABBIX AWS編 〜
ザビ家の野望 〜 全自動ZABBIX AWS編 〜ザビ家の野望 〜 全自動ZABBIX AWS編 〜
ザビ家の野望 〜 全自動ZABBIX AWS編 〜
 
ドリコムのInfrastructure as code
ドリコムのInfrastructure as codeドリコムのInfrastructure as code
ドリコムのInfrastructure as code
 
第4回「クラウドを支えるKVMの現在と未来」(2011/07/07 on しすなま!)
第4回「クラウドを支えるKVMの現在と未来」(2011/07/07 on しすなま!)第4回「クラウドを支えるKVMの現在と未来」(2011/07/07 on しすなま!)
第4回「クラウドを支えるKVMの現在と未来」(2011/07/07 on しすなま!)
 
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
 
Kyotoproducts
KyotoproductsKyotoproducts
Kyotoproducts
 
開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた
 
gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarb
 
2016 1214-dev-night-vol1-in-tanita
2016 1214-dev-night-vol1-in-tanita2016 1214-dev-night-vol1-in-tanita
2016 1214-dev-night-vol1-in-tanita
 
オフショア開発で心がけている5つの俺ルール
オフショア開発で心がけている5つの俺ルールオフショア開発で心がけている5つの俺ルール
オフショア開発で心がけている5つの俺ルール
 
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方
 
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
 
What's Amazon Athena? - re:Growth 2016 Osaka
What's Amazon Athena? - re:Growth 2016 OsakaWhat's Amazon Athena? - re:Growth 2016 Osaka
What's Amazon Athena? - re:Growth 2016 Osaka
 
モバイルアプリ研修イントロダクション
モバイルアプリ研修イントロダクションモバイルアプリ研修イントロダクション
モバイルアプリ研修イントロダクション
 
Web開発研修イントロダクション
Web開発研修イントロダクションWeb開発研修イントロダクション
Web開発研修イントロダクション
 
Webオペレーション研修イントロダクション
Webオペレーション研修イントロダクションWebオペレーション研修イントロダクション
Webオペレーション研修イントロダクション
 
お産ウィークイントロダクション
お産ウィークイントロダクションお産ウィークイントロダクション
お産ウィークイントロダクション
 
サイクルOJTイントロダクション
サイクルOJTイントロダクションサイクルOJTイントロダクション
サイクルOJTイントロダクション
 
HTC Vive の開発環境構築(物理)
HTC Vive の開発環境構築(物理)HTC Vive の開発環境構築(物理)
HTC Vive の開発環境構築(物理)
 
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
 
【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化
 

Similaire à ドリコムのインフラCI

「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)Drecom Co., Ltd.
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and dockerHiroshi Miura
 
小さく始める Docker container の deploy
小さく始める Docker container の deploy小さく始める Docker container の deploy
小さく始める Docker container の deployYoshinori Teraoka
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and dockerHiroshi Miura
 
Windows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみたWindows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみたHikari Morita
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Masahito Zembutsu
 
20131019 OSC@Tokyo CloudStackユーザー会
20131019 OSC@Tokyo CloudStackユーザー会20131019 OSC@Tokyo CloudStackユーザー会
20131019 OSC@Tokyo CloudStackユーザー会samemoon
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集Wataru NOGUCHI
 
Sakura no-yuube-20140327
Sakura no-yuube-20140327Sakura no-yuube-20140327
Sakura no-yuube-20140327Kunihiro TANAKA
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会samemoon
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Makoto Haruyama
 
プライベートクラウド作ってみました
プライベートクラウド作ってみましたプライベートクラウド作ってみました
プライベートクラウド作ってみましたKoji Hasebe
 
Cloudera impala
Cloudera impalaCloudera impala
Cloudera impala外道 父
 
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Yasuaki Matsuda
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”Drecom Co., Ltd.
 

Similaire à ドリコムのインフラCI (20)

ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
 
小さく始める Docker container の deploy
小さく始める Docker container の deploy小さく始める Docker container の deploy
小さく始める Docker container の deploy
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
 
Windows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみたWindows の Docker 上で PGX を動かしてみた
Windows の Docker 上で PGX を動かしてみた
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19
 
20131019 OSC@Tokyo CloudStackユーザー会
20131019 OSC@Tokyo CloudStackユーザー会20131019 OSC@Tokyo CloudStackユーザー会
20131019 OSC@Tokyo CloudStackユーザー会
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
Sakura no-yuube-20140327
Sakura no-yuube-20140327Sakura no-yuube-20140327
Sakura no-yuube-20140327
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介
 
プライベートクラウド作ってみました
プライベートクラウド作ってみましたプライベートクラウド作ってみました
プライベートクラウド作ってみました
 
Cloudera impala
Cloudera impalaCloudera impala
Cloudera impala
 
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
 

Plus de Go Sueyoshi (a.k.a sue445)

サザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyサザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyGo Sueyoshi (a.k.a sue445)
 
Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Go Sueyoshi (a.k.a sue445)
 
GemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGo Sueyoshi (a.k.a sue445)
 
Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Go Sueyoshi (a.k.a sue445)
 
プリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaプリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaGo Sueyoshi (a.k.a sue445)
 
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackプリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackGo Sueyoshi (a.k.a sue445)
 
Rubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbRubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbGo Sueyoshi (a.k.a sue445)
 

Plus de Go Sueyoshi (a.k.a sue445) (16)

社内テストファースト勉強会
社内テストファースト勉強会社内テストファースト勉強会
社内テストファースト勉強会
 
サザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyサザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_history
 
プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08
 
Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01
 
GemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarb
 
Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発
 
プリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaプリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHiroba
 
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackプリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
 
Rubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbRubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarb
 
JavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamuraiJavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamurai
 
First step of Rails Contribute‎ #shibuyarb
First step of Rails Contribute‎ #shibuyarbFirst step of Rails Contribute‎ #shibuyarb
First step of Rails Contribute‎ #shibuyarb
 
勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja
 
アニメ実況実践入門
アニメ実況実践入門アニメ実況実践入門
アニメ実況実践入門
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
 
AZusaar!でのappengine活用事例 #ajn19
AZusaar!でのappengine活用事例 #ajn19AZusaar!でのappengine活用事例 #ajn19
AZusaar!でのappengine活用事例 #ajn19
 
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
 

Dernier

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 

Dernier (9)

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 

ドリコムのインフラCI

  • 1. Copyright Drecom Co., Ltd. All Rights Reserved. sue445 2016/12/01 ドリコムAdventCalendar ドリコムのインフラCI
  • 2. Copyright Drecom Co., Ltd. All Rights Reserved. ● Go Sueyoshi a.k.a sue445 ○ Ruby歴 4年半 ○ golang歴 2年 ○ Go歴 34年(34歳) ● 株式会社ドリコム インフラストラクチャー部所属 ○ インフラチームは全部で数人 ○ 社内ツールや社内ライブラリを中心に、サーバサイド全般をアプリから インフラまで浅く広く ○ 良く言えば「フルスタックエンジニア」、悪く言えば「ワンオペエンジニア」 ● 「ドリコムのプリキュアの人」として社内外で有名 自己紹介
  • 3. Copyright Drecom Co., Ltd. All Rights Reserved. 【宣伝】ドリコムについて ● http://www.drecom.co.jp/ ● スマホゲームと広告配信サービスを開発・運用している会社 ● 社員数280名 ● ゲームはRuby + Ruby on Rails、広告はElixir + Phoenix
  • 4. Copyright Drecom Co., Ltd. All Rights Reserved. Agenda ● インフラCIとは? ● 弊社のインフラCI ● 使ってるツールの紹介 ● Jenkinsのジョブ ● インフラCIのハマりどころ ● おまけ
  • 5. Copyright Drecom Co., Ltd. All Rights Reserved. インフラCIとは? ● インフラ環境をCIすること ○ よくある例)PullRequestで検証環境にプロビジョニングを 実行し、問題なければPullRequestをマージ、自動的に本 番環境にも同じプロビジョニングが実行される ● 詳しい資料 ○ インフラの継続的デリバリー - naoyaのはてなダイアリー http://d.hatena.ne.jp/naoya/20140821/1408577976 ○ インフラ系技術の流れ - Gosuke Miyashita http://mizzy.org/blog/2013/10/29/1/ ● 弊社のケースは若干違う(後述)
  • 6. Copyright Drecom Co., Ltd. All Rights Reserved. 弊社のインフラCIでやってること ● ゴール ○ 特定のアプリに依存しない全社基盤のイメージを作成 ○ 必要に応じてアプリ固有のレシピも適用してイメージを作 成 ● Jenkinsで行っていること ○ PullRequestやmasterブランチをAWSなどにプロビジョニ ングを実行(開発ビルド) ■ 自動実行 ○ masterブランチをAWSなどにプロビジョニングを実行し、イ メージの作成(イメージビルド) ■ インフラチームによる手動実行
  • 7. Copyright Drecom Co., Ltd. All Rights Reserved. インフラCIの全体像(開発ビルド) 社内Jenkinsサーバ ソースをclone JenkinsがVagrantで AWSなどにVMを立て て、itamaeのレシピと Serverspec実行
  • 8. Copyright Drecom Co., Ltd. All Rights Reserved. インフラCIの全体像(イメージビルド) ソースをclone packerでitamaeとServerspecを実行 して、問題なければイメージ( AMIや テンプレート)を作成する 社内Jenkinsサーバ AMI テンプレート
  • 9. Copyright Drecom Co., Ltd. All Rights Reserved. 使っているツールの紹介
  • 10. Copyright Drecom Co., Ltd. All Rights Reserved. 使っているツール:itamae ● http://itamae.kitchen/ ● クックパッドの中の人が作ったプロビジョニングツール ● Ruby製でChefの軽量版 ● 日本人が作ったということもあり、国内だと割と使われている ○ 日本語で質問できるのもメリット ○ 海外からのissueやPRも見るので海外で全然使われてい ないってわけではなさそう ● 自分で作ったレシピをgem(Rubyのライブラリ)にして rubygems.org(gemのホスティングサイト)で配布することもで きる
  • 11. Copyright Drecom Co., Ltd. All Rights Reserved. サンプルコード recipe.rb package 'nginx' do action :install end service 'nginx' do action [:enable, :start] end ● itamae local recipe.rb ● itamae ssh --host host001.example.jp recipe.rb
  • 12. Copyright Drecom Co., Ltd. All Rights Reserved. Chef -> itamae ● 弊社だと元々CentOS 6環境をChefでプロビジョニングしてい た ○ ドリコムのInfrastructure as code http://www.slideshare.net/y05_net/infrastructure-as-co de-35373108 ● CentOS 7移行時にChefのレシピを全部itamaeに置き換えた ○ レシピ数は全部で30~40くらい ○ 過渡期でインフラエンジニア2人 + アプリエンジニア4人くら いがかりで2~3ヶ月 ○ 既存サービスはそのままで、新規サービスは全てCentOS 7で作成
  • 13. Copyright Drecom Co., Ltd. All Rights Reserved. itamaeを導入した理由 ● vs Chef ○ ChefはRuby製だけどRuby以外に覚えること(Chefの独 自ルール)が多くて初見だと学習コスト高そうだった ○ itamaeは普通のRubyのgemでRubyを知っていれば他に 覚えることは少ないのでアプリエンジニアにもとっつきやす い ○ 当時6人中3人がitamae使えたのでチーム内で教えれば なんとかなるだろうという思い ● vs Ansible ○ 検討材料としては挙がったけど、Ruby書ける人が多かっ たので流れでitamaeになった
  • 14. Copyright Drecom Co., Ltd. All Rights Reserved. 使っているツール:Serverspec ● http://serverspec.org/ ● RSpec(Rubyのテスティングフレームワーク)をベースにした、 インフラ構成をテストするためのツール ● インフラ構成のテストをするツールだとこれがデファクトスタン ダード ● itamaeで実行したプロビジョニングが本当に設定されてるかど うかの検証をしている
  • 15. Copyright Drecom Co., Ltd. All Rights Reserved. nginx_spec.rb describe package('nginx') do it { should be_installed } end describe service('nginx') do it { should be_enabled } it { should be_running } end サンプルコード
  • 16. Copyright Drecom Co., Ltd. All Rights Reserved. 使っているツール:Vagrant ● https://www.vagrantup.com/ ● HashiCorp社が作った仮想環境の構築ツール ● VirtualBoxやAWSなどを同一インターフェースで扱える ● プラグイン導入することでいろんな環境で使える
  • 17. Copyright Drecom Co., Ltd. All Rights Reserved. Vagrantプラグイン ● https://github.com/schubergphilis/vagrant-cloudstack ○ IDCFがcloudstackのAPIに対応してるのでvagrantプラグ インもそのまま使えた ● https://github.com/KariusDx/vagrant-aws ○ スポットインスタンス対応のfork版 ○ CIでスポットインスタンスを使うことにより費用を抑えてい る(オンデマンドの1/10くらいの値段) ● どちらも社内で使うには若干機能足りてなかったり、バグが あったのでPR投げた ○ vagrant-cloudstackはmasterに取り込まれたが現時点で はまだリリースされてない ○ vagrant-awsはPR放置されてる(´・ω・`)
  • 18. Copyright Drecom Co., Ltd. All Rights Reserved. Tips:正式公開されていないVagrantプラグインを使う方法 ● 正式公開されていれば vagrant plugin install でインストール すれば使えるが、それができない時の対処法 ● Vagrantプラグインも普通のgemなので、Gemfileを書いて bundle exec vagrant 〜 で実行すればいい ● https://www.vagrantup.com/docs/plugins/packaging.html source "https://rubygems.org" group :development do gem "vagrant", github: "mitchellh/vagrant", tag: "v1.8.6" end group :plugins do gem "vagrant-aws", github: "sue445/vagrant-aws", branch: "spot_iam_instance_profile" gem "vagrant-cloudstack", github: "schubergphilis/vagrant-cloudstack", branch: "master", ref: "c2107d" end
  • 19. Copyright Drecom Co., Ltd. All Rights Reserved. 使っているツール:Packer ● https://www.packer.io/ ● HachiCorp社が作った、複数プラットフォームでイメージを作 成するツール ● プラグイン導入することでいろんな環境で使える ● packer buildでやってること ○ 1. イメージを作りたい先のクラウドにVMを作成 ○ 2. 予めgit archiveでtar.gzに固めておいたローカルのレシ ピをVMに転送 ○ 3. VM内でtar.gzを展開してレシピとテストを実行 ○ 4. 問題なければイメージを作成
  • 20. Copyright Drecom Co., Ltd. All Rights Reserved. プロビジョニングの構成 ● 1つのVMに対してitamaeを2回実行している ● 1回目:イメージ作成時 ○ role(サーバの役割)に関わらずpackageは全てインストー ルする ● VM作成してクラウドのコンソールからタグを付与 ● 2回目:VM再起動時 ○ VM起動時に2回目のitamaeを実行するためのsystemd serviceを実行 ○ 自分自身に付与されたタグ情報を取得 ■ roleに応じてserviceを起動(例:dbロールであれば mysqlを起動) ■ タグにアプリ名が含まれていればアプリ固有のレシピ を実行
  • 21. Copyright Drecom Co., Ltd. All Rights Reserved. 開発ビルド用のジョブ ● マルチ構成プロジェクトにして、1つのジョブで同時に複数ビル ドが実行できるようにしてる ● Jenkins 2.0の新機能のpipelineを使いたいけど、複数のジョ ブのコンソールログが1ヶ所になって混ざってしまうので移行は してない
  • 22. Copyright Drecom Co., Ltd. All Rights Reserved. 開発ビルド用のジョブ 縦の軸はどのクラウドに対してプロビジョニングをするかどうか ● 対応するVagrantプラグインをインストールして ● vagrant up --provider=$PROVIDER みたいな感じで実行 $ P R O V I D E R
  • 23. Copyright Drecom Co., Ltd. All Rights Reserved. 開発ビルド用のジョブ 横の軸は使用するnodeファイル(設定ファイル) ● リポジトリにコミットしてるのはdefault.yml(role全無し)だけだ が、ビルド時にrolesを全部付与したyml(role_all.yml)を生成 してビルドを実行することにより、role全有り、全無しを両方テ ストしてる $NODE
  • 24. Copyright Drecom Co., Ltd. All Rights Reserved. イメージビルド用のジョブ ● プルダウンでパラメータを切り替えている ● 弊社だとサービス単位(費用が発生する請求単位)で AWSや IDCFのアカウントが複数分かれているので、作成先のアカウ ントを選択できるようにしてる ○ クラウドによってはアカウント間でのイメージ共有ができる ので不要なんだけど念のため
  • 25. Copyright Drecom Co., Ltd. All Rights Reserved. イメージビルド用のジョブ ● パラメータが多いけど、Rebuilder Pluginで一度使ったパラ メータを使いまわせるようにしてるので2回目以降はそんなに 大変ではない ○ https://wiki.jenkins-ci.org/display/JENKINS/Rebuild+Pl ugin ● イメージ作成に成功したらgitのtagを作り、かつイメージにも tagと同じ名前をつけることにより、イメージからどの時点の ソースコードを元にビルドしたかが特定できるようにしてる
  • 26. Copyright Drecom Co., Ltd. All Rights Reserved. イメージビルド用のジョブ git tags AMI
  • 27. Copyright Drecom Co., Ltd. All Rights Reserved. インフラCIのハマりどころ 1. ビルドが遅い 2. たまにビルドが落ちる
  • 28. Copyright Drecom Co., Ltd. All Rights Reserved. 1. ビルドが遅い ● VMの起動に1〜2分 ● itamaeを全部流し切るのにローカル実行で20分くらい、AWS のc3.largeで10分くらい ● Serverspecの実行は数分 ● 解決策は金の弾丸で殴るしかなさそうw
  • 29. Copyright Drecom Co., Ltd. All Rights Reserved. 何が遅いのか調べる ● itamae実行時に --profile をつければコマンド単位の実行時 間をjsonで出力してくれる ● jsonをparseして処理時間が長いものを抽出 ● ワーストランキングを出力するスクリプト ○ https://gist.github.com/sue445/96058bd109601b58f5a 81b826949135f
  • 30. Copyright Drecom Co., Ltd. All Rights Reserved. 調べた ● 36.90秒 yum -y install td-agent-2.3.1 ● 36.33秒 yum -y install openssl-devel ● 26.64秒 /usr/local/bin/gem update --force --no-document ● 19.99秒 yum -y install ImageMagick-6.7.8.9 ● 17.93秒 yum -y install tcpflow ● 17.33秒 yum -y install epel-release ● 15.76秒 yum -y install chrony-2.1.1 ● 15.13秒 yum -y install gcc-c++ ● 14.20秒 yum -y install autoconf ● 14.20秒 yum -y install mdadm
  • 31. Copyright Drecom Co., Ltd. All Rights Reserved. _人人人人人人人_ > yum install <  ̄Y^Y^Y^Y^Y^Y ̄
  • 32. Copyright Drecom Co., Ltd. All Rights Reserved. なぜ遅いか考察 ● rpmの取得と、取得したrpmをローカルにインストールする部 分のどっちが遅いかまでは検証してない ● packageを全部インストールした状態でイメージ化しておい て、roleによってserviceの起動のみを切り替えるというのは理 にかなってそう
  • 33. Copyright Drecom Co., Ltd. All Rights Reserved. 2. たまにビルドが落ちる 毎回2 x 3通りもテストをやってると1つだけビルドが落ちることが たまによくある(インフラCIガチャ)
  • 34. Copyright Drecom Co., Ltd. All Rights Reserved. インフラCIのビルドが落ちるケース ● VM起動に失敗 ● rsync中に固まる ○ 無限に止まるので他のジョブに影響するのでタイムアウト 30分に設定 ○ https://wiki.jenkins-ci.org/display/JENKINS/Build-timeo ut+Plugin ● AWSスポットインスタンスの価格高騰で起動に失敗 ○ $0.04に設定していればほぼ安全圏だけど、たまに$1超え るw ○ 高騰していないスペックやアベイラビリティゾーンを変えて 回避
  • 35. Copyright Drecom Co., Ltd. All Rights Reserved. インフラCIのビルドが落ちるケース ● レシピ実行中にプロセスが突然死ぬ ○ 何回実行しても再現するので調べたら、一部コマンドの標 準出力への書き込みをやめたらプロセスが死ななくなった ● rikenが調子悪くてyum install失敗 ● いずれの場合も失敗した内容によって偶然落ちたビルドなの でスルーするかどうか判断する必要がある(つらい) ● コンソールログの内容を見て判断する必要があるので、失敗 した時のために可能な限りログは全部出しておく
  • 36. Copyright Drecom Co., Ltd. All Rights Reserved. おまけ1:テスト駆動インフラ アプリ開発でよく使われるTDD (Test Driven Development = テ スト駆動開発) をインフラにも適用することができる 1. インフラの確認項目をServerspecでテストを書く 2. 期待したエラーが出ることを確認 (Red) 3. サーバで適用したいitamaeのコードを書く 4. テストが通っていることを確認 (Green) 5. ダメなら3に戻る 6. 必要ならリファクタリング (Refactoring) ● VagrantとVirtualBoxを使うと手軽にVMを作り直せるのでイン フラTDDしやすい
  • 37. Copyright Drecom Co., Ltd. All Rights Reserved. テスト駆動インフラでも黄金の回転を http://www.slideshare.net/t_wada/the-spirit-of-tdd/27
  • 38. Copyright Drecom Co., Ltd. All Rights Reserved. おまけ2:Jenkins運用 ● Jenkinsサーバ構築自体もitamaeで行ってる ○ コマンド1つで必要なミドル一式(jenkins, nginx, vagrant, packer, virtualbox辺り)全部入るようになってる ● webから設定する部分(インストールしてるプラグインとか)は 全部社内confluenceにまとめた ● バックアップ ○ 1日1回 https://github.com/sue445/jenkins-backup-script を定期実 行して設定やプラグイン一式をtarに保存 ○ tarを物理的に別の所にあるバックアップサーバに転送 ○ Jenkinsマシンがいつ死んでもすぐに復旧できるようになってる ○ Jenkins本体やプラグインのアップデート前にバックアップしておくとす ぐに戻せて安心
  • 39. Copyright Drecom Co., Ltd. All Rights Reserved. 最後に ● 複数のクラウドに対するインフラCIの事例はあまり見ないの で、参考になったら幸いです