サービス立ち上げ時のスモールDevOps
~ベストプラクティスを追い求めて~
2015/02/20 DevOps懇親会@東京 #1 継続的インテグレーション編
自己紹介
❖踊れるエンジニア
❖インタラクティブ・アーティスト
❖プロトタイパー
❖スーパーニート
伊藤 大要 @chuckb10
肩書き
名前
「立ち上げ時のDevOpsって どこまで考慮すべき??」
「最初は人も少ないし、後でやれば良いかなー」
ちょちょちょっと待って、オニーサン!!
引用元:modelpress
サービスのスケール開発メンバーの増員
Testの自動化 Deployの自動化
おびただしい仕様変更
次々と課せられる追加機能
Opsがボトルネックに・・・
スーパーアジャイル
MagnumCI
elastic beanstalk
slack
BitBucket
Dockerhub
ChatOps - チャットを起点に自動化
local machine
RSpec
pushnotification
pull
download
EC2
deploy
docker build
Test
notification
ruby2・Rails4
bitbucket
slack
docker
CI導入前
さくっと手軽に→時間がない
低コストで→お金がない
今の環境にfit→再構築はしたくない
検討ポイント
特徴❖2014年開始 ❖クラウドベースのVM上で実行 ❖ build前後でコマンドの実行が可能 ❖多少OSの環境変数も変更可能 ❖今は無料(betaだからか) ❖Hookからresultを取得可能 ❖Github,Bitbucket,Beanstalkapp,Gitlab,Self Hosted ❖ Ruby,Node,Go,PHP,Python ❖ RDS,KVS系 ❖ DeploymentはCapistrano,Heroku,Bash Script
MagnumCIRSpec
Test
Dockerhub
1. release branchへのpull requestをマージ2. CIでBitBucketのマージイベントのHookをキャッチし、Build Trigger
を叩いてBuild開始3. SuccessであればDocker HubのWebHookをCIでキャッチして、リ
ポジトリをPull & deploy
BitBucket
①
②
③
๏ サーバーの構築が不要 ๏ integrationが今時のサービスに対応している ๏ 無料 ๏ まだまだ伸びしろがありそう
Good Point
✓OSがubuntuのみ ✓ buildのキュー待ちがたまにひどい→1時間とか ✓毎回初期化されたVMから起動→構成によって
は実行時間が長くなってしまう
Bad Point
❖ Test環境内のdocker環境を本番と合わせたい ❖ slackから全てコマンドで完結する構成に ❖ ネイティブアプリとの兼ね合いを検討 ❖ やっぱりjenkinsおじさんか
検討項目