人手不足、人件費削減やテスト工数削減によりテストの自動化がかなり普及してきました。
テストの自動化ツールはUIに特化したSKYATTを始め、APIに特化したNewman、負荷テストに特化したJMeter、ユニットテスト特化のpytest(Python向け)など多種多様なツールが世の中にリリースされています。弊社のSKYATTも導入いただける企業様が増えてきております。
そのテスト自動化をより効率よく、さらにパフォーマンスを向上させるためのツールがありますので、ご紹介させていただきます。
CI/CDツールのご紹介の前に
まず始めに「CI/CD」についてご説明させていただきます。
CI/CDとは、「Continuous Integration / Continuous Delivery or Continuous Deployment」の略で、日本語では「継続的インテグレーション / 継続的デリバリー または 継続的デプロイ」といいます。
CI(継続的インテグレーション)は、開発者がコードを頻繁にリポジトリに統合し、その都度自動でビルドとテストを行うプロセスです。これにより、コードの品質を保ち、バグを早期に発見することができます。
CDには2つの意味がありますが、どちらもCIの後に続くプロセスです。
Continuous Delivery(継続的デリバリー)は、コードがリリース可能な状態に常に保たれることを目指します。自動化されたテストとビルドの後、手動での承認を経て本番(市場)環境にデプロイされます。
Continuous Deployment(継続的デプロイ)は、Continuous Deliveryの次のステップで、手動の承認を省略し、自動的に本番(市場)環境にデプロイされます。
CI/CDにより、ソフトウェアのリリースサイクルが短縮され、迅速なフィードバックと改善が可能になります。開発・評価のサイクルが短い、アジャイル開発との組み合わせで大きい効果を発揮します。
CI/CDツールの種類について
CI/CDツールにはオンプレミス型とクラウド型の2種類があり、それぞれメリットとデメリットがあります。
オンプレミス型 | クラウド型 | |
---|---|---|
セキュリティ | 〇 社内ネットワークで完結 |
△ 外部ネットワーク のため注意が必要 |
拡張性 (カスタマイズ性) |
〇 プラグイン等自由に追加可 |
× 提供される機能の 範囲内 |
速度 パフォーマンス |
〇 自由に増強可能 |
× プロバイダの リソース依存 |
初期コスト | × サーバー構築が必要 |
〇 すぐに利用可能 |
運用コスト | △ 良くも悪くも自由 |
△ プロバイダ依存 (従量制) |
運用管理 | × 自社で管理が必要 |
〇 プロバイダが管理 |
オンプレミス型のツールではJenkins、TeamCity、クラウド型のツールではAzure DevOps、CircleCIがメジャーなものとなります。
ではどれを選べば良いのか
総合力でオンプレミス型のCI/CDツールのJenkinsがオススメです。
Jenkinsはオープンソースで最も広く使われているCI/CDツールであり、柔軟なカスタマイズ性と豊富なプラグインが特徴です。
以下にオススメの点を5つ記載いたします。
① 高いカスタマイズ性と柔軟性
Jenkinsは完全なOSS(オープンソースソフトウェア)であり、企業だけでなく個人でも自由にカスタマイズが可能です。複数ビルドを並列で実行できるため、大規模な開発にも向いています。
② 豊富なプラグイン(1800以上)
Jenkinsには1800以上のプラグインがあり、様々なツールとの連携が可能です。これにより、ほぼどんなCI/CDワークフローも実現可能です。
- ビルドツール連携 : Gradle、Antなど
- テスト自動化 : SKYATT、Selenium、JUnit、pytestなど
- デプロイ : Docker、AWS、Azureなど
- GitHub連携 : ソースコードの変更を自動的にトリガー
- Docker連携 : コンテナ化したCI/CD環境を構築
- 通知機能 : Slack、Mail、TeamsにCI/CDの結果を通知
③ オープンソースかつ無償で使用可能
Jenkinsは完全なOSS(オープンソースソフトウェア)であり、無償で利用可能です。CircleCIなど有償プランのあるツールに比べコスト面の心配がありません。
④ パイプラインの可視化
JenkinsはパイプラインをGroovyスクリプトで記述可能です。
- コードでCI/CDの流れを管理
- ジョブの依存関係や並列処理の管理が容易
- GUIで視覚的にワークフローを確認可能
⑤ 豊富な実績
Jenkinsは2006年から開発されている歴史のあるCI/CDツールで、世界中の企業やOSSプロジェクトで採用されています。
- Google、Amazon、Facebook
上記のように利便性、柔軟性、コストと良い点があるため、Jenkinsをオススメしていますが、デメリットも存在します。
- セットアップが手間
- GUIが他のツールに比べて直感的ではない(古臭い)
- 定期的なメンテナンスが必要
- 運用・管理のコストがかかる
インフラ構築に精通した技術者が最初に入る必要があるため、その部分においてはクラウド型ツールに劣りますが、最初の導入さえ乗り切れば非常に強力なツールとなり、コスト削減や品質保証につながります。
②でご紹介させていただいた豊富なプラグインにより、さらに魅力的なCI/CDツールに変化します。
次回は便利で魅力的なプラグインについてご紹介できればと思います。