Slide 1

Slide 1 text

開発生産性と開発者体験の向上に向けた CI/CD改善の取り組み PRONI株式会社 リードエンジニア 末澤 TechBrew in 東京 ~CI/CDパイプライン改善の取り組み~

Slide 2

Slide 2 text

名前 末澤 尚也(SUEZAWA NAOYA ) 所属 PRONI 株式会社 役割 プロダクトエンジニア 業務 ・2020 〜 既存サービスインフラ IaC 化対応 ・2021 〜 新規サービスインフラ構築 ・2022 〜 既存サービスリプレイス対応 / 採用推進 / 技術広報 ・2023 〜 現在はプロダクト開発チームにてバックエンド開発を担当 登壇・イベント ・Laravel.shibuya#10 テスト実行時間を1/2 にしました@Laravel ・AWS Startup Meetup#13 わたしたちにIaC はまだ早かったのかもしれない ・AWS GameDay 8 位 受賞 ・夏の開発生産性LT Week~ ベストプラクティスから学ぶ!Four Keys 向上への トライ~ " 開発生産性を高めるために実践しているナレッジの紹介" 自己紹介

Slide 3

Slide 3 text

会社紹介 P R O N I 株式会社 受発注を変革するインフラを創る をVISION に掲げ、 国内最大級のBtoB 受発注プラットフォーム アイミツ を展開しています 発注先を探している発注者と仕事を請け負いたい受注者を 最適な形でマッチングさせることで、 世の中の無駄な「相見積もり」を省き、 あらゆる発注をスムーズにすることを目指しています

Slide 4

Slide 4 text

2020 2021 2022 2023 2019 会社紹介 P R O N I 株式会社 シリーズA 6.6 億円 シリーズB 14.4 億円 シリーズC 25.8 億円 社員数 50 人突破 社員数 100 人突破 日本サービス大賞 「優秀賞」受賞 FINDY TEAM+ AWARD 2022 受賞 職場環境最優良法人 受賞 累計資金調達金額 46.8 億円 突破! 社員数 120 人 突破! Findy Team+ Award 2022 受賞!

Slide 5

Slide 5 text

 会社のテックブログの運営を行っており、毎月投稿を2 年以上継続しています。  エンジニア組織全体で取り組んでいること、  チームの雰囲気、文化などの情報を届けています。  see https://note.unilabo.jp/m/mc84cf9468445  仮説検証型アジャイル開発を行うアイミツ開発チームの技術的負債への向き合い方  開発生産性を向上し続けたいユニラボの取り組み - 2022 年振り返り-  爆速で価値を提供したい!アイミツプロダクト開発フローを紹介します!  私が開発者体験(DX :Developer eXperience )を大切にしたい理由 テックブログ紹介

Slide 6

Slide 6 text

アジェンダ CI/CD とは PRONI 株式会社のCI/CD 取り組み 開発生産性と開発者体験の向上への想い

Slide 7

Slide 7 text

C I / C D とは(G e m i n i にきいてみた)

Slide 8

Slide 8 text

P R O N I 株式会社のC I / C D CI にgithub 、Cd にCodePipeline を利用しており、 develop や main などの特定ブランチへの変更を トリガーにCodePipeline を開始するように設定しています その後、CodeBuild にてアプリケーションビルド、 Docker イメージ生成、ECR にDocker イメージPush 、 CodeDeploy でECS へデプロイするといった仕組みです

Slide 9

Slide 9 text

C I (G i t h u b A c t i o n で行なっていること) CI で行なっていること ・lint チェック ・build チェック ・コーディング規約チェック ・テスト実行(バックエンド / フロントエンド)

Slide 10

Slide 10 text

C I 実行時間短縮のために取り組んだこと キャッシュの利用 依存関係をキャッシュしてワークフローのスピードを上げる FYI https://docs.github.com/ja/actions/using-workflows/caching-dependencies-to- speed-up-workflows

Slide 11

Slide 11 text

C I 実行時間短縮のために取り組んだこと job 並列実行 当時 CI で実行していたテスト時間が1/3 になりました FYI https://docs.github.com/ja/actions/using-jobs/using-a-matrix-for-your-jobs FYI https://note.com/deliku0306/n/na7fedd795bd7

Slide 12

Slide 12 text

GitHub-hosted Larger Runners job 単体の実行時間が改善されたのですが、 Total durations の数値が悪くなっていました 並行ジョブ数の上限に達し、ジョブがキューイング されていたのではないかと推測しています C I 実行時間短縮のために取り組んだこと FYI https://docs.github.com/ja/actions/learn-github-actions/usage-limits-billing-and- administration#usage-limits FYI https://note.com/deliku0306/n/nb72dd50d2372

Slide 13

Slide 13 text

r e v i e w d o g でL i n t e r 解析結果をコメント化 reviewdog Pull Request にコメント形式で指摘してくれます FYI https://github.com/reviewdog/reviewdog

Slide 14

Slide 14 text

C I 実行結果をS l a c k 通知 ワークフロー成功 / 失敗時Slack 通知 ワークフロー結果をSlack で通知し、失敗していた時に、誰 のどのPullRequest が、どのワークフローで失敗したかわ かるようにしています。 FYI https://github.com/tokorom/action-slack-incoming- webhook

Slide 15

Slide 15 text

今後のC I 改善 AI コードレビュー導入(の検討) PR の要約機能や、AI によるレビューによる レビュワーのレビューコストの削減に期待しています

Slide 16

Slide 16 text

C D (C o d e P i p e l i n e ) デプロイ main にマージすれば、 自動で Approve フェーズまで進行し、 デプロイ担当者が Approve することで、 Deploy が実行される仕組みになっています

Slide 17

Slide 17 text

開発生産性と開発者体験の向上への想い 私は、心地良く仕事をできているかどうか が大事だと考えています。 また心地よい環境があるからこそ良質なアウトプットをだせるとも思います。 自分たちで働きやすい、開発しやすい環境を作り続けることが大切! その環境(土台)があることで、生産性が向上しユーザに早く価値を届けることができる! 本日紹介した取り組み以外にも、開発しやすい環境をいろいろ整えています! 本番マスキング(個人情報など)データを利用した開発環境整備 実データと同等状態で開発やテストを行える パフォーマンス問題や問い合わせがあった事象再現性が高い

Slide 18

Slide 18 text

最後に P R O N I 株式会社では、 エンジニア絶賛採用中です! もう少し話聞いてみたいと思った方は、 是非お話ししましょう! Q R コード(カジュアル面談応募フォーム) からお申し込みいただけます!