Slide 1

Slide 1 text

1 CircleCI 2.0を支えるインフラとSREの 役割 #kimhirokuni #circlecijp

Slide 2

Slide 2 text

2 1.0からの移行ありがとうございました!! ● LXCベースのCI/CD ● コンテナを使ったCI/CDのパイオニア ● 先日RIPされた

Slide 3

Slide 3 text

3 CircleCI 2.0について 1日120万ビルドのCI/CDプラットフォーム

Slide 4

Slide 4 text

4 技術編: 2つのクラスター 組織編: SREチームの紹介

Slide 5

Slide 5 text

5 自己紹介 Kim, Hirokuni (金 洋国) ● CircleCI Japan Tech Lead ● 日本支社の立ち上げ ● カンファレンス登壇 ● 採用活動 ● 記事執筆 ● コミュニティー運営 ”この発言は個人の見解ではなく所属する組 織を代表しています” Twitter: https://twitter.com/kimhirokuni

Slide 6

Slide 6 text

6 おまえSREのこと話せんの?

Slide 7

Slide 7 text

7 自己紹介 ”この発言は個人の見解ではなく所属する組 織を代表しています” Kim, Hirokuni (金 洋国) ● CircleCI Japan Tech Lead ● 日本支社の立ち上げ ● カンファレンス登壇 ● 採用活動 ● 記事執筆 ● コミュニティー運営 ● 元プロダクトチーム ● 現SREチーム Twitter: https://twitter.com/kimhirokuni

Slide 8

Slide 8 text

8 宣伝 (会社) ● 日本語サポート ● ドキュメントの日本語化 ● ユーザーコミュニティー CircleCI初の海外支社 @CircleCIJapan FB Community Group

Slide 9

Slide 9 text

9 宣伝 (個人) 海外で大流行の電動キックボードを体験できるサービス Hop-on! を運営 ● 日本で唯一のサービス(のはず) ● みなとみらいで体験できます ● 続きはhttps://hop-on.jpで!

Slide 10

Slide 10 text

10 技術編: 2つのクラスター 組織編: SREチームの紹介

Slide 11

Slide 11 text

11 CircleCI 2.0のアーキテクチャ概要 ● マイクロサービス ● AWS ● Clojure, Go, TypeScript ● コンテナベース ● Kubernetes/Nomad ← 今日はココの話

Slide 12

Slide 12 text

12 2つのクラスター ● Kubernetes ○ マイクロサービスが動いている ● Nomad ○ ビルド実行のマシン 二つを分けることでセキュリティーを担保している

Slide 13

Slide 13 text

13 クラスター間通信

Slide 14

Slide 14 text

14 Kubernetes ● 全てのマイクロサービスが動いている ● CoreOS ● EC2 ● Terraformで管理

Slide 15

Slide 15 text

15 Nomad 概要 ● Servers -> k8s master nodes ● Clients -> k8s worker nodes ● バッチジョブ ● ここでビルドが実行される ● 1 コンテナ = 1 Nomad Job

Slide 16

Slide 16 text

16 コンテナ == Nomad Job

Slide 17

Slide 17 text

17 Nomad ズームイン

Slide 18

Slide 18 text

18 ビルドが実行されるまで ● ビルドリクエスト ● Nomad Jobが作られる ● Dockerコンテナの起動 ● Goで書かれたAgent起動 ● ビルドのコマンドを逐次実行 ● ビルドのログをK8sのサービスへ送信

Slide 19

Slide 19 text

19 なぜNomadか? ● Nomadはバッチ処理がk8sより得意だった (2016年の時点) ● 現時点ではk8sもよくなっている (らしい) ● シンプルなアーキテクチャー (単一Goバイナリ) ● Hashicorp Toolとの親和性 (ConsulやTerraformなど) 詳しくは https://speakerdeck.com/kimh/cdpuratutohuomu

Slide 20

Slide 20 text

