# コンセプト

# 概要

Qmonus Value Streamは、バリューストリーム (アプリケーション開発によりユーザへの価値を継続的に提供する一連の行為) の効果を最大化するためのDevOpsプラットフォームです。

アプリケーション開発者が重要なビジネスロジックの開発に注力できるように、ビルド、試験、デプロイといったリリースに関わるプロセスを自動化すること (所謂、リリースエンジニアリング領域)を支援します。これにより、素早いDevOpsのフィードバックループを実現し、追加機能や改善などユーザにとっての価値を継続的に提供できます。

さらに、プロダクトビジョンとして 「アプリケーション開発に注力し、ユーザへの価値を出し続けるチーム」を増やすことを掲げています。そのビジョンを達成するために、アプリケーション開発者のリリースエンジニアリングに関わる認知負荷を下げると共に、他チームで培ったプラクティスを他の多くのアプリケーション開発者に届けることで、実現したいと思っています。

上図に示すように、効果的なバリューストリームを構築するためには、「ビルド (Build)」「試験 (Test)」「リリース (Release)」および「監視 (Monitor)」の各フェーズにおいて、要件に合うクラウド技術を選択しアーキテクチャを組み上げる必要があります。Qmonus Value Streamは、これらのフェーズの自動化だけでなく、このアーキテクチャ構築を高速化するための独自のInfrastructure as Code (IaC) 実装を提供します。以下に、具体的な特徴、および提供する機能について説明します。

# 特徴

# すぐに利用できるクラウドアーキテクチャのベストプラクティス

Qmonus Value Streamは、Cloud Native Adapter(旧称: Design Pattern)と呼ばれる、モジュール化が容易な独自のInfrastructure as Code (IaC) 実装を提供します。Cloud Native Adapterは、クラウドアーキテクチャを構成する「インフラストラクチャ構成」とそれをデプロイする「ワークフロー」をまとめてパッケージ化します。アプリケーション開発者は、Qmonus Value Streamが提供する公式のモジュール、または所属する組織が管理する共通のモジュールを選択するだけで、以下の図に挙げるようなコンテナアプリケーションのシステムアーキテクチャ、およびそのコンテナをデプロイするためのCI/CDパイプラインを両方手に入れることができます。

# アプリケーションデリバリーをSaaS型でワンストップサポート

Qmonus Value Streamは、アプリケーションを商用環境にリリースするまでの一連のプロセスを統合管理するSaaSプロダクトです。アプリケーション開発者は、Qmonus Value Streamを通して、環境パラメータやシークレットを管理し、実装したアプリケーションをステージング環境へデプロイから商用環境にデプロイするまでの一連の自動化を達成できます。Qmonus Value StreamはSaaS型で提供されるため、アプリケーション開発者は、アプリケーションとそのアプリケーションを稼働する環境のみを用意するだけでよく、CI/CDを実行する環境を準備・保守する必要がありません。

# アーキテクチャとソフトウェアデリバリのための強力なIaCインターフェース

Cloud Native Adapterは、CUE言語を使った柔軟かつ堅牢なInfrastructure as Codeです。アプリケーション開発者を支える基盤エンジニア/SRE/プラットフォームエンジニアは、この統一的なインターフェースを通して、クラウドアーキテクチャを構成する「インフラストラクチャ構成」とそれをデプロイする「ワークフロー」をまとめて記述することで、見通し良いIaC実装のモジュールを作成できます。CUE言語の強力な言語仕様およびCloud Native Adapterの仕様・制約によって、検証やグループ化などのソフトウェアプラクティスをIaC実装に適用できます。Cloud Native Adapterの詳細については、Cloud Native Adapterの仕様を参照してください。

GitHub Actionsとの違いや組み合わせについて

GitHub Actionsを既に利用しているユーザでもQmonus Value Streamを利用するメリットがあります。
管理・運用コストの削減
GitHub Actionsを使って、アプリケーションが稼働するインフラストラクチャを構築する場合、インフラストラクチャに関するIaCの機能を持っていないため、Terraformに代表される別のIaCツールを併用する必要があり、それぞれのツールにおいて管理・運用コストがかかります。しかし、Qmonus Value Streamではクラウドアーキテクチャを構成する「インフラストラクチャ構成」とそれをデプロイする「ワークフロー」を統一のインターフェースで管理できる独自のIaC実装を具備しているため、管理・運用コストの削減を図ることが可能です。
インフラストラクチャ構築の簡易化
Qmonus Value Streamではベストプラクティスを基に作成されたアーキテクチャのカタログから構成を選べるため、専門的な知識がなくても商用レベルのインフラストラクチャを構築できます。
高度なデプロイ安全性
Qmonus Value StreamのPromote機能により、検証環境でビルド・デプロイしたイメージをそのまま商用環境へ安全にデプロイすることも可能となります。
組み合わせての利用
既存のGitHub ActionsとQmonus Value Streamを組み合わせることも可能です。例えば、テストのワークフローはGitHub Actionsで、ビルド・デプロイやインフラストラクチャの構築はQmonus Value Streamで行うという運用も考えられます。

Helmとの違いについて

