PANCHAL | 0424f6f | 2020-03-27 19:28:03 -0400 | [diff] [blame] | 1 | ===================== |
| 2 | DCAE MOD Architecture |
| 3 | ===================== |
| 4 | |
| 5 | |
| 6 | DCAE MOD is composed of a mix of components developed in ONAP and other |
| 7 | components taken from the Apache Nifi project and modified for |
VENKATESH KUMAR | 6455974 | 2020-04-29 18:53:53 -0400 | [diff] [blame^] | 8 | appropriate use. The MOD architecture and design was intended to simplify the onboarding |
| 9 | and design experience in ONAP addressing below goals. |
PANCHAL | 0424f6f | 2020-03-27 19:28:03 -0400 | [diff] [blame] | 10 | |
VENKATESH KUMAR | 6455974 | 2020-04-29 18:53:53 -0400 | [diff] [blame^] | 11 | .. toctree:: |
| 12 | :maxdepth: 1 |
| 13 | |
| 14 | ./DCAE-MOD-goals.rst |
| 15 | |
| 16 | |
| 17 | MOD aims to streamline the construction, management, |
PANCHAL | 0424f6f | 2020-03-27 19:28:03 -0400 | [diff] [blame] | 18 | and evolution of DCAE flows from role to role, from environment to |
VENKATESH KUMAR | 6455974 | 2020-04-29 18:53:53 -0400 | [diff] [blame^] | 19 | environment, and from release to release. MOD is composed of three functional areas: onboarding, design, and |
| 20 | distribution and caters to different `user group <./Roles>`__ |
PANCHAL | 0424f6f | 2020-03-27 19:28:03 -0400 | [diff] [blame] | 21 | |
| 22 | |
VENKATESH KUMAR | 6455974 | 2020-04-29 18:53:53 -0400 | [diff] [blame^] | 23 | The below illustrations describe the architecture of DCAE-MOD and show the |
| 24 | usage flow in DCAE MOD |
PANCHAL | 0424f6f | 2020-03-27 19:28:03 -0400 | [diff] [blame] | 25 | |
| 26 | |image0| |
| 27 | |
| 28 | |image1| |
| 29 | |
| 30 | Onboarding API |
| 31 | -------------- |
| 32 | |
| 33 | It is a component developed to onboard |
| 34 | models/components/microservices (spec files) into DCAE MOD. |
| 35 | |
| 36 | Genprocessor |
| 37 | ------------ |
| 38 | |
| 39 | It has been developed in Java. This project is a tool to |
| 40 | experiment with generating a Nifi Processor POJO from a DCAE component |
| 41 | spec. |
| 42 | |
| 43 | Nifi Web UI |
| 44 | ----------- |
| 45 | |
| 46 | It is a component taken from the Apache Nifi Project but modified for |
| 47 | use in the MOD project. |
| 48 | |
| 49 | Apache NiFi is a dataflow system based on the concepts of flow-based |
| 50 | programming. It supports powerful and scalable directed graphs of data |
| 51 | routing, transformation, and system mediation logic. NiFi has a |
| 52 | web-based user interface for design, control, feedback, and monitoring |
| 53 | of dataflows. It is highly configurable along several dimensions of |
| 54 | quality of service, such as loss-tolerant versus guaranteed delivery, |
| 55 | low latency versus high throughput, and priority-based queuing. NiFi |
| 56 | provides fine-grained data provenance for all data received, forked, |
| 57 | joined cloned, modified, sent, and ultimately dropped upon reaching its |
| 58 | configured end-state. |
| 59 | |
| 60 | The NiFi UI provides mechanisms for creating automated dataflows, as |
| 61 | well as visualizing, editing, monitoring, and administering those |
| 62 | dataflows. The UI can be broken down into several segments, each |
| 63 | responsible for different functionality of the application. This section |
| 64 | provides screenshots of the application and highlights the different |
| 65 | segments of the UI. Each segment is discussed in further detail later in |
| 66 | the document. |
| 67 | |
| 68 | The users of Apache Nifi will find that it is used very differently than |
| 69 | intended to serve our purpose in the DCAE-MOD project. |
| 70 | |
| 71 | |
| 72 | Registry API |
| 73 | ------------ |
| 74 | |
| 75 | This component taken from the Apache Nifi project, is a REST API that |
| 76 | provides an interface to a registry with operations for saving, |
| 77 | versioning, reading NiFi flows and components. |
| 78 | |
| 79 | Distributor API |
| 80 | --------------- |
| 81 | |
| 82 | It is a component developed using the Flask framework in Python. |
| 83 | It is a HTTP API to manage distribution targets for DCAE design. |
| 84 | Distribution targets are DCAE runtime environments that have been |
| 85 | registered and are enabled to accept flow design changes that are to be |
| 86 | orchestrated in that environment. |
| 87 | |
| 88 | Flow Based Programming (FBP) |
| 89 | ---------------------------- |
| 90 | |
| 91 | NiFi’s fundamental design concepts closely relate to the main ideas of |
| 92 | Flow Based |
| 93 | Programming `[fbp] <https://nifi.apache.org/docs/nifi-docs/html/overview.html#fbp>`__. |
| 94 | |
| 95 | For more information on how some of the main NiFi concepts map to FBP, |
| 96 | check out https://nifi.apache.org/docs/nifi-docs/html/overview.html |
| 97 | |
| 98 | Runtime API |
| 99 | ----------- |
| 100 | |
| 101 | It is developed in Java’s Spring Boot framework. It |
| 102 | is a HTTP API to support runtime environment for DCAE-MOD. It has two |
| 103 | major functionalities: |
| 104 | |
| 105 | 1. It accepts changes on the flow-graph via fbp protocol |
| 106 | |
| 107 | 2. It generates and distributes blueprints based on the change made on |
| 108 | the flow-graph |
| 109 | |
| 110 | Blueprint Generator |
| 111 | ------------------- |
| 112 | |
| 113 | This tool allows the user to create a blueprint from a component spec json file. |
| 114 | This tool is used by the runtime api. |
| 115 | |
| 116 | Inventory API |
| 117 | ------------- |
| 118 | |
| 119 | DCAE Inventory is a web |
| 120 | service that provides the following: |
| 121 | |
| 122 | 1. Real-time data on all DCAE services and their components |
| 123 | |
| 124 | 2. Comprehensive details on available DCAE service types |
| 125 | |
| 126 | DCAE Inventory is a composite API that relies on other APIs to obtain |
| 127 | resources on underlying components and uses these resources to compose a |
| 128 | DCAE service resource. In addition, DCAE Inventory will store data that |
| 129 | is unique to the DCAE service level including: |
| 130 | |
| 131 | 1. DCAE service metadata |
| 132 | |
| 133 | 2. DCAE service type description and composition details |
| 134 | |
| 135 | 3. Relationships between DCAE service and DCAE service types and their |
| 136 | respective VNF and VNF types |
| 137 | |
| 138 | DCAE Inventory has a REST interface to service client requests. It has a |
| 139 | well-defined query interface that would filter result sets based upon |
| 140 | resource attributes. |
| 141 | |
| 142 | Here, think of it as a back end API for the DCAE dashboard. The runtime |
| 143 | posts Cloudify Blueprints to this API so they show up in the DCAE |
| 144 | dashboard. |
| 145 | |
| 146 | DCAE Dashboard |
| 147 | -------------- |
| 148 | |
| 149 | The DCAE dashboard provides visibility into running DCAE services for |
| 150 | operational purposes. It queries the DCAE Inventory for aggregate |
| 151 | details on all the running DCAE services and for getting up-to-date |
| 152 | status information on DCAE services and their components. |
| 153 | |
| 154 | End-to-End Flow |
| 155 | --------------- |
| 156 | |
| 157 | A model/component/microservice can be onboarded by a ms Developer by |
| 158 | posting a spec file on the onboarding API. Alternatively, an Acumos |
| 159 | model can be onboarded using the Acumos Adapter. Once successfully |
| 160 | onboarded, the genprocessor converts converts them to jars and onboards |
| 161 | them into Nifi i.e DCAE MOD. These artifacts are now available to use |
| 162 | from the Modified Nifi Web UI i.e DCAE Designer. |
| 163 | |
| 164 | The registry api offers version control and retrieval for flows. The |
| 165 | distributor api can be used to set distribution targets. Once a flow is |
| 166 | designed and distributed, it goes to the distributor api which is |
| 167 | supposed to post graph changes (in accordance with fbp) to the runtime |
| 168 | api. The runtime api generates and distributes blueprints based on the |
| 169 | change made on the flow-graph. These blueprints received by the DCAE |
| 170 | inventory can then be viewed and deployed from the DCAE dashboard. |
| 171 | |
| 172 | |
| 173 | |
| 174 | .. |image0| image:: ../images/DCAE-Mod-Architecture.png |
| 175 | |
| 176 | .. |image1| image:: ../images/Onboarding-with-DCAE-MOD.png |
| 177 | |
| 178 | .. |image2| image:: ../images/nifi-toolbar-components.png |