DXトレンド⑥ ― Dev/Ops ―

テク仁(えんまん七福仁 IT技術担当)のつぶやき – その6

EnMan社にてCTOを勤めさせて頂いている石井慎一郎です。
EnMan社が、一流IT企業との開発・PMO連携、サービス事業提供、更なるアジア圏ビジネス隆盛を目指す中で、その背景にある昨今のIT技術やシステム動向について徒然なるままに認めます。

早くマーケットで評価を受けることが重要なSoE的なシステム開発について、「スピード重視」を実現するアジャイル型開発プロセスを前回まで採り上げました。今回は、更に早く、かつ途切れずサービスを提供するための考え方として、Dev/Opsを採り上げます。

【Dev/Opsとは】

ソフトウェアの開発(Development)と運用(Operations)、さらに品質担当者が密接に協力する体制を構築し、ビジネス要求も含めたシステム化要件に対して、可能な限り、ASAP(As Soon As Possible)で対応するためのメカニズムを指します。

昨今、パソコンやスマホを通じて、様々なサービスを利用することが当たり前になってきています。金融のネットサービスなどでは、定期的にメンテナンスによるサービス停止が行われることもありますが、ネット購入サービスなどでは24時間365日でのサービスを提供できるということは、利便性からも大きな訴求力を持ちます。

加えて、クラウドサービス活用の機会が増えてきている中では、悠長に半年毎に機能強化を行うようなサイクルでは競争にならないため、とにかく継続的に機能強化(開発)を行う中で、常に最新のサービスを提供(運用)することも求められているとも言えるでしょう。

その場合、サービスを提供するプログラムを強化・改修する場合でもサービスを無停止で行うにはどのようなやり方があるのかの1つの解がDev/Opsになるのです。

【Dev/Opsの登場】
2008年に開催された、前回説明したアジャイルについての会議で、アジャイルを実現するインフラストラクチャについて議論されました。そして、DevOpsという用語は2009年ベルギーで初めて開催された「DevOpsDays」から普及しはじめたとされています。つまり、「開発と運用が協力することで、1日に10回以上のペースでリリースが可能になる」との発表などが行われたとあります。

【Dev/Opsの実現】
Dev/Opsでは、短期間のサイクルで開発成果物をリリースし、サービスを稼働させたまま、利用者からのフィードバックや新たな要件を取り入れて、プラニングから実装、テスト、デプロイまでの一連の流れを自動化することにより、右図のようなシームレスな流れを実現しようとするものになります。

DevOpsを構成する具体的な手法には様々なものが提唱されています。
どちらにしても、ソフトウェアの頻繁な更新が必要となるため、ウォーターフォール型などの従来型の開発手法ではなく、いわゆるアジャイル方式の反復型の開発手法が採用されることになります。
また、

  • 情報共有や密なコミュニケーション
  • 導入、展開(デプロイ)の自動化
  • 環境設定の自動化

などを各種ツールによって実現していくことになります。これらは複数のツールで連続的に構成されるため、「Dev/Opsツールチェーン」と呼ばれる場合もあります。

【CI/CD】
特に上記のチェーンにおいて肝となる部分に、CI/CD (Continuous Integration継続的インテグレーション/Continuous Delivery継続的デリバリー) があります。ソフトウェア開発において、「自動化」を導入することによってマーケットに提供する頻度を高めることを狙います。

■CI:継続的インテグレーション
開発者向けの自動化プロセスを意味します。CI によってソフトウェアへの新しいコード変更が定期的にビルド、テストされ、共通リポジトリ(GitHub やコンテナレジストリなど)に統合されます。

■CD:継続的デリバリーまたは継続的デプロイメント
継続的デリバリーとは、開発者によるソフトウェアへの変更に対して、バグがないか自動的にテストし、共通リポジトリにアップロードされます。次いで、この変更が運用チームによって本番環境に導入されます。 継続的デプロイメント (もう 1 つの「CD」) は、開発者による変更をリポジトリから本番環境に自動的にリリースし、利用可能にするものです。運用チームが担当する手動プロセスを減らすことが目的になります。

最近では、マイクロサービスやコンテナ、APIなど、旧来の言葉でいうところのコンポーネントに多くの関心が寄せられています。これは、スピードを重視した、価値を生み出すサービスの継続的な提供とのマーケットからのリクエストに対して、アーキテクチャ的に解決を図ろうとした結果にも関わってきます。 つまり、迅速なインテグレーション、自動テスト、および頻繁なデリバリー、デプロイを最小限のリスクで行うことを意味します。

但し、CI/CDを実現するための(自動化)ツールチェーンの実装と導入、さらにDev/Opsを実現するための役割分担やコミュニケーションルールの変更などは、それなりに投資や工数が掛かることは覚悟せざるを得ません。 また、特に企業において根本的に組織を変更することに対して、現状のサービスやパフォーマンスの低下を懸念して躊躇してしまうこともあると思われます。

そんな中でも、元々アジャイルの説明の冒頭でも触れたように、「カイゼン」活動によるプラクティス群によって、開発プロセスも進化しているように、特に日本の製造業では得意の「小集団活動」などを通じて、徐々にプロセスの自動化を部門間の連携で実現していくことは十分可能だと思います。
今回は、余りに日進月歩な世界でもあることより、Dev/Opsの実装については触れませんが、是非、このDXトレンドに乗っかる意味でも、コミュニケーションツールの導入などから手掛けてみては如何でしょうか。

この記事の執筆者

石井 慎一郎

1984年 東京大学卒、日本電気㈱入社
ソフトウェア開発研究部門 配属(18年) 、金融システム開発、SI部門(13年)、グローバルビジネス推進部門(CTO)(3年)
時代の最新ソフトウェア・アーキテクチャの研究開発経験を礎に、ビジネスの最前線への適用、大規模SIでの顧客対応、最新技術プロダクトのグローバル展開を行った貴重な経験を持つ。
2018年末 日本電気㈱退職。個人事業主にてIT領域で企画・開発支援等、幅広く活動。
2020年7月~ EnMan Corporation 取締役CTO