はじめに

本資料とツール群を使って、クラウドの要件定義をはじめましょう!

この文書は、 The Apache License, Version 2.0 のもとで公開されます。

本書の各キーワード「せねばならない」、「してはならない」、「必要」、 「する/することになる」、「することはない」、「すべき」、「すべきでない」、「推奨される」、「してもよい/構わない/可能性がある」、「オプション」は、RFC 2119に準じて解釈されるものとします。


紹介

クラウドデザイン仕様 (the "CDS") はJSON/YAMLコードにより、人間とコンピュータの双方が理解できるよう、クラウドの利用要件を定義します。
本ドキュメントにおいて、CDSという呼称は言語仕様そのものの名称であると同時に、同仕様に基づいて記述された設計コードを示します。以前は後者をCloud Design Definition(the "CDD")として明確に区別しましたが、混乱を避けるためCDSに統一されました。よってツールや周辺ドキュメントの一部にCDDの記述が存在しますが、CDSと同義とお考えいただいて問題ありません。


既存のプロビジョニングコードの拡張

CDSはCloudFormationなど既存のプロビジョニングコードを拡張する要件定義コードです。クラウドの利用者やアクセスボリュームといったシステム要件を独自の仕様で記述し、クラウドリソースの定義は既存のプロビジョニングコードへの参照によって表現します。同構造により、デベロッパーの学習コストを抑え、既存コード資産の活用を促します。
CDSが含むことのできるプロビジョニングコードの種類については、Resource objectをご参照下さい。


ツール

様々なツールを用いて、クラウドの設計を作成、保管、検索、再利用することができます。

Cloud Design Schema 日本語
サードパーティー製エディタ等に組み込むことで、CDSの文法チェックに利用できるJSONスキーマファイルです。

CDSルートスキーマのダウンロード   CDSスニペットスキーマのダウンロード

ForkMe!
Reindeer Technology PTE.LTD.が提供する、クラウド設計管理ツールです。「クラウドの設計を、ソフトウェアのようにフォーク(複製/派生)したい」というデベロッパーの願いをかなえます。(Reindeer ProjectはReindeer Technology PTE.LTD.に発展的に法人化されました。)

アクセス

Reindeer Editor
Reindeer Projectがサポートする、ドキュメント生成ツールです。CDSを編集し、クラウド の利用に関するレポートを表示することができます。

ダウンロード


概要

Cloud Designの概要を記載します。


バージョン

CDSはSemantic Versioning 2.0.0 (SemVer)を利用してバージョン管理され、 以下の仕様に従います。
バージョンナンバーはメジャー番号.マイナー番号.パッチ番号の形でインクリメンタルに増加します。 メジャー番号.マイナー番号は1つ以上の機能セットを指定することになります。そして.パッチ番号は 後方互換性のあるバグ修正を指定することになります。 よって、パッチバージョンはツールの利用において考慮されるべきではありません。例えば1.0.0と1.0.1の間で、機能またはツールの区別はすべきではありません。


形式

CDSはJSONオブジェクトです。JSONまたはYAMLフォーマットの両方を用いて表現することができます。 YAMLとJSONフォーマットの互換性を維持するため、YAML利用時は以下いくつかの追加の制約に沿った上で、バージョン 1.2 の利用を推奨します。

  • タグはJSON Schema rulesetで許可されているものに 限定する必要があります。
  • YAMLのmapで仕様されるキーは、YAML Failsafe schema rulesetで 定義されているように、スカラー文字列に制限されなければなりません。

仕様内のすべてのフィールド名は、大文字と小文字が区別されます。これには、 map型のキーとして仕様されるすべてのフィールドが含まれます。ただし、キーが大文字と小文字を区別しないと明示されている場合を除きます。


構造

CDSは単一のドキュメントで構成されるか、ユーザーの判断で複数のパーツに分割しても構いません。 ただし後者の場合でも、親(ルート)となるCDSは必ずすべての必須親スキーマを内包する必要があります。 またパーツとして参照されるファイルは「CDSスニペット」と呼ばれ、Componentsオブジェクトだけを内包するようにします。 そしてルートファイルからCDSスニペットに対する参照を$refフィールドで関連づけされねばなりません。 なお、ルートファイルはclouddesign.json」または「clouddesign.yaml」と命名されるべきです。

親スキーマ

Cloud Designの主要なデータ構造を説明します。 以下の説明では、フィールドが明示的に「必須」と定義されない、または「しなければならない」または「する/することになる」と記載されていない場合、オプションと見なすことができます。


Cloud Design Object

これはCDSのルートオブジェクトです。

固定フィールド

フィールド名

種類

説明

reindeer

string

必須. この文字列はCDS自体のsemantic version numberでなければなりません。 reindeerフィールドは、CDSを解釈するためのツールに使用されるべきです。 これはinfo.versionフィールドとは関係ありません。
ForkMe!では「1.3.2」をご指定ください。

self

string

必須. この文字列はCDSのファイル名です。 拡張子は.json, .yaml または .ymlでなければなりません。 selfフィールドは、CDSを解釈するためのツールに使用されるべきです。 ForkMe!では「cloudDesign.json」をご指定ください。

info

Info object

必須. クラウドの活用に関するメタデータを提供します。 メタデータは、必要に応じてツールによって使用される場合があります。

actors

[ Actor object | string, Reference object]

必須. アクターオブジェクトの配列です。クラウドに接続する/される外部ユーザーまたはシステムに関する情報を提供します。

resources

Map[ string, Resource object ]

必須. クラウドの構造を記述する外部ドキュメント(プロビジョニングコードが記載されたファイル)への参照を示す、リソースオブジェクトの配列です。

.

contexts

Map[ string, Context object | string, Reference object]

必須. コンテキストオブジェクトの配列です。アクターとクラウドリソースの間で、 特定の目的を達成するための関連性についての情報を提供します。

components

Components object

CDSのさまざまな側面に対応する一連の再利用可能な オブジェクトを保持します。 コンポーネントオブジェクト内で定義されたすべてのオブジェクトは、 それらがコンポーネントオブジェクトの外部のプロパティから 明示的に参照されない限り、クラウドの設計には影響しません。

