DevOps with Cloud services

38
ももももももももももももももももももももも DevOps by GitHub and Cloud services Yoichiro Shimizu @budougumi0617

Transcript of DevOps with Cloud services

もくもく完全自動化開発プロセスお見せします

DevOpsby GitHuband Cloud servicesYoichiro Shimizu@budougumi0617

この LT でわかること• クラウドサービスを組み合わせるとどんな開発プロセスが構築できるのか

紹介するサービスは全て無料です※ オープンソース適用時※MS Azure は試用枠

今日のお題• Webアプリケーション• リリース先:クラウドサーバ

•     and         to

開発時に遭遇するあるある

誰かが知らないうちに本番コードが変更していた

最新コードを使うとテストケースが通らない

最新コードとマージしたらビルドできなくなった

手順書通りに環境インストールしたのに起動しない

同じ手順書見て構築したのに挙動が違う

クリーンインストールしたいけど手順が複雑なので後回し

◯ さん環境だと動くらしいが自分の環境では動かない

デバッグ時に環境設定変更どこを変更したか忘れた

◯ さんが休みなのでリリースできません

なんとかしないと

人が作業するからミスや差異が発生する

コードの変更と変更の承認以外を

全て自動化してみた

構築した構成• https://github.com/budougumi0617/DevOpsForGolang

Docker Hub

Docker Cloud

コード管理 リリース管理

本番環境

変更評価

監視 &監視

監視 &

変更

通知

コード取得

デプロイ

取得

リリース登録

各クラウドサービスの概要

GitHub

• ソースコードの構成管理サービス• 970 万ユーザー /2000 万プロジェクト

(2015/6 時点 )• Wiki ・障害票・変更依頼の管理なども可能

• https://github.com/

Travis CI

• クラウドにある Jenkins のようなサービス

• 自動ビルド・自動テスト

• ビルド成果物のデプロイなども可能

• https://travis-ci.org/

Coveralls

• テストカバレッジ集計• テスト実行行の可視化• https://coveralls.io/

Code climate

• 自動静的解析 /ファイル別品質評価• https://codeclimate.com/

  + + + 連携• ソースコード構成管理・障害票 /修正依頼管理• コード修正依頼は全て自動ビルド・テスト

• ビルド・テスト失敗時はマージさせない

• 指定カバレッジ率以下の変更はマージさせない

• 静的解析エラー時はマージさせない

Docker 技術

• コンテナ型仮想化技術

• 仮想マシン (VM) の構成をコードで定義

• いつでもどこでも同じ環境をつくれる

Docker Hub

• VM(Docker)イメージのバージョン管理サービス

• 主要 OSS/ 言語の環境構築済公式イメージ多数

• https://hub.docker.com

Docker Cloud• Hub 上の VM イメージ更新時に本番環境へ自動リリース

• サーバのクラスタ構成管理や VM 間連携管理なども可能

• 2016/02 Tutum よりリブランド https://cloud.docker.com

Microsoft Azure

• クラウドサーバサービス• 今なら毎月 3,000 円分 /12 ヶ月間の試用可能

• https://my.visualstudio.com

構築した構成• https://github.com/budougumi0617/DevOpsForGolang

Docker Hub

Docker Cloud

コード管理 リリース管理

本番環境

自動評価

監視 &監視

監視 &

変更

通知

コード取得

デプロイ

取得

リリース登録

具体的な構築方法については来月ハンズオンで解説します

Demonstration

まとめ• クラウドサービスを組み合わせて自動開発プロセスを作ってみました• 詳しいことは来月のハンズオンで

Have a nice development

構成情報

• コード構成管理 GitHubhttps://github.com/budougumi0617/DevOpsForGolang

• リリース物構成管理 DockerHubhttps://hub.docker.com/r/budougumi0617/devopsforgolang

• 継続的インテグレーション Travis CIhttps://travis-ci.org/budougumi0617/DevOpsForGolang

• テストカバレッジ Coverallshttps://coveralls.io/github/budougumi0617/DevOpsForGolang

Go 言語

• Google が作った新興開発言語 (2009-)• 手続き型 / 軽量スレッディング / 開発者フレ

ンドリー

• 公式キャラの Gopher くんが可愛い

Alpine Linux

• セキュアで軽量な Linux ディストリビューション

• Docker イメージのサイズが 1/10 くらいになる

• 素だとサイズが 5MB 強

できたこと 1

• ソースコード /障害票 (Issue)/レビュー依頼 (pull req)の管理• 修正コードを使ったビルド /テスト自動実行• テストで実行されたコードの行を自動可視化• テストのカバレッジ率自動計算• レビュー合格コードは自動マージ• 自動マージ後はリリースオブジェクト自動生成

できたこと 2

• リリースオブジェクト管理• 仮想動作環境 (VM)は毎回コードで新規作成• リリースオブジェクトは

VMイメージ+アプリをパッケージング• リリースオブジェクト更新時はサーバへ自動デプロイ