Helmはアプリケーションを配布することを目的とし、アプリケーション単位でパッケージ化しています。パッケージは様々な環境やアプリケーション開発者へ配布可能とするため、その特性上パラメータ が増えて管理が難しくなる傾向にあります。
一方 、Cloud Native Adapterは機能単位でモジュール化し、それを再利用してアプリケーションをデプロイすることを目的としています。Cloud Native Adapterはアプリケーションごとに使うAdapterを選択できるため、スケーラブルにアーキテクチャの構築が可能となります。

他のCI/CDツール(Spinnaker、CircleCI等)との違いについて

Qmonus Value StreamでもTektonというCI/CDツールを活用しています。Qmonus Value Streamは、CI/CDツールの上にDevOpsプロセスを効率化するためのベストプラクティスを実装している点で、CI/CDツールの上位のスコープを提供しています。
また 、クラウド基盤の構築やアプリケーションのデプロイ・試験を自動化するためのワークフローを提供する点では同じですが、Qmonus Value Streamではパターン化されたワークフロー(Build Workflow・Release Workflow)を 提供しているため、1つ1つのタスクをアプリケーション開発者側で実装する必要はありません。さらには、パターン化されたCI/CDにより、DevOps・アプリケーションのメトリクスを提供しているためアプリケーション開発者側での複雑なインテグレーションなしに、クラウドネイティブなDevOpsプロセスを確立できます。

# 提供する機能

Qmonus Value Streamでは、以下の機能を提供しています。

  • アプリケーション開発者の持ち込みクラウド(Bring Your Own Cloud)に対して、パターン化されたシステム構成を構築
  • デプロイしたリソース(クラウド基盤やアプリケーション)の状態を管理
  • デプロイしたリソースとその定義ファイル、およびワークフローのログを可視化[1]

また、 Cloud Native Adapterを利用することで、持ち込みクラウドに以下の仕組みを導入できます。

  • リソースのパフォーマンスメトリックやログに関するデータ(テレメトリー)の収集・蓄積
  • テレメトリーに基づいたリソースの制御
    例:クラウド基盤の資源(CPU等)を自動的に縮小・拡張する。

# 想定するユーザ

  • アジャイル開発に相性が良いアプリケーションを開発している方

    • ユーザにとって価値のある機能やサービスを継続的に提供したいアプリケーション開発チーム向けのプラットフォームです。
  • クラウドサービスの基礎的な知識と利用経験を有する方

    • 本プラットフォームによりデプロイされるリソースはユーザ自身が運用する必要があります。そのため、Cloud Native Adapterを利用する場合には、そのCloud Native Adapterの作成者が誰であるかに係わらず、デプロイされたリソースについての最低限の利用スキルや知識が必要となります。
    • 例:Kubernetes、Google Cloud、Microsoft Azure、Amazon Web Services、etc.
  • Infrastructure as CodeやCI/CDの概念およびプラクティスについての知識を有する方

    • バリューストリームの効果を最大化するにあたっての重要な概念であり、本プラットフォームを通して手の内化していただきます。
  • gitを使ったコードのバージョン管理ができる方

    • アプリケーション開発におけるバージョン管理のデファクトスタンダードであり、Infrastructure as Codeにおいても必須のスキルとなります。

# どんな問題を解決するのか

バリューストリームの効果を最大化するために必要な、多くの課題を解決できます。
以下に主要なものを挙げます。

  • 安全かつ素早く価値をユーザに届けたい

    • ソフトウェアデリバリを自動化することにより、安全かつ素早く価値をユーザに届けることができます。
  • インフラストラクチャまで含めた、統合的なソフトウェアデリバリ管理がしたい

    • アプリケーションのソフトウェアデリバリだけでなく、インフラストラクチャのデリバリも自動化し、インフラストラクチャをアップデートし続けることで、結果的にセキュリティリスクの向上やアジリティの低下を防ぐことができます。
  • リリースエンジニアリングを行うためのツールの管理・運用コストを下げたい

    • Infrastructure as CodeやCI/CDの実現のためには、通常さまざまな種類の多くのツールを組み合わせる必要があり、それぞれのツールにおいて高い管理コスト・運用コストが必要となります。
    • システムアーキテクチャとデリバリの仕組みを統一的なインターフェースで管理することで、「管理・運用コスト」の削減を図ります (詳細はCloud Native Adapterの仕様 を参照してください)
  • システムアーキテクチャやCI/CDパイプラインなどの実績のある構成をチーム/組織間で再利用したい

    • Cloud Native Adapterを共有することで、実績のある構成を再利用できます。それにより、チームや組織内でサイロ化していたクラウド技術のインテグレーションコストを大きく下げることができます。
    • さらに、組織として自分達のCloud Native Adapterを育て、インテグレーションのベストプラクティスとして磨くことで、全体の運用品質を向上させることが可能です。
  • DevOpsプロセスに関わるメトリクスを測定したい

    • DevOpsプロセスに関わるメトリクスを測定し、データに基づいたソフトウェア開発・デリバリを判断することで、安全かつ効果的なDevOpsプロセスに成長させることができます。(詳細はDevOpsメトリクスの分析を参照してください)

  1. リソースの隠蔽や抽象化は行いません。デプロイしたリソースはクラウドプロバイダのコンソールやポータル、定義ファイル・ワークフローのログはQmonus Value Streamのダッシュボードで確認できます。 ↩︎

Last Updated: 2024/05/14 +09:00