JSON example
{
  "reindeer": "1.3.2",
  "self": "cloudDesign.json"
  "info": {
    "title": {
      "en": "Sample system",
      "ja": "サンプルシステム",
    },
    以下Infoスキーマ参照
  },
  "actors": {
      "customer": {
        "title": {
          "en": "Customers",
          "ja": "顧客",
        },
        以下Actorスキーマ参照
      }
  },
  "resources": [
      {
        "$ref":"awsTemplate.json",
        以下Resourcesスキーマ参照
      }
  ],
  "contexts": {
    "customerWebAccess": {
      "title": {
        "en": "Web access by customer",
        "ja": "顧客によるウェブアクセス",
      },
      以下Contextsスキーマ参照
    }
  },
  "components": {
    "actors": {
      "operator": {
        "title": {
          "en": "Operator",
          "ja": "運用者",
        },
        以下Actorスキーマ参照
      }
    },
    以下Componentsスキーマ参照
    (Componentsは定義の再利用に便利なオプションスキーマです)
}

Info object

このオブジェクトはCDSに関するメタデータを提供します。 他の人がCDSを簡単に検索、発見できるよう、メタデータは適切に記入されるべきです。

固定フィールド

フィールド名

種類

説明

version

string

必須. あなたの設計のバージョンです。(the CDS versionとは異なります)

license

License object

必須. CDSのライセンス情報です。

title

Map[ string, string ]

必須. このクラウドの設計を適用するサービスの名称です。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

description

Map[ string, string ]

必須. このクラウドの設計を適用するサービスの説明です。 それはシステムの目的と機能のすべてのキーワードを含む簡潔なメモであるべきです。 このテキストは外部ツールによる検索インデックスとして使われる可能性があります。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

status

string

必須. CDSの状態です。 以下の値が利用できます。
draft: ドラフト
prepared: 準備済
designed: 設計済
reviewed: レビュー済

designedAt

integer

必須. CDSが作成された日時です。UNIXタイムスタンプ形式を利用する必要があります。

authors

Map[ string, string, Author object ]

必須. CDSの作成者です。 この情報は外部ツールによって利用される可能性があり、関係者のスキルや経験を証明する重要な情報となります。

organizations

Map[ string, string, Organization object ]

CDS作成に関与する組織です。 この情報は外部ツールによって利用される可能性があり、組織のスキルや経験を証明する重要な情報となります。

JSON example
{
  "version": "1.0.0",
  "license": {
      "type": "CC0"
  },
  "title": {
      "en": "Sample system",
      "ja": "サンプルシステム",
      "ru": "Образец системы"
  },
  "description": {
      "en": "Sample description",
      "ja": "説明サンプル",
      "ru": "Пример описания"
  },
  "status": "draft",
  "designedAt": "1548731447",
  "authors": {
      "sampleHandleNameA": {
            "roles": ["designer"],
            "joinedAt": 1548730447,
            "leavedAt": 1548731447,
            "sign": xxxxxx123
      },
      "sampleHandleNameB": {
            "roles": ["designer", "auditor"],
            "joinedAt": 1548730447
      }
    },
    "organizations": {
      "sampleCompanyA": {
            "joinedAt": 1548730447,
            "leavedAt": 1548731447
      },
      "sampleCompanyB": {
            "joinedAt": 1548730447,
            "sign": xxxxxx123
      }
    }
}
YAML example
version: 1.0.0
license: 
      type: CC0
title: 
      en: Sample system
      ja: サンプルシステム
      ru: Образец системы
description: 
      en: Sample description
      ja: 説明サンプル
      ru: Пример описания
status: draft
designedAt: 1548731447
authors: 
      sampleHandleNameA: 
            roles: 
                  - designer
            joinedAt: 1548730447
            leavedAt: 1548731447
      sampleHandleNameB: 
            roles: 
                  - designer
                  - auditor
            sign: xxxxxxx123

            joinedAt: 1548730447
      organizations: 
            sampleHandleNameA: 
                  joinedAt: 1548730447
                  leavedAt: 1548731447
                  sign: xxxxxxx123
            sampleHandleNameB: 
                  joinedAt: 1548730447

Actor objects

クラウドにアクセスするユーザーや運用者、外部システムに関する情報を提供するオブジェクトです。 CDSを正しく設計、監査するため、包括的に表現されるべきです。


マーケットタイプのアクターオブジェクト

このオブジェクトは特定のマーケットに属する消費者、観客など、不特定多数の利用者に関する情報を提供します。 システム提供対象となるユーザ数やリクエスト数を把握するため、正しい数値を提供すべきです。

固定フィールド

フィールド名

種別

説明

type

string

必須. 固定値: 'market'.

title

Map[ string, string ]

必須. アクターの名称です。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

description

Map[ string, string ]

必須. アクターの説明です。 このテキストは外部ツールによる検索インデックスとして使われる可能性があります。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

market

Market object | Reference object

必須. アクターが属する市場に関する情報です。

marketShare

float

必須. 市場シェアを示します。 例えば 0.3 は 30% を意味します。

sourceIdentification

[ boolean ]

必須. 特定のIPアドレス範囲やドメイン名などで識別できるかどうかを意味します。 trueの場合、identificationGroup フィールドは必須です。

identificationGroup

string

IPアドレス範囲やドメイン名など。 sourceIdentification フィールドがtrueの場合は必須です。そして、sourceIdentification がfalseの場合、指定してはいけません。

JSON Example
{
  "type": "market",
  "title": {
        "en": "Customers", 
        "ja": "顧客",
        "ru": "Клиенты"
  },
  "description": {
        "en": "Users of our products.",
        "ja": "当社製品の利用ユーザー",
        "ru": "Пользователи нашей продукции."
  },
  "market": {
        "title": {
              "en": "65 years and over in U.S., July 2018", 
              "ja": "65才以上の人口 米国 2018年7月",
              "ru": "65 лет и старше в США, июль 2018 года"
        },
        "description": {
              "en": "General population data of U.S. at 2018 by govermental research.",
              "ja": "米国政府による2018年の人口統計",
              "ru": "Данные об общей численности населения США на 2018\nгод по данным государственных исследований."
        },
        "num": 51038120,
        "estimatedBy": "U.S. Census Bureau",
        "estimatedAt": 1530370800
  },
  "marketShare": 0.01,
  "sourceIdentification": false
}
YAML Example
type: market
title: 
      en: Customers 
      ja: 顧客
      ru: Клиенты
description: 
      en: Users of our products.
      ja: 当社製品の利用ユーザー
      ru: Пользователи нашей продукции.
market: 
      title: 
            en: 65 years and over in U.S., July 2018 
            ja: 65才以上の人口 米国 2018年7月
            ru: 65 лет и старше в США, июль 2018 года
      description: 
            en: General population data of U.S. at 2018 by govermental research.
            ja: 米国政府による2018年の人口統計
            ru: | 
                Данные об общей численности населения США на 2018
                год по данным государственных исследований.
      num: 51038120
      estimatedBy: U.S. Census Bureau
      estimatedAt: 1530370800
marketShare: 0.01
sourceIdentification: false

個人タイプのアクターオブジェクト

このオブジェクトは、運用担当者のような1人または複数の人物で構成されているアクターの種類に関する情報を提供します。 識別可能な個人とクラウドとの制限されたネットワーク接続を設計する際などに、使用べき種類のアクターです。

固定フィールド

フィールド名

種類

説明

type

string

必須. 固定値: 'persons'.

title

Map[ string, string ]

必須. アクターの名称です。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

description

Map[ string, string ]

必須. アクターの説明です。 このテキストは外部ツールによる検索インデックスとして使われる可能性があります。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

num

integer

必須. 本アクターを構成する人数です。

sourceIdentification

[ boolean ]

必須. 特定のIPアドレス範囲やドメイン名などで識別できるかどうかを意味します。 trueの場合、identificationGroup フィールドは必須です。

identificationGroup

string

IPアドレス範囲やドメイン名など。 sourceIdentification フィールドがtrueの場合は必須です。そして、sourceIdentification がfalseの場合、指定してはいけません。

JSON example
{
  "type": "persons",
  "title": {
      "en": "Operators",
      "ja": "運用担当者",
      "ru": "операторы"
  },
  "description": {
      "en": "Operators using management console.",
      "ja": "管理コンソールを利用する運用担当者",
      "ru": "Операторы, использующие консоль управления."
  },
  "num": 7,
  "sourceIdentification": true,
  "identificationGroup": "IPsOfOperatorGroupA"
}
YAML example
type: persons
title: a
      en: Operators 
      ja: 運用担当者
      ru: операторы
description: 
      en: Operators using management console.
      ja: 管理コンソールを利用する運用担当者
      ru: Операторы, использующие консоль управления.
num: 7
sourceIdentification: true
identificationGroup: IPsOfOperatorGroupA


外部システムタイプのアクターオブジェクト

このオブジェクトは外部システムのAPIやファイルインターフェイスなど、1つまたはいくつかのシステムで構成される種類のアクターに関する情報を提供します。 識別可能な外部システムとクラウドとの制限されたネットワーク接続を設計する際などに、使用べき種類のアクターです。

固定フィールド

フィールド名

種類

説明

type

string

必須. 固定値: 'externalSystem'.

title

Map[ string, string ]

必須. アクターの名称です。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

description

Map[ string, string ]

必須. アクターの説明です。 このテキストは外部ツールによる検索インデックスとして使われる可能性があります。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

sourceIdentification

[ boolean ]

必須. 特定のIPアドレス範囲やドメイン名などで識別できるかどうかを意味します。 trueの場合、identificationGroup フィールドは必須です。

identificationGroup

string

IPアドレス範囲やドメイン名など。 sourceIdentification フィールドがtrueの場合は必須です。そして、sourceIdentification がfalseの場合、指定してはいけません。

JSON Example
{
  "type": "externalSystem",
  "title": {
        "en": "API of SFA platform",
        "ja": "SFAプラットフォームのAPI",
        "ru": "API платформы SFA"
  },
  "description": {
        "en": "Providing GET and POST interfaces of sales information.",
        "ja": "販売情報のGETおよびPOSTインターフェースを提供する外部システム",
        "ru": "Предоставление GET и POST интерфейсов информации о продажах."
  },
  "sourceIdentification": true,
  "identificationGroup": "ipsOfSFA"
}
YAML Example
type: externalSystem
title: 
      en: API of SFA platform
      ja: SFAプラットフォームのAPI
      ru: API платформы SFA
description: 
      en: Providing GET and POST interfaces of sales information.
      ja: 販売情報のGETおよびPOSTインターフェースを提供する外部システム
      ru: Предоставление GET и POST интерфейсов информации о продажах.
sourceIdentification: true
identificationGroup: ipsOfSFA

Resource object

このオブジェクトは、利用するクラウドリソースに関する情報を提供します。 JSONまたはYAMLでフォーマットされた外部ファイルに対する参照でなければなりません。 そして、以下のようなクラウド自動化ツールのために、整形されたデータであるべきです。

AWS CloudFormation
Azure Resource Manager
Google Cloud Deployment Manager
Alibaba Cloud Resource Orchestration Service
Terraform
Serverless Framework

固定フィールド

フィールド名

種類

説明

type

string

必須. プロビジョニングコードの種別です。以下値の中の1つである必要があります。
acf : AWS CloudFormation.
arm : Azure Resource Manager.
gdm : Google Cloud Deployment Manager.
aro : Alibaba Cloud Resource Orchestration Service.
tfm : Terraform.
slf : Serverless Framework.
oth : その他

$ref

string

必須. プロビジョニングコードで記述されたファイルへの参照で、Reference objectの$refアイテムと同じです。 .json, .yaml, または .ymlの拡張子を持つ外部ファイルを参照しなければなりません。 そしてその拡張子は、外部ツールによってリンク先のファイルフォーマットを検出するために利用されるべきものです。

JSON Example
{
  "type": "acf",
  "$ref": "xxx.json"
}
YAML Example
type: acf
$ref: xxx.json

Context object

このオブジェクトは、特定の機能を実行する目的でいくつかのアクターとリソースを関連付けることにより、 システムの利用ケースに関する情報を提供します。 それはCDSを正しく設計、監査するために、包括的に記述されるべきです。

固定フィールド

フィールド名

種類

説明

title

Map[ string, string ]

必須. コンテキストの名称です。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

description

Map[ string, string ]

必須. コンテキストの説明です。 このテキストは外部ツールによる検索インデックスとして使われる可能性があります。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

trigger

Trigger objects | Reference object

必須. トリガーオブジェクトを指定します。トリガーはこのコンテキストの開始イベントを意味します。

traffics

Map[ string, Traffic objects ] | [ Reference object ]

必須. トラフィックオブジェクトを格納します。各トラフィックはトラフィックオブジェクトを指定します。 トラフィックはコンテキスト内の通信経路を意味します。

maxPerformanceDurationRatio

float

最大性能の月間持続時間比率を示します。コンテキストに求められるコストを計算する際、本値を利用してtriggerやtrafficsに含まれる各Range values objectのmaxとmin値を合成します。 例えば月間3日だけ広告効果でDAUを向上させる設計の場合、DAU値をmin:0.01, max:0.1、本値を0.1と表現します。 CloudDesignは月間使用量を基準に性能とコストを表現しますが、本値により月間平均は1rpsながらも瞬間最大性能100rpsを期待する設計が記録できます。

JSON Example
{
  "title": {
        "en": "Customers view",
        "ja": "カスタマー閲覧",
        "ru": "Просмотр клиента"
  },
  "description": {
        "en": "Custormer's web site view of static contents through internet.",
        "ja": "インターネット経由の静的コンテンツ閲覧",
        "ru": "Просмотр статического содержимого через Интернет"
  },
  "trigger": {
        "$ref": "#/components/triggers/trigger1"
  },
  "traffics": [
        {"$ref": "#/components/traffics/traffic1"},
        {"$ref": "#/components/traffics/traffic2"},
        {"$ref": "#/components/traffics/traffic3"}
  ],
  "maxPerformanceDurationRatio": 0.1
}
YAML Example
title: 
      en: Customers view
      ja: カスタマー閲覧
      ru: Просмотр клиента
description: 
      en: Custormer's web site view of static contents through internet.
      ja: インターネット経由の静的コンテンツ閲覧
      ru: Просмотр статического содержимого через Интернет
trigger: 
      $ref: #/components/triggers/trigger1
traffics: 
      - $ref: #/components/traffics/traffic1
      - $ref: #/components/traffics/traffic2
      - $ref: #/components/traffics/traffic3
maxPerformanceDurationRatio: 0.1

Components object

CDSのさまざまな側面に対応する一連の再利用可能なオブジェクトを保持します。 componentsオブジェクト内で定義されたすべてのオブジェクトは、それらがcomponentsオブジェクトの外のプロパティから明示的に参照されない限り、CDSに影響を与えません。

固定フィールド

フィールド名

種類

説明

actors

Map [ string, Actor object ]

再利用可能なActor objectを保持します。

contexts

Map [ string, Context object ]

再利用可能なContext objectを保持します。

markets

Map [ string, Market object ]

再利用可能なMarket objectを保持します。

triggers

Map [ string, Trigger object ]

再利用可能なTrigger objectを保持します。

traffics

Map [ string, Traffic object ]

再利用可能なTraffic objectを保持します。

infoType

Map [ string, Information type object]

再利用可能なInformation type objectを保持します。

子スキーマ

Cloud Designの主要なデータ構造の子を説明します。 以下の説明では、フィールドが明示的に「必須」と定義されない、または「しなければならない」または「する/することになる」と記載されていない場合、オプションと見なすことができます。


License object

CDSのライセンス情報です。

固定フィールド

フィールド名

種類

説明

type

string

必須. CDSのライセンス種別です。以下何れかの値である必要があります。(CC0推奨)
CC0
Apache-2.0
MIT
BSD-2-Clause
OtherOpen
Closed

provider

string

ライセンスの提供者、またはその名称です。typeがOtherOpenまたはClosedの場合以外は記載してはいけません。

JSON Examples
RECOMMENDED
{
  "type": "CC0"
}
{
  "type": "Closed",
  "provider": "Reindeer technology PTE.LTD."
}
YAML Examples
RECOMMENDED
type: CC0
type: Closed
provider: Reindeer technology PTE.LTD.

Author object

このオブジェクトは、CDSの作者とその役割についての情報を提供します。 対象のシステム、クラウド技術、そして同システムのサービス提供市場について正しい知識を持っている人を 他の人が見つけるのを助けるため、包括的に記載されるべきです。

固定フィールド

フィールド名

種類

説明

roles

[ string ]

必須. CDSに関与した役割を保持します。役割は、以下の何れかの値でなければなりません。
planner: 企画者
designer: 設計者
auditor: CDSの監査者
operator: CDSで設計されたシステムの運用者
others: その他

joinedAt

integer

必須. 作者が本CDSに関与しはじめた日時です。UNIXTIME形式で記載されねばなりません。

leavedAt

integer

必須. 作者が本CDSの作成、運用から離任した日時です。UNIXTIME形式で記載されねばなりません。

sign

string

作者の署名です。本値は署名支援ツールによって自動生成されるべきもので、通常は空白です。

JSON Example
{
  "roles": ["designer","auditor"],
  "joinedAt": 1548730447,
  "leavedAt": 1548731447,
  "sign": ABC123DEF456HIJ789#abc
}
YAML Example
roles: 
      - designer
      - auditor
joinedAt: 1548730447
leavedAt: 1548731447
sign: ABC123DEF456HIJ789#abc

Organization object

このオブジェクトは、CDSの関連組織とその役割についての情報を提供します。 対象のシステム、クラウド技術、そして同システムのサービス提供市場について正しい知識を持っている組織を 他の人が見つけるのを助けるため、包括的に記載されるべきです。

固定フィールド

フィールド名

種類

説明

joinedAt

integer

必須. 組織が本CDSに関与しはじめた日時です。UNIXTIME形式で記載されねばなりません。

leavedAt

integer

必須. 組織が本CDSの作成、運用から離任した日時です。UNIXTIME形式で記載されねばなりません。

sign

string

組織の署名です。本値は署名支援ツールによって自動生成されるべきもので、通常は空白です。

JSON Example
{
"joinedAt": 1548730447,
"leavedAt": 1548731447,
"sign": ABC123DEF456HIJ789#abc
}
YAML Example
joinedAt: 1548730447
leavedAt: 1548731447
sign: ABC123DEF456HIJ789#abc

Market object

マーケットに関する情報を提供します。あなた自身、または第三者の調査結果を内包する可能性があります。

固定フィールド

フィールド名

種類

説明

title

Map[ string, string ]

必須. マーケットの名称です。 会員の特性、興味、推定年などを説明する言葉を含めることにより、このCDS上でユニークであるべきです。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

description

Map[ string, string ]

必須. マーケットの説明です。 それは詳細な算定者や算定目的などを説明する言葉を含むべきです。この説明は、設計者がこの情報を他のデザインで再利用できるかどうかを判断するのに役立ちます。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

num

integer

必須. 構成メンバーの数です。

estimatedBy

string

必須. 算定者の名称です。

estimatedAt

integer

必須. 算定された日時です。UNIXTIME形式で記載されねばなりません。

JSON Example
{
  "title": {
        "en": "65 years and over in U.S., July 2018", 
        "ja": "65才以上の人口 米国 2018年7月",
        "ru": "65 лет и старше в США, июль 2018 года"
  },
  "description": {
        "en": "General population data of U.S.\n at 2018 by govermental research.",
        "ja": "米国政府による2018年の人口統計",
        "ru": "Данные об общей численности населения США\n на 2018 год по данным государственных исследований."
  },
  "population": 51038120,
  "estimatedBy": "U.S. Census Bureau",
  "estimatedAt": 1530370800
}
YAML Example
title: 
      en: 65 years and over in U.S., July 2018 
      ja: 65才以上の人口 米国 2018年7月
      ru: 65 лет и старше в США, июль 2018 года
description: 
      en: |
      General population data of U.S. 
      at 2018 by govermental research.
      ja: 米国政府による2018年の人口統計
      ru: |
      Данные об общей численности населения США 
      на 2018 год по данным государственных исследований.
population: 51038120
estimatedBy: U.S. Census Bureau
estimatedAt: 1530370800

Trigger objects

contextの初期イベントに関する情報を提供します。 それはサーバへの人的なWebアクセス、または外部APIへの自動化された時限呼び出しである可能性があります。


Webアクセスタイプのトリガーオブジェクト

これはアクターによるトリガーの一種です。アクターによるクラウドリソースへのWebアクセスを表現します。 アクターは人間または外部システムの可能性があります。

固定フィールド

フィールド名

種類

説明

type

string

必須. 固定値: 'webAccess'.

description

Map[ string, string ]

必須. トリガーの説明です。トリガーの目的を端的に示すメモであるべきです。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

infoType

Reference object

必須. InfoType objectに対する参照です。このトリガーが扱う情報の種別を定義します。

ports

[ integer ]

必須. このトリガーのエンドポイント(endフィールドで定義)が利用するポート番号です。

internet

[ boolean ]

必須. この接続がインターネット経由か否かを示します。

restriction

[ boolean ]

必須. このトリガーのエンドポイントにおける、接続元IP、ドメインなどの接続制限の有無を示します。

dau

Range values object

必須. 日間アクティブユーザー率(Dayly Active User)です。例えば1日平均で、このstartフィールドで参照された アクターの1%がこのendフィールドで参照されるリソースにアクセスする場合、それは0.01となります。

pagesVisit

Range values object

必須. 訪問あたりの平均ページ数です。訪問者が訪問毎にどのくらいのページにアクセスするかを示します。

kbPage

Range values object

必須. 平均ページサイズです。(KB単位)

reqPage

Range values object

必須. ページあたりのリクエスト数です。ページあたりにどのくらいのリクエスト数(ページを構成する画像やHTMLなどへのリクエスト)が発生するかを示します。

busyHours

Range values object

必須. 1日あたりのアクセス集中時間です。例えば日々のアクセスがほぼ AM 9:00 - AM 11:00 と PM 17:00 - PM 19:00 に集中している場合、この値は 6 です。 一般的に8時間より1時間のほうが「集中度は高い」とみなされるため、min値よりmax値のほうが値が「小さくなる」ことにご注意ください。> 例:利用者が日中8時間以内に均等にアクセスするケースを最小性能、昼休みの1時間にアクセスが集中するケースを最大性能とする場合、min:8, max:1 と表現します。

postsVisit

Range values object

必須. 投稿する訪問者の割合を示します。例えば1日あたり、100,000人のアクターがDAU1%の割合で訪問する中で100件の投稿がある場合、この値は0.1となります。

kbPost

Range values object

必須. 平均投稿データサイズです。(KB単位)

start

Reference object

必須. actor objectsへの参照です。このトリガーの開始点を意味します。

end

[ Reference object ]

必須. resource objectに記載されたリソースへの参照でなければなりません。このトリガーのエンドポイントを示します。複数のリソースが指定された場合、startからの通信量は各リソースに均等に分割されるものと判断されます。リソースごとに通信量の比重が異なる場合、また用途や接続ポートなどが異なるリソースへの接続が必要な場合はここに列記すべきではありません。新しいコンテキストのendとして記述してください。 例:10GBのリクエストを送信するアクターに対して2台のWebサーバを列記した場合、各サーバが受信するリクエストは5GBとなります。静的コンテンツ用サーバと動的コンテンツ用サーバに9:1の割合でアクセスする設計の場合は両サーバを一つのendに併記せず、静的コンテンツを提供するコンテキストと動的コンテンツを提供するコンテキストを分けて、それぞれのendに各サーバを記述してください。

endpointTitle

Map[ string, string ]

必須. エンドポイントの名称です。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

storedRatio

Range values object

必須. endが受信したデータのうち、endで保管するデータサイズの比率を示します。 例えば、このトリガーでアクターがendに送信するデータの全てをend上で保管する場合、この値は1.0になります。データを 保管しない場合は0です。

storedInfoType

Reference object

InfoType objectへの参照です。このトリガーのendが保管するデータの種類を示します。

storageDescription

Map[ string, string ]

ストレージの説明です。 このテキストは外部ツールによる検索インデックスとして使われる可能性があり、ストレージの目的を的確に表現すべきです。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

JSON Example
{
  "type": "webAccess",
  "description": {
    "en": "API call for movie data acquisition.",
    "ja": "動画データ取得のためのAPI呼び出し。",
    "ru": "API вызов для сбора данных фильма"
  },
  "infoType": {
        "$ref": "#/components/infoType/general"
  },
  "ports": [443],
  "internet": true,
  "restriction": false,
  "dau": {"max": 0.1, "min": 0.03},
  "pagesVisit": {"max": 10, "min": 10},
  "kbPage": {"max": 1024, "min": 1024},
  "reqPage": {"max": 100, "min": 100},
  "busyHours": {"max": 3, "min": 3},
  "postRatio": {"max": 0.1, "min": 0.001},
  "kbPost": {"max": 100, "min": 100},
  "start": {
        "$ref": "#/actors/customer"
  },
  "end": [
        {"$ref": "#/resources/awsCloudEnvironment/data/Resources/cloudFront"}
  ],
  "endpointTitle": {
    "en": "LoadBalancer",
    "ja": "ロードバランサ",
    "ru": "Балансировщик нагрузки"
  },
  "storedRatio": {"max": 0.3, "min": 0.1},
  "storedInfoType": {
    "$ref": "#/components/infoType/general"
  },
  "storageDescription": {
    "en": "Logging for API usage tracing.",
    "ja": "API利用状況把握のためのログ保管",
    "ru": "Хранение журнала для статуса использования API"
  }
}
YAML Example
type: webAccess
description: {
      en: Static content distribution,
      ja: 静的コンテンツの配信,
      ru: Распределение статического контента
infoType: 
      $ref: #/components/infoType/general
ports: [443]
internet: true
restriction: false
dau: {max: 0.1, min: 0.03}
pagesVisit: {max: 10, min: 10}
kbPage: {max: 1024, min: 1024}
reqPage: {max: 100, min: 100}
busyHours: {max: 3, min: 3}
postRatio: {max: 0.1, min: 0.001}
kbPost: {max: 100, min: 100}
start: 
      $ref: #/actors/customer
end: 
      - $ref: #/resources/awsCloudEnvironment/data/Resources/cloudFront
endpointTitle: 
      en: LoadBalancer
      ja: ロードバランサ
      ru: Балансировщик нагрузки
storedRatio: {max: 0.5, min: 0.3}
storedInfoType: 
      $ref: #/components/infoType/general
storageDescription: {
      en: Logging for API usage tracing.,
      ja: API利用状況把握のためのログ保管,
      ru: Хранение журнала для статуса использования API


時限アクションタイプのトリガーオブジェクト

これはアクターまたはコンピューティングリソースによって発動されるタイプのトリガーです。 アクターまたはcloud computingリソースからの時限アクションを表現します。

固定フィールド

フィールド名

種類

説明

type

string

必須. 固定値: 'timedAction'.

description

Map[ string, string ]

必須. トリガーの説明です。トリガーの目的を端的に示すメモであるべきです。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

infoType

Reference object

必須. InfoType objectへの参照です。 トリガーが扱う情報の種類を明示します。

ports

[ integer ]

必須. トリガーのエンドポイントが利用するポート番号です。

internet

[ boolean ]

必須. トリガーがインターネット経由の通信を行うかどうかを明示します。

restriction

[ boolean ]

必須. トリガーのエンドポイントが接続元IP、ドメイン、その他の接続制限をかけているかどうかを明示します。

onlineRps

Range values object

必須. このトリガーが発火した時の、1秒当たりの要求数。 開始点(startフィールド)からエンドポイント(endフィールド)に 対するリクエストの要求性能を明示します。 たとえば、毎週月曜日の朝にバッチシステムが動作し、各バッチが1秒間に2回のスループットで外部APIにアクセスする場合は2.0です。

reqMonth

Range values object

必須. 開始点からエンドポイントへの月間リクエスト数です。 たとえば、バッチシステムが毎月1000人に3回メールマガジンを送信する場合、この値は9000になります。

kbRequest

Range values object

必須. 開始点からエンドポイントに対するリクエストあたりのデータサイズをKB単位で明示します。

kbResponse

Range values object

必須. 開始点からエンドポイントへのリクエスト毎に生じるレスポンスのデータサイズをKB単位で明示します。

start

Reference object

必須. トリガーの開始点を示します。actor object または resource objectへの参照でなければなりません。

end

[ Reference object ]

必須. トリガーのエンドポイントを示します。 resource object または actor objectへの参照でなければなりません。複数のリソースが指定された場合、startからの通信量は各リソースに均等に分割されるものと判断されます。リソースごとに通信量の比重が異なる場合、また用途や接続ポートなどが異なるリソースへの接続が必要な場合はここに列記すべきではありません。新しいコンテキストのendとして記述してください。

endpointTitle

Map[ string, string ]

必須. エンドポイントの名称です。キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

storedRatio

Range values object

必須. endが受信したデータのうち、endに保管されるデータサイズの比率を示します。 例えば、このトリガーでアクターがendに送信するデータの全てをend上で保管する場合、この値は1.0になります。データを 保管しない場合は0です。

storedInfoType

Reference object

InfoType objectへの参照です。このトリガーのendが保管するデータの種類を示します。

storageDescription

Map[ string, string ]

ストレージの説明です。 このテキストは外部ツールによる検索インデックスとして使われる可能性があり、ストレージの目的を的確に表現すべきです。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

JSON Example
{
  "type": "timedAction",
  "description": {
    "en": "API call for movie data acquisition.",
    "ja": "動画データ取得のためのAPI呼び出し。",
    "ru": "API вызов для сбора данных фильма"
  },
  "infoType": {
        "$ref": "#/components/infoType/general"
  },
  "ports": [443],
  "internet": false,
  "restriction": false,
  "onlineRps": {"max": 3, "min": 1},
  "reqMonth": {"max": 9000, "min": 5000},
  "kbRequest": {"max": 0.01, "min": 0.01},
  "kbResponse": {"max": 1, "min": 1},
  "start": {
        "$ref": "#/resources/awsCloudEnvironment/resources/jobServer"
  },
  "end": [
        {"$ref": "##/actors/api"}
  ],  
  "endpointTitle": {
    "en": "LoadBalancer",
    "ja": "ロードバランサ",
    "ru": "Балансировщик нагрузки"
  },
  "storedRatio": {"max": 0.3, "min": 0.1},
  "storedInfoType": {
    "$ref": "#/components/infoType/general"
  },
  "storageDescription": {
    "en": "Logging for API usage tracing.",
    "ja": "API利用状況把握のためのログ保管",
    "ru": "Хранение журнала для статуса использования API"
  }

}
YAML Example
type: timedAction
description: {
      en: Static content distribution,
      ja: 静的コンテンツの配信,
      ru: Распределение статического контента
infoType: 
      $ref: #/components/infoType/general
ports: [443]
internet: false
restriction: false
onlineRps: {max: 3, min: 1}
reqMonth: {max: 9000, min: 5000}
kbRequest: {max: 0.01, min: 0.01}
kbResponse: {max: 1, min: 1}
start: 
      $ref: #/resources/awsCloudEnvironment/resources/jobServer
end: 
      - $ref: #/actors/api
endpointTitle: 
      en: LoadBalancer
      ja: ロードバランサ
      ru: Балансировщик нагрузки
storedRatio: {max: 0.5, min: 0.3}
storedInfoType: 
      $ref: #/components/infoType/general
storageDescription: {
      en: Logging for API usage tracing.,
      ja: API利用状況把握のためのログ保管,
      ru: Хранение журнала для статуса использования API
 

Traffic objects

context内の通信に関する情報を提供します。これはトリガーイベントの後続処理で利用されなければなりません。 例えばWebサーバーからアプリケーションサーバへの動的コンテンツ要求や、アプリケーションサーバからデータベースへのデータ保存などが表現されます。


パススルー比率タイプのトラフィックオブジェクト

これはトラフィックオブジェクトの一種です。開始点が受信したリクエストの一部を後続のリソースに受け渡すという形で発生する通信を表現できます。 例えばロードバランサが受けたリクエストをWebサーバに送信する、アプリケーションが受けたリクエストにもとづいてメール配信キューを生成するといった通信の連鎖が表現できます。 その際、本トラフィックのエンドポイント(endフィールド)が受信するデータサイズは、本トラフィックの前段の通信(sourceフィールド)が 受信したリクエストの何パーセントにあたるかといった表現方法になります。したがって、前段の通信が1MBのPOST値を受け取った後にサーバ内で3MBにデータを拡張して 本トラフィックのエンドポイントに受け渡すといった場合には、データサイズは300%になる(passThroughReqRatio>フィールドが3)と表現できます。

固定フィールド

フィールド名

種類

説明

type

string

必須. 固定値: 'passThroughRatio'.

description

Map[ string, string ]

必須. トラフィックの説明です。 このテキストは外部ツールによる検索インデックスとして使われる可能性があります。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

infoType

Reference object

必須. InfoType objectへの参照です。 トラフィックが扱う情報の種類を明示します。

ports

[ integer ]

必須. トラフィックのエンドポイントが利用するポート番号です。

internet

[ boolean ]

必須. トラフィックがインターネット経由の通信を行うかどうかを明示します。

restriction

[ boolean ]

必須. トラフィックのエンドポイントが接続元IP、ドメイン、その他の接続制限をかけているかどうかを明示します。

source

Reference object

必須. trigger object または traffic objectへの参照です。 このトラフィックの開始点を意味します。 これは、endフィールドに記述されているすべてのリソースまたはアクターオブジェクトに影響を及ぼします。

end

[ Reference object ]

必須. このトラフィックのエンドポイントを意味します。 actor objects または resource object内に記述された各リソースへの参照です。複数のリソースが指定された場合、startからの通信量は各リソースに均等に分割されるものと判断されます。リソースごとに通信量の比重が異なる場合、また用途や接続ポートなどが異なるリソースへの接続が必要な場合はここに列記すべきではありません。新しいコンテキストのendとして記述してください。

endpointTitle

Map[ string, string ]

必須. エンドポイントの名称です。キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

passThroughReqRatio

Range values object

必須. 前段のトリガーやトラフィック(sourceフィールド)が受信したリクエストのうち、 何パーセントが後続となる本トラフィックのエンドポイント(end)に流入するかを示します。 例えば前段のトリガーがユーザーから100,000/月のリクエストを受信し、50%を自身のキャッシュ、50%を本トラフィックに 送信する場合、この値は0.5となります。

compositResRatio

Range values object

必須. 前段のトリガーやトラフィック(sourceフィールド)が扱うレスポンスデータのサイズを基準と して、本トラフィックがその何パーセントにあたるサイズのデータを前段のトリガーやトラフィックに返却するかを記述します。 例えば前段のトリガーがユーザーに10GB/月のデータを返却する場合、この値が0.5であれば 本トラフィックから前段のトリガーに対して5GB/月のデータを返却することになります。

storedRatio

Range values object

必須. endが受信したデータのうち、endで保管するデータサイズの比率を示します。 例えば、このトラフィックで送信元がendに送信するデータの全てをend上で保管する場合、この値は1.0になります。データを 保管しない場合は0です。

storedInfoType

Reference object

InfoType objectへの参照です。このトラフィックのendが保管するデータの種類を示します。

storageDescription

Map[ string, string ]

ストレージの説明です。 このテキストは外部ツールによる検索インデックスとして使われる可能性があり、ストレージの目的を的確に表現すべきです。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

JSON Example
{
  "type": "passThroughRatio",
  "description": {
    "en": "Static content distribution",
    "ja": "静的コンテンツの配信",
    "ru": "Распределение статического контента"
  },
  "infoType": {
        "$ref": "#/components/infoType/general"
  },
  "ports": [80],
  "internet": false,
  "restriction": false,
  "source": {"$ref": "#/trigger/customer"},
  "end": [
        {"$ref": "#/resources/awsCloudEnvironment/data/Resources/s3"}
  ],
  "passThroughReqRatio": {"max": 1, "min": 0.1},
  "compositResRatio": {"max": 0.5, "min": 0.5},
  "endpointTitle": {
    "en": "LoadBalancer",
    "ja": "ロードバランサ",
    "ru": "Балансировщик нагрузки"
  },
  "storedRatio": {"max": 0.3, "min": 0.1},
  "storedInfoType": {
    "$ref": "#/components/infoType/general"
  },
  "storageDescription": {
    "en": "Logging for API usage tracing.",
    "ja": "API利用状況把握のためのログ保管",
    "ru": "Хранение журнала для статуса использования API"
  }
}
YAML Example
type: passThroughRatio
description: {
      en: Static content distribution,
      ja: 静的コンテンツの配信,
      ru: Распределение статического контента
infoType: 
      $ref: #/components/infoType/general
ports: [80]
internet: false
restriction: false
source: 
      $ref: #/trigger/customer
end: 
    - $ref: #/resources/awsCloudEnvironment/data/Resources/s3
passThroughReqRatio: {max: 1, min: 0.1}
compositResRatio: {max: 0.5, min: 0.5}
endpointTitle: 
      en: LoadBalancer
      ja: ロードバランサ
      ru: Балансировщик нагрузки
storedRatio: {max: 0.5, min: 0.3}
storedInfoType: 
      $ref: #/components/infoType/general
storageDescription: {
      en: Logging for API usage tracing.,
      ja: API利用状況把握のためのログ保管,
      ru: Хранение журнала для статуса использования API
  

InfoType object

情報の種類と必要なセキュリティレベルを表します。 本オブジェクトにより、取り扱う情報タイプを定義し、クラウドリソースで 受信、保存、処理される情報を分類すべきです。

固定フィールド

フィールド名

種類

説明

title

Map[ string, string ]

必須. 情報種別の名称です。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

description

Map[ string, string ]

必須. 情報種別の説明です。 このテキストは外部ツールによる検索インデックスとして使われる可能性があります。 キーはISO 639-1の2文字の言語コードでなければなりません。 そして値はUTF-8の文字列でなければなりません。

confidential

boolean

必須. 機密情報か否かを定義します。

privacy

boolean

必須. プライバシー情報を含むか否かを定義します。法的に守られるべき情報の存在を意味します。

definedBy

string

必須. 作成者です。

definedAt

integer

必須. 作成日です。UNIXTIME形式で記述されなければなりません。

JSON Example
{
  "title": {
        "en": "privacy level", 
        "ja": "個人情報取り扱いレベル",
        "ru": "Чувствительный уровень"
  },
  "description": {
        "en": "Contains privacy information.",
        "ja": "個人情報を含む",
        "ru": "Содержит конфиденциальную личную информацию."
  },
  "confidential": true,
  "privacy": true,
  "definedBy": "ABC company",
  "definedAt": 1530370800
}
YAML Example
title: 
      en: confidential level 
      ja: 個人情報取り扱いレベル
      ru: Чувствительный уровень
description: 
      en: Contains privacy information.
      ja: 個人情報を含む
      ru: Содержит конфиденциальную личную информацию.
confidential: true
privacy: true
definedBy: ABC company
definedAt: 1530370800

Common Schema

Cloud designの汎用データ構造について説明します。 以下の説明では、フィールドが明示的に「必須」と定義されない、または「しなければならない」または「する/することになる」と記載されていない場合、オプションと見なすことができます。


Range values object

CDSの様々なフィールドで利用される、値範囲を示すオブジェクトです。

固定フィールド

フィールド名

種類

説明

max

float

必須. 値範囲の最大値を意味します。

min

float

必須. 値範囲の最小値を意味します。

JSON Example
{
  "max": 1.0,
  "min": 0.01
}
YAML Example
max: 1.0
min: 0.01

Reference object

CDSの様々なフィールドからCDSやクラウドオートメーションツール用ファイル内のjson/yamlオブジェクトを 参照する際に利用する参照先指定オブジェクトです。参照オブジェクトはJSON参照によって定義されており、 同じ構造、動作、および規則に従います。 この仕様では、参照の解決はJSONスキーマ仕様ではなく JSON参照仕様で定義されているとおりに行われます。

固定フィールド

フィールド名

種類

説明

$ref

string

必須. Reference strings. 同一ファイルの場合は#/で始まる形で参照を記述し、必ずルートオブジェクトからのパスを記述します。 また外部ファイルを指定するときは、必ず拡張子.json.yaml、または.ymlを付けたファイル名から参照を記述し、 #/以降は同一ファイルの場合と同様に記述します。

JSON Example
{
  "$ref": "#/components/actors/custormers"
}
JSON Relative Documents With Embedded Schema Example
{
  "$ref": "externalfile.yaml#/components/actors/custormers"
}
YAML Example
$ref: #/components/actors/custormers
YAML Relative Documents With Embedded Schema Example
$ref: externalfile.yaml#/components/actors/custormers

付録


参考資料

Cloud Design仕様は Reindeer Projectの 一環として生まれました。
Reindeer Projectはクラウド活用の支援を通じて、すべての人々につくる力を届けたいと願っています。
誰もが自分の力でサービスを創造できる社会は、表現の自由と生活様式や価値観の多様性をもたらすだけではありません。それはまた、すべての人々に対する富の再分配を促進し、世界中の人々の平均的な富と幸福を改善すると信じています。


ホワイトペーパー
Reindeer projectの目的と計画が記されています。


Cloud Design の6状態
今後のツールとエコシステム展開のイメージです。



商標

・アマゾン ウェブ サービス、Amazon Web Services、AWS、およびかかる資料で使用されるその他のAWS商標は、Amazon.com, Inc.またはその関連会社の商標です。
・Google、「 Google Cloud Platform (GCP) 」「 Google Cloud Platform (GCP) ロゴ 」は、 Google LLCの商標または登録商標です。
・Microsoft、Microsoft Azureは、米国Microsoft Corporationの、米国およびその他の国における登録商標または商標です。
・Terraformは、HashiCorpの登録商標または商標です。
・その他、記載されている会社名および商品・サービス名は各社の登録商標または商標です。

リビジョン


バージョン

リリース日

備考

1.0.0

2019-07-31

Cloud Design Specificationの最初の公式リリース

1.0.0(バージョン変更なし)

2019-08-15

本資料にReindeer Editorへのリンクを追加

1.1.0

2020-03-18

デザインの関係者表現を拡充(組織と本人証明サインを追加)
'info' オブジェクトに 'organizations' プロパティを追加
'author' オブジェクトに 'sign' プロパティを追加

1.2.0

2020-10-08

Serverless Framework をサポート

1.3.0

2020-11-10

ContextにmaxPerformanceDurationRatioを追加し、合成コスト表現をサポート

1.3.1

2020-11-10

maxPerformanceDurationRatioの型定義ミスを修正

1.3.1(変更なし)

2020-11-12

本ドキュメントのbusyHoursパラメータに説明を補足

1.3.1(変更なし)

2021-01-14

本ドキュメントのいくつかの説明表現を改善

1.3.2

2021-01-15

titleとdescriptionの最大文字長を150字に変更

1.3.2(変更なし)

2021-03-01

本ドキュメントのいくつかの説明表現を改善

1.3.2(変更なし)

2021-06-11

商標表記を追加

1.3.2(変更なし)

2023-04-17

ルートスキーマのjsonサンプルを追加