DevOpsの実現を阻む現状
前編では、DevOpsについての認識を読者のみなさんと一致させておくために、あらためて説明をしました。
ここからは、筆者がお客さまからよく聞くお話を例に、現場の状況を振り返ってみましょう。開発担当は要件定義に基づいた機能を開発し、運用/保守担当はリリースされたシステムを安定運用することに注力しています。運用/保守担当にとっては安定稼働することが最優先であり、原則として予算の範囲内で実施しますから、運用業務は手順書に従った仕事が主になりがちです。
図1にあるように、システム運用中にバグや要件漏れが発見された場合、運用/保守担当は、契約の範囲内で保守業務として修正プログラムや追加機能を開発します。しかし、修正プログラムや追加機能のためにOSやミドルウェア、プラグイン等のバージョンアップが必要なケースでは、安定稼働を優先するためにバグ修正を後回しにしてしまうこともあるでしょう。運用/保守担当のスキル不足や予算内で収まらないケースでは、開発担当に修正プログラムや追加機能の開発を依頼する必要があります。
一方、開発担当はどうでしょう。SIer視点では、開発担当は納品が終われば仕事は終わりと言われることがあります。品質や保守性をある程度犠牲にしても納期が最優先になりがちです。開発者はベストを尽くしていますが、予算にも人的リソースにも限りがあります。いったん納品してしまえばチームは解散となり、別のプロジェクトに配属されます。その結果、運用から戻ってきた修正プログラムや追加機能の開発依頼に対して、当初の担当とは別の者が対応しなければならないという状況もよくある話です。新しく担当になった開発者は、状況把握や既存のソースコードを読み込むだけで3〜4週間は必要で、その後にやっと開発に取り組むということになります。
このように開発担当側にも、運用/保守担当側にもそれぞれに悩みがあります。しかし、開発担当や運用/保守担当との間で密にコミュニケーションが取れており、それぞれの業務内容やノウハウがきちんと残されていて、いつでも調べられるようになっていればどうでしょうか? 前述の悩みのいくつかは解決できるかもしれません。
加えて、エンドユーザ側の希望や意見が、運用/保守担当を通じて開発担当に伝わり、逆に開発担当や運用/保守担当側で発見した情報がエンドユーザ側と共有できていれば、工数削減につながるようなメリットが生まれてくる可能性もあります。
DevOpsの実現は一朝一夕ではなし得ません。自分たちの問題点を把握し、一歩ずつ着実に解消し続けていく必要があります。
昨今のソフトウェア開発サイクルには、それぞれのフェーズおよびフェーズ間をまたいで、情報を記録/管理/共有するツールや、自動化を助けるツールが不可欠です(図2)。ソフトウェア開発サイクルの各フェーズについて、DevOpsをサポートしてくれるツールを表1に紹介します。
表1 DevOpsをサポートするツール
フェーズ | 作業内容 | ツールの例 |
PLAN | 要件やアイデア、目標、フィードバックなど、共有すべき情報をすべて記載する。フィードバックは継続して収集することがポイント。暗黙知についても書き出す | Jira Software、Confluence、Backlog、Redmine |
BUILD | DockerやAnsibleなどでインフラストラクチャ構築の自動化に取り組むとともに、バージョン管理ツールを用いてリポジトリを作成し開発を進める。プルリクエストを活用して変更個所を関係者に通知し、変更内容の検証や修正などを行う | Bitbucket、Bamboo GitLab、GitHub、Docker |
CONTINUOUS INTEGRATION | 日本語では継続的インテグレーションと言われる。「BUILD」フェーズで用意したリポジトリを使って短いサイクルでテストを繰り返し、問題を解決する。テスト後にビルドを行い、ボットを用いて関係者に通知する。テストとビルドを自動で行うのがポイント | Bitbucket、Bamboo、Jenkins |
DEPLOY | スクリプトなどを用いてデプロイを自動化し、本番環境やステージング環境で動かす。デプロイ情報をボットを通じて関係者に通知する | Bamboo、AWS CodeDeploy、Jenkins |
OPERATE | サーバとアプリケーションの各パフォーマンスを監視する。ツールによって自動化できるので、運用/保守の負荷を減らすための自動化をするとともに、ボットを用いてエラー通知なども自動化する。また、問題が起きた場合は、チャットなどで迅速に開発担当や営業とコミュニケーションを行い、情報共有システムに登録、情報共有を徹底する | Zabbix、Sensu |
CONTINUOUS FEEDBACK | 開発したソフトウェアについて、抜けや漏れがないか、想定どおりに使用できているかフィードバックを取得する。追加要望などもフィードバックとともに、ボットを用いて関係者に通知しつつ、情報共有システムに登録、情報共有を徹底する | Jira Service Desk、Google Form、Freshdesk、Zammad |
通知&登録 | 上述のさまざまな通知を、チャットやメールに届ける、情報共有システムに登録させるといった処理をボットにより自動化する | HipChat、Stride、Slack、Mattermost |
サポートツールを活用しよう
DevOpsをサポートするツールの例を開発サイクルとともにご紹介しました。しかし、繰り返しになりますが、DevOpsはツールやハウツーではなく、活動そのものであり、活動を継続することが最も重要なポイントです。開発担当と運用/保守担当はもとより、営業やエンドユーザ側とも情報共有/コミュニケーションを徹底するには、社内のリソースだけでは足らず外部の力を借りる必要があるかもしれません。リックソフトでは、ツールだけでなく、DevOpsに取り組むみなさんへのお手伝いを一気通貫で提供しております。
次回はDevOpsを実現するためのツール活用を紹介する予定です。
日本だけでなく、アジア圏でもアトラシアン製品販売のトップエキスパートであるリックソフトのWebサイトでは、各アトラシアン製品の体験版を提供しているほか、アトラシアン製品専用のコミュニティも運営しています。まずはアクセスしてみては!
- リックソフトJIRAデモ環境
- https://www.ricksoft.jp/demo/
- 第1特集
MySQL アプリ開発者の必修5科目
不意なトラブルに困らないためのRDB基礎知識
- 第2特集
「知りたい」「使いたい」「発信したい」をかなえる
OSSソースコードリーディングのススメ
- 特別企画
企業のシステムを支えるOSとエコシステムの全貌
[特別企画]Red Hat Enterprise Linux 9最新ガイド
- 短期連載
今さら聞けないSSH
[前編]リモートログインとコマンドの実行
- 短期連載
MySQLで学ぶ文字コード
[最終回]文字コードのハマりどころTips集
- 短期連載
新生「Ansible」徹底解説
[4]Playbookの実行環境(基礎編)