GitHub X CircleCI で実現する DevOps に行ってきました。簡単に所感をまとめます。
所感
GitHub と CircleCI のような CI ツールを組み合わせることで、コードやレビューをオープンにして、開発サイクルを早く安全に回すことができるというのがポイントなんだろうと思われます。今回はどちらかと言えば入門的な内容だったかと思いますが、資料やデモがあってとても分かりやすかったです。テストがなければ CI の意味はあまりないかと思ってましたが、日常の手作業を自動化するだけでも CI と言えるというのは目から鱗でした。
早速、CircleCI を試してみようかな。ちなみに CircleCI は、Jenkins や Concourse とはどこらへんが違うんだろうか。そのあたり聞いてみればよかったか...。
以下、メモから抜粋。ただ、話を聴くのに集中しててちゃんとメモが取れてません...。スライドが公開されたらリンクを貼っておきます。
(2019/02/06 CircleCI のスライドを追記しました)
GitHubとCircleCIで実現するDevOps
- DevOps の背景
- 開発スピードをあげたい / 改善サイクルを回したい
- サービスの安定性や信頼性は保ちたい
- 開発サイクルを安定して高速に回す
- DevOps を実践している企業としていない企業の違い☆
- DevOps の原則☆
- 開発チームとインフラチームには壁がある
- 目指しているものが違う (改善 / 安定)
- 「失敗をなくす」から「失敗を早く見つけて直す」にマインドをシフトする
- 個々の変更は小さくする
- 計測によって問題を早期に発見する
- 開発チームとインフラチームには壁がある
- CI/CD
- CI とは☆
- 共通のテストを実行できるメリットがある
- CI でできること☆
- テスト、ビルド、静的コード解析、脆弱性チェック、テストサマリー
- テストがなくても CI はできる
- 作業を自動化するだけでも CI と言える
- CI が解決する問題☆
- 実行するテストの粒度は設定で制御できる
- 静的解析によるコードの標準化
- テストが失敗するコードをマージブロックして master ブランチを安全に保つ
- CD とは☆
- デリバリは環境への資産の配備のみ
- デプロイには人間の手が入る
- そこを自動化すると継続的デプロイメントと言える
- デプロイ作業を自動化することで属人化やヒューマンエラーを防ぐ
- 最近は CI/CD の設定をコードで書く (バージョン管理できる)
- GitHub☆
- オープンソース的な開発の仕方 (InnerSource) を企業の中で実践する
- 議論やアクティビティを GitHub 上で
- 組織内で知識や専門性を共有する
- GitHub Flow
- PR のメリット☆
- さまざまな議論やフィードバック
- 開発の透明性をあげる
- PR に CI を組み込む
- レビューとテストが通るものをマージする
- 早い段階でエラーに気が付くことができる
- CircleCI の最新機能
- ワークフロー (パイプライン)
- スケジューリング、承認
- Docker サポート
- 2.0 ではいちばん推してる
- VM による CI より高速にビルド可能
- 本番環境のコンテナと同じ環境でビルドできる
- 多言語サポート
- Docker イメージがサポートしている言語であれば使える
- テスト環境を統一 (yaml)
- 設定をコードで書くことでバージョン管理できる
- SSH デバッグ
- ビルドしたコンテナをキャッシュしておいて ssh でログインできる
- テストの再現やコード修正ができる (修正をそのままpushできるわけではない)
- デプロイ
- 主要なプラットフォームにデプロイ可能
- Orbs
- config をパッケージ化 (共通化) できる
- ワークフロー (パイプライン)
- GitHub の中でもある程度は CircleCI の情報は見れる
- レビューとビルドが通ったものだけ master にマージできるなどの制御が可能
- GitHub Actions
- GitHub 上のイベントをトリガーにしてワークフローを実行する
- アクションは Docker コンテナで定義
- 簡易な CI/CD はできる
- CI/CD ツールと共存するものという位置付け
- CI/CD 以外の日常の作業を自動化する
- CircleCI Japan
- 日本のマーケットは大きい (日本のユーザーが多い)
- 海外拠点としては日本が初めて
- 日本語サポート
- ドキュメントの日本語化
- あとで読む
ユーザー事例 (サイボウズ)
www.slideshare.net
- 国内DC & AWS
- 最近はクラウドサービスの活用が多くなってきた
- オンプレ開発基盤は導入、運用、外部クラウドサービスとの連携が面倒
- クラウド開発基盤は社内ネットワークと連携しにくい
- GitHub 導入
- svn から移行
- master を壊さずにレビューできる
- PR
- 変更理由やレビューの経緯がオープンになる
- チーム外から PR できたり
- svn から移行
- CircleCI 導入
- Jenkins から移行
- コンテナ内ビルド
- CircleCI 公式 Docker イメージが使える
- GitHub 連携
- Performance Pricing Plan (従量課金)
- コンテナ数の課金より無駄がない
- DevOpsQA
- インフラも継続的に
- 1日1回 CI で VPC を削除して再構築
- ゼロから環境を作成できることを保証する