Slide 1

Slide 1 text

有志で組織横串に挑む - GitLab CI Runnerカイゼン - 株式会社アイリッジ 斎藤辰徳

Slide 2

Slide 2 text

斎藤辰徳 (HN: bbrfkr) Hello! 2 所属:株式会社アイリッジ ミッション ● OMOモバイルアプリ実行基盤開発 ○ バックエンド ○ クラウドインフラ (主にAWS)

Slide 3

Slide 3 text

自キー沼のご紹介 3

Slide 4

Slide 4 text

? ◉ 事業 ○ OMO(Online Merges with Offline)ソリューション開発 ○ OMOアプリの企画・開発 ◉ 技術 ○ インフラ開発・運用 → AWS × コンテナ がメイン ○ Managed Serviceを積極活用したCloud Architecture ○ ECS CLI v1 の国内トップレベルでの利用 AWS Fargate 4 Amazon ECS Amazon ECR Amazon Aurora Amazon Cognito AWS Lambda

Slide 5

Slide 5 text

Agenda 5 ◉ 弊社GitLabおよびCI環境の課題 ◉ 有志で構成された横串プロジェクトのご紹介 ◉ GitLab Runnerカイゼン ◉ 弊社GitLabの今後の展望 ◉ まとめ

Slide 6

Slide 6 text

弊社GitLabおよびCI環境の課題 6

Slide 7

Slide 7 text

All in One問題 7 ◉ ほぼ全てのコンポーネントが一つのVMに?! gitaly gitlab-rails sidekiq static-data nginx postgresql redis 何故かredisだけ 外出し?!

Slide 8

Slide 8 text

Runner非効率問題 8 ◉ 社内共有Runnerの管理者が不在

Slide 9

Slide 9 text

◉ 各PJで大小様々な、固有Group Runnerが乱立 共有Runner Runner非効率問題 9 A PJ B PJ X PJ Y PJ

Slide 10

Slide 10 text

◉ All in One問題 ◉ Runner非効率問題 弊社GitLabおよびCI環境の課題 10 今回はこちらに対応した話

Slide 11

Slide 11 text

有志で構成された 横串プロジェクトのご紹介 11

Slide 12

Slide 12 text

Development Crossover PJ 12 ◉ 課題感 ○ 担当案件の知見を社内での共有知に中々ならない ○ 共有資産の責任所在と管理主体が曖昧になりがち 組織横断の課題に 開発者として挑む!

Slide 13

Slide 13 text

DC PJでやってきたこと 13 ◉ PM陣へ向けた技術資料作成 ○ Slackインテグレーションの設定と仕組み解説 ○ CloudWatchの分析ノウハウまとめ ◉ OpenAPI仕様準拠のモックサーバテンプレート ◉ 社内共有GitLab Runnerの集中管理・ビルド速度改善

Slide 14

Slide 14 text

GitLab Runnerカイゼン 14

Slide 15

Slide 15 text

解決したい課題とやったこと 15 ◉ 課題 ○ 社内共有Runnerの管理者不在 ○ PJ固有Group Runnerの乱立 ◉ やったこと ○ 社内共有Runnerの運用・管理簡素化 ○ 社内共有Runnerの管理主体のコミットメント

Slide 16

Slide 16 text

具体的には。。。 16

Slide 17

Slide 17 text

工夫したところ 17 ◉ コスト最適化 ◉ Runnerの障害検出 ◉ Runner破棄の事前処理 ◉ Docker Storageの性能最適化

Slide 18

Slide 18 text

コスト最適化 18 ◉ 地味だけど大事なこと ○ Spot Instanceの利用とリタイア対応 ○ 営業日以外の縮退スケジュール (EventBridge)

Slide 19

Slide 19 text

Runnerの障害検出 19 ◉ Docker Storageが一杯になるとRunnerが無応答に... ○ Root VolumeにDocker Storageを割り当てない ◉ Disk容量が一杯になりjobを捌けなくなる... ○ RunnerにStorageのメトリクスを送らせる ○ 容量が一定割合を超えたらRunner破棄 ○ 一定期間メトリクスが来なかったらRunner破棄

Slide 20

Slide 20 text

Runner破棄の事前処理 20 ◉ Runnerはお行儀よく死ぬ必要がある ○ 自分に対応するCloudWatchアラームの削除 ○ 自分をGitLab上から登録解除 ○ Slackに生きた証を残す

Slide 21

Slide 21 text

Docker Storageの性能最適化 21 ◉ インスタンスストアの活用 ○ お高いインスタンスじゃないと容量が足りない... ○ もう、普通にEBSでよくないかと思い始めた...

Slide 22

Slide 22 text

弊社GitLabの今後の展望 22

Slide 23

Slide 23 text

SaaSに移行したい 23

Slide 24

Slide 24 text

健全運用可能な状態を作る 24 ◉ 構成図の作成 ◉ 運用タスクの洗い出し ○ version upなど ◉ 運用タスクのドキュメンテーション

Slide 25

Slide 25 text

データサーバの分離 25 ◉ Aurora for PostgreSQL使いたい...けど...

Slide 26

Slide 26 text

GKE化 26 ◉ gitlab-railsなどの可用性担保 ◉ Kubernetes Executer

Slide 27

Slide 27 text

まとめ 27

Slide 28

Slide 28 text

まとめ 28 ◉ 弊社のGitLab、CIで考えていることのご共有 ○ 横串Projectの存在 ○ VM Runnerカイゼン(VM辛い... ○ 今後のGitLabの展望 ◉ もっとこうすれば...? というご意見お待ちしてます!

Slide 29

Slide 29 text

ご質問はお気軽にどうぞ ! ◉ twitter: bbrfkr ◉ mail: [email protected] Thanks! 29