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

CI/CDやテスト自動化の開発プロジェクトへの適用

 CI/CDやテスト自動化の開発プロジェクトへの適用

2024年10月27日JJUG CCC Fall 14:15~

Satoshi Seto

October 27, 2024
Tweet

More Decks by Satoshi Seto

Other Decks in Technology

Transcript

  1. CI/CDとは何か CI/CD (継続的インテグレーションおよび継続的デリバリー/デプロイメントの 略) は、ソフトウェア開発ライフサイクルを最適化し、加速す ることを目的としています。 継続的インテグレーション (CI) とは、コード変更を共有ソースコードリポジ トリに自動的かつ頻繁に取り込む手法のことです。継続的デリバリーまたは

    デプロイメント (CD) は 2 つの部分からなるプロセスで、コード変更の統合、 テスト、デリバリーを指します。継続的デリバリーは、本番環境への自動デ プロイは行わずその手前までを守備範囲としますが、継続的デプロイメント は、更新内容を本番環境に自動的にリリースします。 Red Hatによる定義: https://www.redhat.com/ja/topics/devops/what-is-ci-cd
  2. 自分たちの業務を理解するということ  自分たちが何を目的としているかを知ることで正しく業務改善ができる  その中には自動化も含まれる  業務の中で何に時間がかかってるのかを正しく理解することで最適化が行 える  すでに時間がかかってないことを改善しても効果が薄い

     業務を理解しないまま最適化をしようとすると手段が目的になってしまう 場合がある  SvnではなくGitを使ってればモダンな開発ができている  教科書通りにCI/CDを入れようとして反対される
  3. 開発プロジェクト はリリースまでが 目的  いかにリリースするのかが重要になる  リリースができない事には受け入れが行えない =リリースしないとお金がもらえない  要件にあってもリリースに必要ない事については

    優先度が落とされる  リリース後にすぐに使わない機能は別途納品も  リリースすることに必要なことのみ改善(自動化) の余地がある  リリース後に多少大変になってもしょうがない
  4. 一般的な開発ルール例  プログラマは自分のPCで開発を行う  プログラマが開発したコードは上位者がレビューを行う必要がある  本番サーバーで実行する前に開発サーバー、ステージングサーバーを経由する  開発サーバーで結合テストを行う 

    ステージングサーバーでシステムテストを行う  本番昇格前の本番サーバーでユーザー受入テストを行う  全てが完成した段階で検収を行い云々  プログラムの本番稼働前には役員承認が必要である  本番稼働しているプログラムは何かを管理する必要がある
  5. CI/CDへ取り込むのに検討が必要な例: 本番サーバーへのデプロイ 業務ルール:  本番昇格前の本番サーバーでユーザー受入テストを行う。  全てが完成した段階で検収を行い云々。  プログラムの本番稼働前には役員承認が必要である。 

    本番稼働しているプログラムは何かを管理する必要がある。 本番稼働前に役員承認が必要であるため、簡単にできてしまうと逆に問題と なる場合がある。 本番稼働しているプログラムは何かを管理する必要があるため、ビルドまで は自動化し、何かしらを使ってバージョン管理をする必要がある。 →ビルドから本番ライブラリの保存までは自動化する。