Upgrade to Pro — share decks privately, control downloads, hide ads and more …

インフラ専任者・チームがいない組織で 開発ワークフローの継続的改善に挑戦してみた / Challenge to improve development workflow

chiroru
March 30, 2023

インフラ専任者・チームがいない組織で 開発ワークフローの継続的改善に挑戦してみた / Challenge to improve development workflow

CI/CD Conference 2023
chiroru & Kousuke Ida & trowemsによる発表資料です。

https://event.cloudnativedays.jp/cicd2023/talks/1780

chiroru

March 30, 2023
Tweet

Other Decks in Technology

Transcript

  1. 今日話すこと • 前提説明 (chiroru) ◦ 私たちが開発ワークフロー改善に取り組むことになった背景 ◦ 手始めにフロントエンド改善に取り組んだ話 ◦ 状況説明(バックエンド、CI)

    • 実際の改善内容 (Kousuke Ida) ◦ 1. Renderの検証 ◦ 2. Heroku v.s. Render ◦ 3. CIの見直し ◦ 番外編. 当社のOSS活動 • まとめ (chiroru) ◦ 番外 (trowems)
  2. 私たちについて • 企業のIR部門や金融機関向けのサービスを作っているスタートアップ • 正社員の開発者が5人しかいない小規模開発組織。 ◦ 全員が新規機能開発実装者 ◦ インフラ専任のエンジニアがいない •

    立ち上げ当初から関わっていた開発者は、全員退職済み。資料が残っていない機能が多い。技術 負債も山ほどある。 ◦ ブログ参照 https://qiita.com/msetsu/items/cdab9c841d96cd4aa4c1 • ビジネス上の非機能要件の明確化、チーム内での信頼性を少しでも上げたい機運、trowems参画 が重なり、SREチームが2022年12月に立ち上がって、Kousuke Idaとchiroruが改善に尽力してい る。
  3. CI/CDの原則 開発チームのパフォーマンスを示す指標 Four Keys • デプロイの頻度 - 組織による正常な本番環境へのリリースの頻度 • 変更のリードタイム

    - commit から本番環境稼働までの所要時間 • 変更障害率 - デプロイが原因で本番環境で障害が発生する割合(%) • サービス復元時間 - 組織が本番環境での障害から回復するのにかかる時間 https://cloud.google.com/blog/ja/products/gcp/using-the-four-keys -to-measure-your-devops-performance?hl=ja
  4. CI(改善前) • Ruby on Rails / React プロジェクト内には、4年前に導入された状態のRuboCop の設定ファイルが存在 ◦

    設定ファイルの更新を行ったが、実行は任意 • 不安定なテストが存在しており、単体結合テストが50%程度の確率で落ちる ◦ Flaky Testをトラッキングできず、修正が進まない • テストカバレッジを計測していなかったため、トレンドを認識できない
  5. バックエンド環境(変更前) • Herokuを利用 ◦ Heroku BuildpackとRelease, GitHub Integrationにより安定的なCD (CDeployment) ◦

    Herokuのオペレーティングシステムイメージである Stack(非Docker)に強く依存 ◦ VPC Peeringのネットワークレイヤーの複雑性が残ったまま • オレオレデプロイ問題 ◦ もともとHerokuではGitHub Integrationを使っていた(〜2022/4) ◦ 2022/4のHeroku Credentialsの漏洩問題 https://blog.heroku.com/april-2022-incident-review を受けてGitHub Actionsを利用した Herokuへのデプロイをするようにしていた(= オレオレデプロイ問題) ▪ Credentialsなどの管理対象の増加とActions minutesの浪費が問題
  6. 1. Renderの検証 そもそもRenderとは・・・? • KubernetesベースのPaaS • HerokuのWeb dyno, Worker dynoと同等の機能

    • Cron式でスケジューリングしてJobを実行できる • 静的サイト、プライベートサービス等も充実している • チーム単位で、固定アウトバウンドIPをもっている
  7. HerokuからRenderへ移行完了🎉 • RenderはSyslogの出力をサポート • 私達はHerokuでPapertrailを使っていた ◦ PapertrailはSyslogにも対応している → そのまま使える! •

    HerokuではOne-offなジョブのログをPapertrailに残していなかった ◦ Render移行で対応し、全体の見通しが良くなった
  8. 2. HerokuとRenderの比較 Heroku • 洗練されたビルダーやランタ イム • アドオンが充実している • 日本語での手厚いサポート

    • 開発環境-本番環境のパイプ ラインを作成できる • UIが親切 Render • 後発だからこそのナウでヤン グな機能(IaC,コンテナランタ イム) • 低価格で最低限の機能 • 将来性 V.S.
  9. CD面の比較 Heroku Render GitHub Integration 対応 対応 リリース毎のビルド回数 1アプリ(サービスN個)で1回 NこのサービスでN回

    リリース時にコマンド実行 リリースフェーズで実行 難あり ビルドのキャッシュ効率 高効率 非効率
  10. CD面の比較 Heroku Render GitHub Integration 対応 対応 リリース毎のビルド回数 1アプリ(サービスN個)で1回 NこのサービスでN回

    リリース時にコマンド実行 リリースフェーズで実行 難あり ビルドのキャッシュ効率 高効率 非効率
  11. CD面の比較 Heroku Render GitHub Integration 対応 対応 リリース毎のビルド回数 1アプリ(サービスN個)で1回 NこのサービスでN回

    リリース時にコマンド実行 リリースフェーズで実行 難あり ビルドのキャッシュ効率 高効率 非効率
  12. PaaS変更での私たちのFour Keysの差分 Heroku時代 → Render移行後 デプロイの頻度 変わりなし 変更のリードタイム 10分から25分程度へ増加 変更障害率

    変わりなし サービス復元時間 ネットワークレイヤー : 改善 アプリケーションレイヤー : 悪化
  13. 継続的な改善 • CI/CDや開発プロセスの改善はSREチーム内で完結する訳ではない • 協業が必要 ◦ パートナー(Heroku, Render, AWS) ▪

    お金を払う客だからと言ってすぐに応えてくれるわけではない ▪ OSS化された部分も多く、一緒によくしていくことが可能 ◦ 社内開発者 ▪ 「開発者」から「エンジニア」へ教育と理解が必要
  14. わずか1.5か月での改善 • エンジニアリングマネジメント • 開発からエンジニアリングへ • 開発プロセスの強化 • 2022年晩夏の大型資金調達 •

    大手金融機関への導入がスタート • さらなるプロセスの改善を目指して CI/CD・DevSecOps・SETに関心の高いソフトウェアエ ンジニア(Ruby, TypeScript, Go)を募集しています @trowems (t郎): ソフトウェアエンジニアとしてキャリアをスタート。その後、 CTOやテク ニカルリード、エンジニアリングマネージャー、 ITスタートアップで SREチームやデータ分 析チームの立ち上げ、エンジニア採用タスクフォース、金融機関での金融新規サービス の立ち上げ、CtoCプラットフォームの開発、 DXスタートアップ複数などを経て、 4Q 2022のエンジニアリング組織マネジメント業務をミッションにみんせつに技術責任者とし てジョインし、エンジニア・プロダクトマネージャー・デザイナーの採用の改善と既存内部 環境の改善を並行して担う(現在)。複数社のハンズオンベースでの(技術的)顧問とし て活躍(現在)。過去に、 CI/CD系カンファレンスのプロポーザルレビュアーや CI/CD OSSなどの開発・コミュニティリードも兼務(一部進行形)。 Rails Girls Nagasaki ’23の ローンチメンバーとは仲良し。 Photo: https://unsplash.com/photos/fh2tFKFiqOc T: twitter.com/trowems23 Z: zenn.dev/trowems Q: qiita.com/trowems