Ralph Knag | 1fca6ac | 2017-12-05 12:05:57 -0500 | [diff] [blame] | 1 | .. This work is licensed under a Creative Commons Attribution 4.0 International License.
|
| 2 | .. http://creativecommons.org/licenses/by/4.0
|
| 3 |
|
| 4 | .. _intro:
|
| 5 |
|
| 6 |
|
Ralph Knag | d2cd31b | 2018-04-02 16:27:46 -0400 | [diff] [blame] | 7 | Overview
|
| 8 | ========
|
Ralph Knag | 1fca6ac | 2017-12-05 12:05:57 -0500 | [diff] [blame] | 9 |
|
| 10 | DCAE components are services that provide a specific functionality and
|
Ralph Knag | d2cd31b | 2018-04-02 16:27:46 -0400 | [diff] [blame] | 11 | are generally written to be composable with other DCAE components,
|
| 12 | although a component can run independently as well. The DCAE platform is
|
| 13 | responsible for running and managing DCAE service components reliably.
|
Ralph Knag | 1fca6ac | 2017-12-05 12:05:57 -0500 | [diff] [blame] | 14 |
|
| 15 | Currently, the DCAE platform supports two types of components, CDAP
|
| 16 | applications and Docker containers. For each, there are requirements
|
| 17 | that must be met for the component to integrate into the DCAE platform
|
Ralph Knag | d2cd31b | 2018-04-02 16:27:46 -0400 | [diff] [blame] | 18 | (see :doc:`CDAP <component-type-cdap>` and
|
| 19 | :doc:`Docker <component-type-docker>`).
|
Ralph Knag | 1fca6ac | 2017-12-05 12:05:57 -0500 | [diff] [blame] | 20 |
|
Ralph Knag | d2cd31b | 2018-04-02 16:27:46 -0400 | [diff] [blame] | 21 | A Component requires one or more data formats.
|
| 22 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
Ralph Knag | 1fca6ac | 2017-12-05 12:05:57 -0500 | [diff] [blame] | 23 |
|
Ralph Knag | d2cd31b | 2018-04-02 16:27:46 -0400 | [diff] [blame] | 24 | A component is a software application that performs a function. It
|
| 25 | doesn’t run independently; it depends upon other components. A
|
Ralph Knag | 1fca6ac | 2017-12-05 12:05:57 -0500 | [diff] [blame] | 26 | component’s function could require connecting to other components to
|
| 27 | fulfill that function. A component could also be providing its function
|
| 28 | as a service through an interface for other components to use.
|
| 29 |
|
Ralph Knag | d2cd31b | 2018-04-02 16:27:46 -0400 | [diff] [blame] | 30 | A component cannot connect to or be connected with any other component.
|
Ralph Knag | 1fca6ac | 2017-12-05 12:05:57 -0500 | [diff] [blame] | 31 | The upstream and downstream components must *speak* the same vocabulary
|
| 32 | or *data format*. The output of an one component must match another
|
| 33 | component’s input. This is necessary for components to function
|
| 34 | correctly and without errors.
|
| 35 |
|
| 36 | The platform requires data formats to ensure that a component will be
|
| 37 | run with other *compatible* components.
|
| 38 |
|
| 39 | Data formats can and should be shared by multiple components.
|
| 40 |
|
| 41 | Each Component requires a component specification.
|
| 42 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| 43 |
|
| 44 | The component specification is a JSON artifact that fully specifies the
|
| 45 | component, it’s interfaces, and configuration. It’s standardized for
|
Ralph Knag | d2cd31b | 2018-04-02 16:27:46 -0400 | [diff] [blame] | 46 | CDAP and Docker applications and is validated using a :doc:`JSON schema <./component-json-schema>`.
|
Ralph Knag | 1fca6ac | 2017-12-05 12:05:57 -0500 | [diff] [blame] | 47 |
|
| 48 | The component specification fully specifies all the configuration
|
| 49 | parameters of the component. This is used by the designer and by policy
|
| 50 | (future) to configure the runtime behavior of the component.
|
| 51 |
|
| 52 | The component specification is used to *generate* application
|
| 53 | configuration in a standardized JSON that the platform will make
|
| 54 | available to the component. This application configuration JSON will
|
| 55 | include:
|
| 56 |
|
| 57 | - Parameters that have been assigned values from the component
|
| 58 | specification, policy, and/or the designer
|
| 59 | - Connection details of downstream components
|
| 60 |
|
| 61 | The component specification is transformed by DCAE tooling (explained
|
| 62 | later) into TOSCA models (one for the component, and in the future, one
|
| 63 | for Policy). The TOSCA models then get transformed into Cloudify
|
| 64 | blueprints.
|
| 65 |
|
| 66 | The component specification is used by:
|
| 67 |
|
| 68 | - dcae_cli tool - to validate it
|
| 69 | - Design Tools - TOSCA models are generated from the component
|
| 70 | specification so that the component can be used by designers to
|
| 71 | compose new DCAE services in SDC.
|
| 72 | - Policy (future) - TOSCA models are generated from the component
|
| 73 | specification so that operations can create policy models used to
|
| 74 | dynamically configure the component.
|
| 75 | - the runtime platform - The component’s application configuration
|
| 76 | (JSON) is generated from the component specification and will be
|
| 77 | provided to the component at runtime.
|
| 78 |
|
| 79 | Onboarding
|
| 80 | ----------
|
| 81 |
|
| 82 | Onboarding is a process that ensures that the component is compliant
|
Ralph Knag | d2cd31b | 2018-04-02 16:27:46 -0400 | [diff] [blame] | 83 | with the DCAE platform rules. A command-line tool called
|
| 84 | :doc:`dcae-cli <./dcae-cli/quickstart>` is provided to
|
| 85 | help with onboarding. The high level summary of the onboarding process
|
| 86 | is:
|
Ralph Knag | 1fca6ac | 2017-12-05 12:05:57 -0500 | [diff] [blame] | 87 |
|
| 88 | 1. Defining the :doc:`data formats <data-formats>` if they don’t already
|
| 89 | exist.
|
Ralph Knag | d2cd31b | 2018-04-02 16:27:46 -0400 | [diff] [blame] | 90 | 2. Defining the :doc:`component specification <./component-specification/common-specification>`.
|
| 91 | See :doc:`docker <./component-specification/docker-specification>` and
|
| 92 | :doc:`CDAP <./component-specification/cdap-specification>`.
|
| 93 | 3. Use the dcae_cli tool to :any:`add the data formats <dcae_cli_add_a_data_format>` and
|
| 94 | :any:`add the component <dcae_cli_add_a_component>` to the
|
| 95 | onboarding catalog. This process will validate them as well.
|
| 96 | 4. Use the dcae_cli tool to
|
| 97 | :any:`deploy <dcae_cli_run_a_component>` the
|
| 98 | component. (The component is deployed to the environment indicated in
|
| 99 | the :any:`profile <dcae_cli_activate_profile>`
|
| 100 | section).
|
Ralph Knag | 1fca6ac | 2017-12-05 12:05:57 -0500 | [diff] [blame] | 101 | 5. Test the component. Also do pairwise-test the component with any
|
| 102 | other components it connects with.
|
| 103 | 6. Publish the component and data formats into the Service Design and
|
Ralph Knag | d2cd31b | 2018-04-02 16:27:46 -0400 | [diff] [blame] | 104 | Creation (SDC) ‘catalog’. (Currently, this is a manual step, not done
|
| 105 | via the dcae_cli tool).
|