20 技術編: 2つのクラスター 組織編: SREチームの紹介

Slide 21

Slide 21 text

21 SREチーム構成 ● 現在9人のチーム ● 4カ国にまたがる ● 時差きつい

Slide 22

Slide 22 text

22 ボーイング方式 ● 時差の有効活用 ● 継続的なペアリング ● 障害時対応

Slide 23

Slide 23 text

23 コミュニケーション ● 基本はSlackを使っている ● 情報量が多い話はZoom ● 100ワードのSlackより10秒のZoom ● 1年に一回のAll Hands ● 半年に一回のチームごとのSmall Hands

Slide 24

Slide 24 text

24 SREの役割 ● 安定したインフラの運用 ● プロダクトの開発に集中できるようにサポート ● プロダクトエンジニアとのペアリング・コードレビュー ● 障害対応 (日本時間は障害少ない)

Slide 25

Slide 25 text

25 障害対応フロー #investigation 障害の可能性あり

Slide 26

Slide 26 text

26 障害対応フロー #investigation #incident 故障かな?と思ったら - ユーザー影響あり - 障害用のZoom開始 - @メンションされる

Slide 27

Slide 27 text

27 障害対応フロー #investigation #incident https://status.circleci.com 故障かな?と思ったら - ユーザー影響あり - 障害用のZoom開始 - @メンションされる

Slide 28

Slide 28 text

28 障害対応フロー #investigation #incident https://status.circleci.com Incident Commander Note Taker 任命 故障かな?と思ったら - ユーザー影響あり - 障害用のZoom開始 - @メンションされる 役割分担 (後述)

Slide 29

Slide 29 text

29 障害対応フロー #investigation #incident https://status.circleci.com Incident Commander Note Taker 任命 20分ごとにアップデート 故障かな?と思ったら - ユーザー影響あり - 障害用のZoom開始 - @メンションされる 役割分担 (後述) - できるだけリアルタイム情報 - バナーに表示される

Slide 30

Slide 30 text

30 障害対応フロー #investigation #incident https://status.circleci.com Incident Commander Note Taker 任命 20分ごとにアップデート 故障かな?と思ったら - ユーザー影響あり - 障害用のZoom開始 - @メンションされる 役割分担 (後述) - できるだけリアルタイム情報 - バナーに表示される - 30分様子見 - 問題なければクローズ

Slide 31

Slide 31 text

31 Incident Commander と Note Taker Incident Commander (現場指揮官) ● 障害復旧のために必要なチームを動かす ● SREがなることが多いけど、SREとは限らない Note Taker (記録係) ● 20分ごとにアップデートを届ける ● 時系列をまとめる ● zoomのレコーディング

Slide 32

Slide 32 text

32 Postmortem == 検死解剖 == 反省会 Postmortem準備 ● 障害報告書のPRを作成 ● 関係者のミーティングセットアップ Postmortem中 ● PRをレビュー ● Note Takerの事実ベースの分析 ● 障害宣言は適切なタイミングだったか? ● どうやれば障害を防げたか? ● PRをマージ

Slide 33

Slide 33 text

33 おわりに

Slide 34

Slide 34 text

34 今後の課題: ホスティング型k8sサービスへの移行 メリット ● GKEの機能が豊富 ● GCP安い デメリット ● AWSからの移行 メリット ● 移行なし ● 学習コスト低い デメリット ● 機能面でGKEに劣る

Slide 35

Slide 35 text

35 今後の課題: チームの拡大 ● Platform Engineeringの設立 ● SREチームの拡大 ● プロアクティブなSRE業

Slide 36

Slide 36 text

36 WE ARE HIRING!

Slide 37

Slide 37 text

37 SRE Team in Japan こんな人募集 ● CircleCIに興味がある ● 大規模インフラを面倒みたい ● コンテナをガチでやりたい ● 海外のチームと働きたい

Slide 38

Slide 38 text

Thank you. 38 Optional Name