📚 Software Design 2023年12月号の感想
2023-12-07
はじめに
Penpen7です。Software Design輪読会に参加しているのですが、今月12月は所用があり参加できませんでした。代わりにこの記事で感想や気づきを記していければと思っています。
開発を加速するCI/CD
今月の特集記事はCI/CDについて。業務でもプライベートでもGitHub Actionsを使ってCI/CDを組むことが多く身近な存在なため、参考にできる部分があればなと思った。
第一章 安定リリースにつながるCI設計
- CI/CDのモチベーション的な話
- ソフトウェアデリバリーに関する現状調査というレポートがあるんだ〜という気持ち
- トップクラスのベンチマークを見ると実行時間の中央値がが10分で日本が3分
- 一見日本の方が優れているように見えるが、手作業でやっていることやlintやセキュリティスキャンなどが組み込まれていないから短くなっているように見える
- GitHub Actionsとかだとdependabotで十分かなと思っていたが、他にも組み込めるものがあるのかな
- 再利用性の高いCIのテンプレート定義
- 最近チームでやったな…という気持ち
- 変数の使い回しがシュッとできなくて大変だったらしい
- モンレポのCI設計
- GitHub Actionsでもパスフィルタリングはできるらしい
- テストは早く回していきましょうの話
- 本の中ではテストの並列実行が紹介されていた
- Rustとかだとビルド時間が長くなりがちなので、GitHub Actionsではキャッシュを使うと有効
- キャッシュの保持期間は1週間で1レポジトリあたり10GBが上限だった気がするので、頻繁に開発するレポジトリでないと有効でない
- S3に置く方法もあるらしいので試してみたい
- テスト状況の可視化がどんな感じなのか気になり
- カバレッジの可視化はよく見るが…
第二章 本番/検証環境を意識したCDデザイン
- Circle CIでの設定ファイルの記述方法についていくつか紹介されている
- ブランチ戦略はどれがどれだっけ…ってなることが多いのでいい復習になった
- Pull Request Environments気になり
- 検証環境が各開発者の変更ごとに立ち上げる方法
- GitHubが提供している機能なのかなと思ってしまったが、単なるそういう手法のようだ
- terraformでシュッと作られればいいが、マイクロサービス的な作りだと管理が大変そう
第三章 プラットフォーム事業におけるCI/CD
- DMM.comでの事例紹介
- GitHub、Golang、GCP、Kubernetesあたりを使っているらしい、いい感じ
- GitHub Actionsで実用に耐えるとあるが、自分もGitHubを使っているならGitHub Actionsを使わない理由はないと思うので同意
- Todoコメントの自動issue化はいいなと思った
- クラス図の自動作成いいなぁ
- この辺りの図はコードの変化に追随しきれず古い内容になりがち
- データベースのテーブル構造を吐いてくれるコマンドも世の中にあったはずなので必要に応じて入れられると良さそう
- Sonar Cloud初知り
第四章 CI/CDのその先へ
- トランクベース開発は初知り
- コンフリクト出まくると開発遅くなって大変だよね〜というのを解決するモチベがある
- featureブランチは全く使わずmainにpushし続けるらしい(本末転倒では…?)
- これは難易度が高そう
- 実際、DMM.comの認証チームでも採用されていない
- short-lived feature branchesという戦略を用いる
- 作ったfeatureブランチはなるべく早く削除する
- 長く生き残っているやつはSlack通知させてアクションを求めるようにすると良いのかなと思った
まとめ
今回は特集章のみ取り上げて気になる部分を挙げてみました。CI/CDはソフトウェアエンジニアにとって必要不可欠な存在だと思うので、定期的に方法を棚卸していきたいですね。
Software Designについては、秋くらいからSoftware Design輪読会に参加し始めたことをきっかけとして読み始めました。業務では触れないような高いクオリティの情報を収集できるので、もっと早く読み始めていれば…!という気持ちでいっぱいです。
また来年もたくさんの良い記事よろしくお願いいたします!(機会あればいつか執筆したいですね…)
Penpen7のブログ