はじめに
DevOpsプラットフォームの取り組みを紹介する1回目の記事です。
こんにちは、イノベーションセンターでプラットフォームチームのアーキテクトをしている牧志 (@JunMakishi) です。NTTグループ向けのDevOpsプラットフォームである「Qmonus (クモナス) Value Stream」の開発をリードしています。
本日から、数週間にわたり、Qmonus Value Streamチームの取り組みや利用技術を連載形式で紹介させていただきます。
第1回目の記事では、Qmonus Value Streamの概要を紹介します。
Qmonus (クモナス) Value Streamとは
Qmonus Value Streamは、アプリケーション開発者が、ユーザにとって価値のある機能やサービスを継続的に提供するためのDevOpsプラットフォームです。Cloud Native Adapterと呼ばれる独自のInfrastructure as Code実装と、アプリケーションを商用環境にリリースするための継続的デリバリ機能を有しています。
Kubernetesを知っている方は、アプリケーション構成を管理するHelmと、CI/CDパイプライン機能をバンドルしたものをイメージいただくと良いと思います。
アプリケーション開発者は、Qmonus Value Streamを使うことで、クラウドやCI/CDに精通していなくても簡単にクラウドアーキテクチャのベストプラクティスを再利用してアプリケーションをデリバリできます。
Qmonus Value Streamの目的
ソフトウェアをアジリティ高く開発しながら安定運用するためには、クラウドコンピューティングの活用が必要不可欠です。しかし、Cloud Native Landscape が拡大していっているように、クラウド技術は年々多様化・複雑化しており、クラウド技術を組み合わせて1つのアーキテクチャを組み上げるには高い専門性と多大な労力を必要とします。
NTTコミュニケーションズでは、多数のソフトウェア開発の現場でクラウド技術を活用していますが、個々のソフトウェアプロジェクトでクラウド技術の専門性を持つのは難易度が高いだけでなく、アーキテクチャガバナンスが効かないという課題がありました。私自身、以前、ネットワークコントローラ開発プロジェクトに所属していましたが、当時はソフトウェアデリバリやクラウド環境の管理のためだけに1つのサブチームを構成しており、主目的のコントローラアプリケーション開発以外にかかる労力は馬鹿になりませんでした。
こういったチームに代わってクラウド技術の複雑性を解決し、ユーザに価値を届けるアプリケーションの開発に注力できるよう、2020年から本格的にQmonus Value Streamの開発を開始しました。チームを超えて再利用できるInfrastructure as Codeを使って、早く簡単にクラウドを活用したアーキテクチャを構築し、アプリケーションをデリバリできるようにすることを目指しています。
Cloud Native Adapterによるベストプラクティスの提供
Cloud Native Adapterは、アプリケーションをクラウド基盤上で動作させる過程を仲介する独自のInfrastructure as Code実装です。商用環境で実績のあるシステム構成やCI/CDパイプラインを再利用可能な形でまとめることができ、アプリケーションと Cloud Native Adapter を組み合わせることで、ベストプラクティスに沿ったシステム構成やCI/CDを実現できます。
例えば、Qmonus Value Streamでは、Google Kubernetes EngineでWeb APIをセキュアに公開するためのシステム構成を、1つのCloud Native Adapterとして用意しています。このAdapterを使うだけで、Qmonus Value Streamの利用者は、コンテナを立ち上げてAPIを公開するためのマニフェストを生成できます。さらに、そのAPIにGCPのWAF/FirewallであるCloud Armorを適用して、安全にAPIを公開できます。
Cloud Native Adapterは、CUE言語で宣言的にシステム構成およびCI/CDパイプラインを記述します。CUE言語を活用することで、複数のAdapterを結合して複雑なアーキテクチャを実現できます。さらに、既存のAdapterに、独自のシステム仕様に合わせたロジックを追加することも可能です。
NTTグループで、ベストプラクティスを蓄積し育てていくことで、様々なアーキテクチャパターンを簡単に構築できる仕組みを確立し、かつアーキテクチャガバナンスを効かせることを目指しています。
アプリケーションのリリースパイプラインを統合管理
Qmonus Value Streamでは、Tektonと呼ばれるオープンソースのCI/CDフレームワークを活用し、ソフトウェアを商用環境にデリバリするためのCI/CD機能を提供しています。ユーザに価値を届けるアプリケーションを中心に据え、そのアプリケーションを開発してから商用環境にリリースするまでの一連の流れを統合管理できます。
以下の図の例のように、マージしたコードからソフトウェアをビルドし結合環境にデプロイする「ビルドパイプライン」と、総合試験環境や商用環境にソフトウェアをリリースする「リリースパイプライン」を構成し、それらを連結できます。結合環境で継続的に試験してソフトウェアを常にデプロイ可能な状態に保ち、任意のタイミングで試験を通過したソフトウェアを"Promote"して、商用環境にリリースできます。
Qmonus Value Streamによって、アプリケーションをユーザに届けるまでの一連の流れ、すなわちバリューストリームを自動化・管理することで、安全でアジリティの高いDevOpsプロセスを組織に適用することを目指しています。
Qmonus Value Streamの導入効果
Qmonus Value Streamの本格開発を開始した2020年以降、徐々にNTTコミュニケーションズ内で導入を進めてきました。2022年3月末時点で18のアクティブなソフトウェアプロジェクトで利用され、1月あたり100以上のソフトウェアリリースに活用されています。また、2022年4月からは、NTTグループ各社への提供を開始し、さらに利用が拡大しています。
Cloud Native Adapterとそれを使ってアプリケーションを継続的に商用環境にデリバリする仕組みを使うことで、アプリケーション開発者は、簡単にクラウドのベストプラクティスを活用でき、もっとも注力したいアプリケーションの開発とそのリリースに集中できます。その結果が、リリース回数という数字に表れていると考えています。
おわりに
DevOpsプラットフォームの取り組みを紹介する1回目の記事として、NTTグループ向けのDevOpsプラットフォームQmonus Value Streamの概要を紹介させていただきました。fukabori.fmでも本プラットフォームについて紹介する機会をいただいたので、よかったらこちらも参考にしてください。(50. 社内DevOps基盤、Tekton、Cuelang w/ JunMakishi)
Qmonus Value Streamチームは、メンバひとりひとりが、利用者であるアプリケーション開発者のために信念を持って活動を続けています。プラットフォームを内製開発するポジション、プラットフォームを使ってNTTグループのクラウド基盤やCI/CDを構築支援するポジションそれぞれで、一緒に働く仲間を募集していますので、興味を持たれた方は応募いただけると嬉しいです。
次回以降、Qmonus Value Streamチームの具体的な取り組みや要素技術を紹介していきます。お楽しみに!