Skip to content

FTGO Application Modeling with TOSCA

// TODO


1. Overview: Used TOSCA Representations for Modeling Entities

// TODO

Proposed Entity
Used TOSCA Representation
Additional Requirements identified
System Service Template (→ Topology Template) ❌
Component ✔
Service SoftwareComponent Node ✔
Backing Service ❌
Storage Backing Service Database Node ✔
Endpoint Endpoint | Endpoint.Database Capability ❌
External Endpoint Endpoint.Public ❌
Link ConnectsTo Relationship ✔
Infrastructure Compute | DBMS Node ✔
Deployment Mapping HostedOn Relationship ❌
Request Trace ❌
Data Aggregate ❌
Backing Data Node→Properties ✔

2. Modeling Examples And Identified Extension Requirements

// TODO

📄 Modeling File: FTGO TOSCA Modeling

2.1 System Entity

// TODO

📄 Modeling File: FTGO TOSCA Modeling

Example:

# System Entity
tosca_definitions_version: tosca_simple_yaml_1_3

description:
  Modeling the FTGO Application with the proposed entities

metadata:
  template_name: FTGO Application

topology_template:

  # The different included Component and Infrastructure entities of the System
  node_templates:

    order_service:
      type: ...

    api_gateway:
      type: ...

    docker_host:
      type: ...

    ...

  # The different included Link and Deployment Mapping entities of the System
  relationship_templates:
    ...

Additional Requirements:

2.2 Component Entity

All included FTGO Components are either a Service, Backing Service or Storage Backing Service entity. Nevertheless, a Component entity has the same additional requirements.

Additional Requirements:

  • Possibility to assign Endpoints
  • Possibility to assign External Endpoints
  • Modeling Links between Services

2.3 Service Entity

// TODO

📄 Modeling File: FTGO TOSCA Modeling

Example:

node_templates:

  # Service Entity
  order_service:
    type: tosca.nodes.SoftwareComponent
    requirements:
      - host: docker_host
    ## Missing: Possibility of Endpoint and Link assignment

Additional Requirements:

  • Possibility to assign Endpoints
  • Possibility to assign External Endpoints
  • Modeling Links between Services

2.4 Backing Service Entity

No equivalent TOSCA representation available that can be used such that Service and Backing Service entities are distinguishable.

Previous Requirement: New Node Type needed

2.5 Storage Backing Service Entity

// TODO

📄 Modeling File: FTGO TOSCA Modeling

Example:

node_templates:

  # Storage Backing Service Entity
  ftgo_order_service:
    type: tosca.nodes.Database
    properties:
      name: ftgo_order_service
      port: 3306
      user: ftgo_order_service_user
      password: ftgo_order_service_password
    requirements:
      - host:
          node: mysql_service
          relationship: mySqlService_host_FtgoOrderService
    capabilities:
      database_endpoint:
        type: tosca.capabilities.Endpoint.Database
        properties:
          protocol: http
          port: 3306
          url_path: /sql
    ## Missing: Possibility of External Endpoint and Link assignment

Additional Requirements:

  • Possibility to assign External Endpoints
  • Modeling Links between Services

2.6 Endpoint Entity

// TODO

📄 Modeling File: FTGO TOSCA Modeling

Example:

node_templates:

  # Storage Backing Service Entity
  ftgo_order_service:
    type: tosca.nodes.Database
    properties:
      name: ftgo_order_service
      port: 3306
      user: ftgo_order_service_user
      password: ftgo_order_service_password
    requirements:
      - host:
          node: mysql_service
          relationship: mySqlService_host_FtgoOrderService
    capabilities:
      # Endpoint entity
      database_endpoint:
        type: tosca.capabilities.Endpoint.Database
        properties:
          protocol: http
          port: 3306
          url_path: /sql

Additional Requirements:

2.7 External Endpoint Entity

// TODO

📄 Modeling File: FTGO TOSCA Modeling

Examples:

api_gateway:
  type: ## Missing: no representable Node Type yet
  capabilities:
    # External Endpoint Entities
    - external_endpoint:
        type: tosca.capabilities.Endpoint.Public
        metadata:
          function: post_order
        properties:
          protocol: http
          port: 8087
          url_path: POST /orders
    - external_endpoint:
        type: tosca.capabilities.Endpoint.Public
        metadata:
          function: get_order_by_id
        properties:
          protocol: http
          port: 8087
          url_path: GET /orders/{orderId}
    ...

Additional Requirements:

// TODO

📄 Modeling File: FTGO TOSCA Modeling

Examples:

node_templates:
  ## Missing: Possibility to assign the Links to the involved Components

# Link Entities
relationship_templates:
  ...

  orderService_subscribes-to_Kafka-orderService-receiveFrom:
    type: tosca.relationships.ConnectsTo
    metadata:
      type_of_relation: subscribes to
    ## Missing: Possibility to model the specific Endpoint this Link connects to

  orderService_connects-to_MySQL-ftgoOrderService:
    type: tosca.relationships.ConnectsTo
    # Includes no metadata definition since it is optional
    ## Missing: Possibility to model the specific Endpoint this Link connects to

Additional Requirements:

  • Reference to specific Endpoint the Link connects to

2.9 Infrastructure Entity

// TODO

📄 Modeling File: FTGO TOSCA Modeling

Examples:

node_templates:

  # Infrastructure Entities
  mysql_service:
    type: tosca.nodes.DBMS
    properties:
      root_password: rootpassword
      port: 3306
    requirements:
      - host:
          node: docker_host
          relationship: dockerHost_host_mySqlService

  docker_host:
    type: tosca.nodes.Compute
    # Missing: Possibility to define a HostedOn Relationship to another Compute Node

  local_computer:
    type: tosca.nodes.Compute

Additional Requirements:

  • Compute Node to be hosted by another Compute Node

2.10 Deployment Mapping Entity

// TODO

📄 Modeling File: FTGO TOSCA Modeling

Example:

node_templates:
  ...

  # Version 1:
  # implicitly specifying the Deployment Mapping
  order_service:
    type: tosca.nodes.SoftwareComponent
    requirements:
      - host: docker_host # per Definition HostedOn Relationship Type

  # Version 2:
  # explicitly specifying the Deployment Mapping
  order_service:
    type: tosca.nodes.SoftwareComponent
    requirements:
      - host:
          node: docker_host
          relationship: dockerHost_host_orderService

  # Referenced Infrastructure entity
  docker_host:
    ...

# needed for Version 2:
relationship_templates:
  ...

  dockerHost_host_orderService:
    type: tosca.relationships.HostedOn

Additional Requirements:

2.11 Request Trace Entity

No equivalent TOSCA representation available that can be used.

Previous Requirement: New Node Type needed

2.12 Data Aggregate Entity

No equivalent TOSCA representation available that can be used.

Previous Requirement: New Node Type needed

2.13 Backing Data Entity

// TODO

📄 Modeling File: FTGO TOSCA Modeling

Example:

mysql_service:
  type: tosca.nodes.DBMS
  properties:
    root_password: rootpassword
    port: 3306
  requirements:
    - host:
        node: docker_host
        relationship: dockerHost_host_mySqlService

Additional Requirements:

  • Ability to define Backing Data entities more flexible

Last update: 2022-08-31
Back to top