Web系で働くために抑えておきたいCI/CDパイプライン


【Web系で働くために抑えておきたいCI/CDパイプライン】

Web系企業でサービス思考でアプリ開発することを目指しています。
CI/CDパイプラインは必須の知識だと思うので理解するために学びました。
AWSの学習にも出てくるので良い機会になります。

CI(継続的インテグレーション / Continuous Integration)

ソースコードを継続的にチェックインし、ビルドとテストを自動化して、コードを検証する。
プログラムを頻繁に更新し、コンパイルやテストなど定型作業を自動化する。

人の手によるミスの発生や時間のかかりすぎを回避する。
 → 作業に集中することが可能になる。
 → 素早くソースコードを開発出来る。

※チェックインする:ソースコードを開発し、リポジトリに新規に登録、変更して更新することなど。

CD(継続的デプロイメント、 継続的デリバリー / Continuous Deployment、 Continuous Delivery)

開発、更新したソースコードが本番環境で安全に使える状態に反映される。
テスト環境へのデプロイ、本番環境へのデプロイ、リリースまでを自動化する。

デプロイが頻繁に発生しても、ボトルネックや遅延、リスクの原因にならないようにする。

近年、CI/CDは重要視されている。

アジャイル開発のプラクティスの浸透と進化によって、自動化テストの重要性が高まっている。
(アジャイル開発はスピードが重要)

システムの品質に対する要求も高くなっているため、今まで手動でテストしていたものを自動化テストすることが標準になってきている。

CI/CDパイプラインのメリット

自動テストによって、人間のミスを検知しやすくなる。
全体的なコーディング量が増えたとしても、後々のエラーを減らす事が出来る。
 → トータルコストの削減に繋がる。

Sierではウォーターフォール型開発が主流なのかなと個人的に感じている。
テストの自動化の意識はまだまだ低いと思われる。
( ※Sierで勤務している私の推測範囲のお話です。)

テスト、ビルド、デプロイを自動化

テストの自動化:エラーの自動チェック、既存機能による影響チェック
ビルドの自動化:ソフトウェアを実行可能な状態にパッケージングする工数を削減
デプロイの自動化:パッケージをサーバーに配備して利用可能な状態に整える工数を削減