開発部門と運用部門が連携することにより、スピーディーなシステム開発を実現するDevOpsの概念は、目まぐるしく変化する「市場環境」と「ユーザーの価値」に対応すべく広まりました。
今回はそのDevOpsの実践にあたって必要なツールや、DevOps実現を阻む課題とその解決策などを解説していきます。ぜひ最後までご覧ください。
そもそもDevOpsが分からないという方は、関連記事から読んでいただくと分かりやすいと思います!
▼ 関連記事 ▼
【DevOps】開発部門と運用部門の連携で、スピーディーなシステム開発を実現
DevOps(読み方:ディブオプス)とは、Development(開発)とOperation(運用)を組み合わせて作られた言葉です。計画から開発、リリース、運用までの一連のプロセスが独立することなく、相互に連携し合う特徴があります。
システム開発において、開発部門と運用部門が密に連携し、可能な限りツールを使い自動化された開発により、価値の高いシステムを確実かつ柔軟に、その上スピーディにユーザーへと届けるための考え方を指します。そのため、効率化や生産性向上が求められる、現代のシステム開発において、必要な概念だと注目を集めています。
DevOpsにおいて、Dev(開発部門)の役割は「正常に動作するアプリの開発」と、通常のアプリ開発と変わりはありません。しかし、Ops(運用部門)はアプリを運用するための環境構築だけではなく、開発におけるCI/CD環境の構築も役割になってきます。そのため、エンジニアにはDevOpsを実行するにあたっての新しい知識が求められます。こういった場合、適切な人材の採用や、育成が思い浮かぶかと思いますが、人材不足が叫ばれている今、外部に依頼するというのも一つの手段と言えます。
DevOpsは開発部門と運用部門が緊密に連携し、できる限り自動化したプロセスにすることで、開発スピードの向上が見込めます。またスピーディーな開発・デプロイと、リリースまでのプロセスが短くなることでユーザーからのフィードバックを素早く反映させることも可能となり、生産性も向上します。
また、DevOpsではインフラストラクチャもアプリーケーションコードと同じようにコードで管理すること(Infrastructure as Code)が推奨されているため、これによりシステム全体をより効率的に管理できるというメリットもあります。
DevOpsの実現は、開発の自動化や効率化に向けて、環境構築やツールを準備していく必要があります。以下にその代表的なDevOpsツールを紹介していきます。
・クラウドプラットフォーム
クラウドプラットフォームを利用することで、インフラの設定・管理を自動化し、環境のスケールアップ・ダウンに柔軟に対応することができます。
例:AWS、Azure
・インフラ管理ツール
インフラのサーバー構成管理や、ファイル展開を自動化するなど、主にインフラ構成を記録する目的で使われます。
例:Chef、Ansible
・CI/CDツール
CI(継続的インテグレーション)とCD(継続的デリバリー)に役立つツールです。コードをビルド・テストそしてリリースまでの自動化を手助けする機能があります。
例: AWS CodePipeline、Azure DevOps
・テスト自動化ツール
開発の際の単体テストや結合テスト、総合テストといった各テストを自動化するためのツールです
例:Selenium、Appium
▼ 関連記事 ▼
・バージョン管理ツール
ソースコードのバージョン管理を行います。
例:git、subversion
・バグトラッキングシステム
バグレポート提出やバグの検証・修正など、バグ解消に向けた一連の流れを管理します。品質管理上欠かせないツールです。
例:JIRA、trac
ここに挙げたような技術的なツール以外にも、密な連携を図るDevOpsにおいて、コミュニケーションツールの活用は重要です。zoomやGoogle MeetのようなWeb会議システムだけでなく、SlackやMicrosoft Teamsのようなチャットツールも活用していくことで、お互いの作業を止めることなく双方の進捗報告や情報共有を行うことができます。
DXに関心が高まる中、DevOpsもその手法の1つとして関心が高まっています。IDC Japanがまとめた『2022年 国内DevOps/開発プラットフォームユーザー動向調査[1]』によると、2022年の調査では59.3%の実施率となりました。2017年の調査以降、年々上昇し続けている実施率ですが、有効活用ができていない企業があるのも現状です。
DevOps実現を阻む課題は一体何なのでしょうか?今回は、セキュリティと品質についての課題と解決策を解説していきます。
・セキュリティ対策
従来、リリース前のテストの段階でセキュリティ診断を行うことが一般的でした。しかし、DevOpsでは高頻度で改修・リリースを行うため、そのリリース時に毎回セキュリティ診断を行うのはあまりにも手間がかかってしまいます。
この課題を解決する手段として「セキュリティテストの自動化」が有効的と言えます。自動化された一連のプロセスの中にセキュリティテストも取り込むことで、手動による手間を省くことができ、スピーディーな開発を実現することができます。ちなみに、DevOpsの考え方にセキュリティの要素も含んだ考え方をDevSecOpsと呼ぶこともあります。
・サービス品質確保
DevOpsではスピード感のある開発が特徴のため、大規模テストなどが実施できず、サービス品質を保つことが難しいと言われています。そのため、対策を取らないと、不具合を抱えたままリリースをする可能性が残ってしまいます。
スピーディーな開発とサービス品質の確保を両立させるためには、コードデプロイプロセスの確立が有効的です。コーディングからユーザーに届けるまでを5つのステージに分けたもので、プロセスから自動化することで、スピーディーかつ高品質な開発を目指します。
Development(開発)とOperation(運用)を組み合わせた造語であるDevOpsは、目まぐるしく変化する「市場環境」と「ユーザーの価値」に対応すべく広まりを見せました。そして、できる限り自動化されたプロセスの中でスピーディーな開発や生産性の向上、システムの効率的な管理などを実現してきました。
DevOps実現に向けたツールはたくさんあり、その中から、自社やプロジェクトにあったサービスを選択していくことが重要です。DevOpsに取り組むには、専門的な知識が必要なため、育成や採用では間に合わない場合は、外部に依頼する選択肢も必要になってきます。
JIITAKでは様々なアプリ開発においてDevOpsエンジニアを起用し、開発プロセスの効率化・高速化に取り組んできました。アプリ開発や運用についてお困りごとのある方は、ぜひ一度JIITAKまでご相談ください!