NoOps Meetup Tokyo #5 https://noops.connpass.com/event/123494/ での登壇資料
1CircleCI 2.0を支えるインフラとSREの役割#kimhirokuni #circlecijp
View Slide
21.0からの移行ありがとうございました!!● LXCベースのCI/CD● コンテナを使ったCI/CDのパイオニア● 先日RIPされた
3CircleCI 2.0について1日120万ビルドのCI/CDプラットフォーム
4技術編: 2つのクラスター組織編: SREチームの紹介
5自己紹介Kim, Hirokuni (金 洋国)● CircleCI Japan Tech Lead● 日本支社の立ち上げ● カンファレンス登壇● 採用活動● 記事執筆● コミュニティー運営”この発言は個人の見解ではなく所属する組織を代表しています”Twitter: https://twitter.com/kimhirokuni
6おまえSREのこと話せんの?
7自己紹介”この発言は個人の見解ではなく所属する組織を代表しています”Kim, Hirokuni (金 洋国)● CircleCI Japan Tech Lead● 日本支社の立ち上げ● カンファレンス登壇● 採用活動● 記事執筆● コミュニティー運営● 元プロダクトチーム● 現SREチームTwitter: https://twitter.com/kimhirokuni
8宣伝 (会社)● 日本語サポート● ドキュメントの日本語化● ユーザーコミュニティーCircleCI初の海外支社@CircleCIJapanFB Community Group
9宣伝 (個人)海外で大流行の電動キックボードを体験できるサービス Hop-on! を運営● 日本で唯一のサービス(のはず)● みなとみらいで体験できます● 続きはhttps://hop-on.jpで!
10技術編: 2つのクラスター組織編: SREチームの紹介
11CircleCI 2.0のアーキテクチャ概要● マイクロサービス● AWS● Clojure, Go, TypeScript● コンテナベース● Kubernetes/Nomad ← 今日はココの話
122つのクラスター● Kubernetes○ マイクロサービスが動いている● Nomad○ ビルド実行のマシン二つを分けることでセキュリティーを担保している
13クラスター間通信
14Kubernetes● 全てのマイクロサービスが動いている● CoreOS● EC2● Terraformで管理
15Nomad 概要● Servers -> k8s master nodes● Clients -> k8s worker nodes● バッチジョブ● ここでビルドが実行される● 1 コンテナ = 1 Nomad Job
16コンテナ == Nomad Job
17Nomad ズームイン
18ビルドが実行されるまで● ビルドリクエスト● Nomad Jobが作られる● Dockerコンテナの起動● Goで書かれたAgent起動● ビルドのコマンドを逐次実行● ビルドのログをK8sのサービスへ送信
19なぜNomadか?● Nomadはバッチ処理がk8sより得意だった (2016年の時点)● 現時点ではk8sもよくなっている (らしい)● シンプルなアーキテクチャー (単一Goバイナリ)● Hashicorp Toolとの親和性 (ConsulやTerraformなど)詳しくは https://speakerdeck.com/kimh/cdpuratutohuomu
20技術編: 2つのクラスター組織編: SREチームの紹介
21SREチーム構成● 現在9人のチーム● 4カ国にまたがる● 時差きつい
22ボーイング方式● 時差の有効活用● 継続的なペアリング● 障害時対応
23コミュニケーション● 基本はSlackを使っている● 情報量が多い話はZoom● 100ワードのSlackより10秒のZoom● 1年に一回のAll Hands● 半年に一回のチームごとのSmall Hands
24SREの役割● 安定したインフラの運用● プロダクトの開発に集中できるようにサポート● プロダクトエンジニアとのペアリング・コードレビュー● 障害対応 (日本時間は障害少ない)
25障害対応フロー#investigation障害の可能性あり
26障害対応フロー#investigation #incident故障かな?と思ったら - ユーザー影響あり- 障害用のZoom開始- @メンションされる
27障害対応フロー#investigation #incident https://status.circleci.com故障かな?と思ったら - ユーザー影響あり- 障害用のZoom開始- @メンションされる
28障害対応フロー#investigation #incident https://status.circleci.comIncident CommanderNote Taker 任命故障かな?と思ったら - ユーザー影響あり- 障害用のZoom開始- @メンションされる役割分担 (後述)
29障害対応フロー#investigation #incident https://status.circleci.comIncident CommanderNote Taker 任命20分ごとにアップデート故障かな?と思ったら - ユーザー影響あり- 障害用のZoom開始- @メンションされる役割分担 (後述)- できるだけリアルタイム情報- バナーに表示される
30障害対応フロー#investigation #incident https://status.circleci.comIncident CommanderNote Taker 任命20分ごとにアップデート故障かな?と思ったら - ユーザー影響あり- 障害用のZoom開始- @メンションされる役割分担 (後述)- できるだけリアルタイム情報- バナーに表示される- 30分様子見- 問題なければクローズ
31Incident Commander と Note TakerIncident Commander (現場指揮官)● 障害復旧のために必要なチームを動かす● SREがなることが多いけど、SREとは限らないNote Taker (記録係)● 20分ごとにアップデートを届ける● 時系列をまとめる● zoomのレコーディング
32Postmortem == 検死解剖 == 反省会Postmortem準備● 障害報告書のPRを作成● 関係者のミーティングセットアップPostmortem中● PRをレビュー● Note Takerの事実ベースの分析● 障害宣言は適切なタイミングだったか?● どうやれば障害を防げたか?● PRをマージ
33おわりに
34今後の課題: ホスティング型k8sサービスへの移行メリット● GKEの機能が豊富● GCP安いデメリット● AWSからの移行メリット● 移行なし● 学習コスト低いデメリット● 機能面でGKEに劣る
35今後の課題: チームの拡大● Platform Engineeringの設立● SREチームの拡大● プロアクティブなSRE業
36WE ARE HIRING!
37SRE Team in Japanこんな人募集● CircleCIに興味がある● 大規模インフラを面倒みたい● コンテナをガチでやりたい● 海外のチームと働きたい
Thank you.38Optional Name