Save 37% off PRO during our Black Friday Sale! »

有志で組織横串に挑む - GitLab CI Runnerカイゼン -

2b41772cec40855d563406ca89fdf926?s=47 bbrfkr
October 10, 2021

有志で組織横串に挑む - GitLab CI Runnerカイゼン -

2b41772cec40855d563406ca89fdf926?s=128

bbrfkr

October 10, 2021
Tweet

Transcript

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

  2. 斎藤辰徳 (HN: bbrfkr) Hello! 2 所属:株式会社アイリッジ ミッション • OMOモバイルアプリ実行基盤開発 ◦

    バックエンド ◦ クラウドインフラ (主にAWS)
  3. 自キー沼のご紹介 3

  4. ? ◉ 事業 ◦ 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
  5. Agenda 5 ◉ 弊社GitLabおよびCI環境の課題 ◉ 有志で構成された横串プロジェクトのご紹介 ◉ GitLab Runnerカイゼン ◉

    弊社GitLabの今後の展望 ◉ まとめ
  6. 弊社GitLabおよびCI環境の課題 6

  7. All in One問題 7 ◉ ほぼ全てのコンポーネントが一つのVMに?! gitaly gitlab-rails sidekiq static-data

    nginx postgresql redis 何故かredisだけ 外出し?!
  8. Runner非効率問題 8 ◉ 社内共有Runnerの管理者が不在

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

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

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

  12. Development Crossover PJ 12 ◉ 課題感 ◦ 担当案件の知見を社内での共有知に中々ならない ◦ 共有資産の責任所在と管理主体が曖昧になりがち

    組織横断の課題に 開発者として挑む!
  13. DC PJでやってきたこと 13 ◉ PM陣へ向けた技術資料作成 ◦ Slackインテグレーションの設定と仕組み解説 ◦ CloudWatchの分析ノウハウまとめ ◉

    OpenAPI仕様準拠のモックサーバテンプレート ◉ 社内共有GitLab Runnerの集中管理・ビルド速度改善
  14. GitLab Runnerカイゼン 14

  15. 解決したい課題とやったこと 15 ◉ 課題 ◦ 社内共有Runnerの管理者不在 ◦ PJ固有Group Runnerの乱立 ◉

    やったこと ◦ 社内共有Runnerの運用・管理簡素化 ◦ 社内共有Runnerの管理主体のコミットメント
  16. 具体的には。。。 16

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

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

  19. Runnerの障害検出 19 ◉ Docker Storageが一杯になるとRunnerが無応答に... ◦ Root VolumeにDocker Storageを割り当てない ◉

    Disk容量が一杯になりjobを捌けなくなる... ◦ RunnerにStorageのメトリクスを送らせる ◦ 容量が一定割合を超えたらRunner破棄 ◦ 一定期間メトリクスが来なかったらRunner破棄
  20. Runner破棄の事前処理 20 ◉ Runnerはお行儀よく死ぬ必要がある ◦ 自分に対応するCloudWatchアラームの削除 ◦ 自分をGitLab上から登録解除 ◦ Slackに生きた証を残す

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

  22. 弊社GitLabの今後の展望 22

  23. SaaSに移行したい 23

  24. 健全運用可能な状態を作る 24 ◉ 構成図の作成 ◉ 運用タスクの洗い出し ◦ version upなど ◉

    運用タスクのドキュメンテーション
  25. データサーバの分離 25 ◉ Aurora for PostgreSQL使いたい...けど...

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

  27. まとめ 27

  28. まとめ 28 ◉ 弊社のGitLab、CIで考えていることのご共有 ◦ 横串Projectの存在 ◦ VM Runnerカイゼン(VM辛い... ◦

    今後のGitLabの展望 ◉ もっとこうすれば...? というご意見お待ちしてます!
  29. ご質問はお気軽にどうぞ ! ◉ twitter: bbrfkr ◉ mail: bbrfkr@gmail.com Thanks! 29