diff options
Diffstat (limited to 'docs/APEX-Introduction.rst')
-rw-r--r-- | docs/APEX-Introduction.rst | 545 |
1 files changed, 0 insertions, 545 deletions
diff --git a/docs/APEX-Introduction.rst b/docs/APEX-Introduction.rst deleted file mode 100644 index 90dd9e747..000000000 --- a/docs/APEX-Introduction.rst +++ /dev/null @@ -1,545 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - - -A short Introduction to APEX -***************************** - -.. contents:: - :depth: 3 - -Introduction to APEX -^^^^^^^^^^^^^^^^^^^^ - - .. container:: sectionbody - - .. container:: paragraph - - APEX stand for Adaptive Policy EXecution. It is a - lightweight engine for execution of policies. APEX allows - you to specify logic as a policy, logic that you can adapt - on the fly as your system executes. The APEX policies you - design can be really simple, with a single snippet of logic, - or can be very complex, with many states and tasks. APEX - policies can even be designed to self-adapt at execution - time, the choice is yours! - - .. container:: imageblock - - .. container:: content - - |Simple APEX Overview| - - .. container:: title - - Figure 1. Simple APEX Overview - - .. container:: paragraph - - The Adaptive Policy Engine in APEX runs your policies. These - policies are triggered by incoming events. The logic of the - policies executes and produces a response event. The - *Incoming Context* on the incoming event and the *Outgoing - Context* on the outgoing event are simply the fields and - attributes of the event. You design the policies that APEX - executes and the trigger and action events that your - policies accept and produce. Events are fed in and sent out - as JSON or XML events over Kafka, a Websocket, a file or - named pipe, or even standard input. If you run APEX as a - library in your application, you can even feed and receive - events over a Java API. - - .. container:: imageblock - - .. container:: content - - |APEX States and Context| - - .. container:: title - - Figure 2. APEX States and Context - - .. container:: paragraph - - You design your policy as a chain of states, with each state - being fed by the state before. The simplest policy can have - just one state. We provide specific support for the - four-state `MEDA (Match Establish Decide - Act) <https://www.researchgate.net/publication/303564082_Apex_An_Engine_for_Dynamic_Adaptive_Policy_Execution>`__ - policy state model and the three-state `ECA (Event Condition - Action) <https://en.wikipedia.org/wiki/Event_condition_action>`__ - policy state model. APEX is fully distributed. You can - decide how many APEX engine instances to run for your - application and on which real or virtual hosts to run them. - - .. container:: paragraph - - In APEX, you also have control of the *Context* used by your - policies. Context is simply the state information and data - used by your policies. You define what context your policies - use and what the scope of that context is. *Policy Context* - is private to a particular policy and is accessible only to - whatever APEX engines are running that particular policy. - *Global Context* is available to all policies. *External - Context* is read-only context such as weather or topology - information that is provided by other systems. APEX keeps - context coordinated across all the the instances running a - particular policy. If a policy running in an APEX engine - changes the value of a piece of context, that value is is - available to all other APEX engines that use that piece of - context. APEX takes care of distribution, locking, writing - of context to persistent storage, and monitoring of context. - - .. container:: imageblock - - .. container:: content - - |The APEX Eco-System| - - .. container:: title - - Figure 3. The APEX Eco-System - - .. container:: paragraph - - The APEX engine (AP-EN) is available as a Java library for - inclusion in your application, as a microservice running in - a Docker container, or as a stand-alone service available - for integration into your system. APEX also includes a - policy editor (AP-AUTH) that allows you to design your - policies and a web-based policy management console you use - to deploy policies and to keep track of the state of - policies and context in policies. Context handling (AP-CTX) - is integrated into the APEX engine and policy deployment - (AP-DEP) is provided as a servlet running under a web - framework such as `Apache - Tomcat <http://tomcat.apache.org/>`__. - -APEX Configuration -^^^^^^^^^^^^^^^^^^ - - .. container:: sectionbody - - .. container:: paragraph - - An APEX engine can be configured to use various combinations - of event input handlers, event output handlers, event - protocols, context handlers, and logic executors. The system - is build using a plugin architecture. Each configuration - option is realized by a plugin, which can be loaded and - configured when the engine is started. New plugins can be - added to the system at any time, though to benefit from a - new plugin an engine will need to be restarted. - - .. container:: imageblock - - .. container:: content - - |APEX Configuration Matrix| - - .. container:: title - - Figure 4. APEX Configuration Matrix - - .. container:: paragraph - - The APEX distribution already comes with a number of - plugins. The figure above shows the provided plugins. Any - combination of input, output, event protocol, context - handlers, and executors is possible. - -APEX Policy Matrix -^^^^^^^^^^^^^^^^^^ - - .. container:: sectionbody - - .. container:: paragraph - - APEX offers a lot of flexibility for defining, deploying, - and executing policies. Based on a theoretic model, it - supports virtually any policy model and allows to translate - legacy policies into the APEX execution format. However, the - most important aspect for using APEX is to decide what - policy is needed, what underlying policy concepts should be - used, and how the decision logic should be realized. Once - these aspects are decided, APEX can be used to execute the - policies. If the policy evolves, say from a simple decision - table to a fully adaptable policy, only the policy - definition requires change. APEX supports all of that. - - .. container:: paragraph - - The figure below shows a (non-exhaustive) matrix, which will - help to decide what policy is required to solve your - problem. Read the matrix from left to right choosing one - cell in each column. - - .. container:: imageblock - - .. container:: content - - |APEX Policy Matrix| - - .. container:: title - - Figure 5. APEX Policy Matrix - - .. container:: paragraph - - The policy can support one of a number of stimuli with an - associated purpose/model of the policy, for instance: - - .. container:: ulist - - - Configuration, i.e. what should happen. An example is an - event that states an intended network configuration and - the policy should provide the detailed actions for it. - The policy can be realized for instance as an obligation - policy, a promise or an intent. - - - Report, i.e. something did happen. An example is an event - about an error or fault and the policy needs to repair - that problem. The policy would usually be an obligation, - utility function, or goal policy. - - - Monitoring, i.e. something does happen. An example is a - notification about certain network conditions, to which - the policy might (or might not) react. The policy will - mitigate the monitored events or permit (deny) related - actions as an obligation or authorization. - - - Analysis, i.e. why did something happen. An example is an - analytic component sends insights of a situation - requiring a policy to act on it. The policy can solve the - problem, escalate it, or delegate it as a refrain or - delegation policy. - - - Prediction, i.e. what will happen next. An example are - events that a policy uses to predict a future network - condition. The policy can prevent or enforce the - prediction as an adaptive policy, a utility function, or - a goal. - - - Feedback, i.e. why did something happen or not happen. - Similar to analysis, but here the feedback will be in the - input event and the policy needs to something with that - information. Feedback can be related to history or - experience, for instance a previous policy execution. The - policy needs to be context-aware or be a meta-policy. - - .. container:: paragraph - - Once the purpose of the policy is decided, the next step is - to look into what context information the policy will - require to do its job. This can range from very simple to a - lot of different information, for instance: - - .. container:: ulist - - - No context, nothing but a trigger event, e.g. a string or - a number, is required - - - Event context, the incoming event provides all - information (more than a string or number) for the policy - - - Policy context (read only), the policy has access to - additional information related to its class but cannot - change/alter them - - - Policy context (read and write), the policy has access to - additional information related to its class and can alter - this information (for instance to record historic - information) - - - Global context (read only), the policy has access to - additional information of any kind but cannot - change/alter them - - - Global context (read and write), the policy the policy - has access to additional information of any kind and can - alter this information (for instance to record historic - information) - - .. container:: paragraph - - The next step is to decide how the policy should do its job, - i.e. what flavor it has, how many states are needed, and how - many tasks. There are many possible combinations, for - instance: - - .. container:: ulist - - - Simple / God: a simple policy with 1 state and 1 task, - which is doing everything for the decision-making. This - is the ideal policy for simple situation, e.g. deciding - on configuration parameters or simple access control. - - - Simple sequence: a simple policy with a number of states - each having a single task. This is a very good policy for - simple decision-making with different steps. For - instance, a classic action policy (ECA) would have 3 - states (E, C, and A) with some logic (1 task) in each - state. - - - Simple selective: a policy with 1 state but more than one - task. Here, the appropriate task (and it’s logic) will be - selected at execution time. This policy is very good for - dealing with similar (or the same) situation in different - contexts. For instance, the tasks can be related to - available external software, or to current work load on - the compute node, or to time of day. - - - Selective: any number of states having any number of - tasks (usually more than 1 task). This is a combination - of the two policies above, for instance an ECA policy - with more than one task in E, C, and A. - - - Classic directed: a policy with more than one state, each - having one task, but a non-sequential execution. This - means that the sequence of the states is not pre-defined - in the policy (as would be for all cases above) but - calculated at runtime. This can be good to realize - decision trees based on contextual information. - - - Super Adaptive: using the full potential of the APEX - policy model, states and tasks and state execution are - fully flexible and calculated at runtime (per policy - execution). This policy is very close to a general - programming system (with only a few limitations), but can - solve very hard problems. - - .. container:: paragraph - - The final step is to select a response that the policy - creates. Possible responses have been discussed in the - literature for a very long time. A few examples are: - - .. container:: ulist - - - Obligation (deontic for what should happen) - - - Authorization (e.g. for rule-based or other access - control or security systems) - - - Intent (instead of providing detailed actions the - response is an intent statement and a further system - processes that) - - - Delegation (hand the problem over to someone else, - possibly with some information or instructions) - - - Fail / Error (the policy has encountered a problem, and - reports it) - - - Feedback (why did the policy make a certain decision) - -Flexible Deployment -^^^^^^^^^^^^^^^^^^^ - - .. container:: sectionbody - - .. container:: paragraph - - APEX can be deployed in various ways. The following figure - shows a few of these deployment options. Engine and (policy) - executors are named UPe (universal policy engine, APEX - engine) and UPx (universal policy executor, the APEX - internal state machine executor). - - .. container:: imageblock - - .. container:: content - - |APEX Deployment Options| - - .. container:: title - - Figure 6. APEX Deployment Options - - .. container:: olist loweralpha - - a. For an interface or class - - .. container:: ulist - - - Either UPx or UPe as association - - b. For an application - - .. container:: ulist - - - UPx as object for single policies - - - UPe as object for multiple policies - - c. For a component (as service) - - .. container:: ulist - - - UPe as service for requests - - - UPec as service for requests - - d. As a service (PolaS) - - .. container:: ulist - - - One or more UPe with service i/f - - - One or more Upec/UPec with service i/f - - - One or more Upec/UPec with service i/f - - e. In a control loop - - .. container:: ulist - - - UPe as decision making part - - - UPec as decision making part - - f. On cloud compute nodes - - .. container:: ulist - - - Nodes with only UPe or Upec - - - Nodes with any combination of UPe, UPec - - g. A cloud example - - .. container:: ulist - - - Left: 2 UPec managing several UPe on different - cloud nodes - - - Right: 2 large UPec with different UPe/UPec - deployments - -Flexible Clustering -^^^^^^^^^^^^^^^^^^^ - - .. container:: sectionbody - - .. container:: paragraph - - APEX can be clustered in various ways. The following figure - shows a few of these clustering options. Cluster, engine and - (policy) executors are named UPec (universal policy - cluster), UPe (universal policy engine, APEX engine) and UPx - (universal policy executor, the APEX internal state machine - executor). - - .. container:: imageblock - - .. container:: content - - |APEX Clustering Options| - - .. container:: title - - Figure 7. APEX Clustering Options - - .. container:: olist loweralpha - - a. Single source/target, single UPx - - .. container:: ulist - - - Simple forward - - b. Multiple sources/targets, single UPx - - .. container:: ulist - - - Simple forward - - c. Single source/target, multiple UPx - - .. container:: ulist - - - Multithreading (MT) in UPe - - d. Multiple sources/targets, multiple UPx instances - - .. container:: ulist - - - Simple forward & MT in UPe - - e. Multiple non-MT UPe in UPec - - .. container:: ulist - - - Simple event routing - - f. Multiple MT UPe in UPec - - .. container:: ulist - - - Simple event routing - - g. Mixed UPe in UPec - - .. container:: ulist - - - Simple event routing - - h. Multiple non-MT UPec in UPec - - .. container:: ulist - - - Intelligent event routing - - i. Multiple mixed UPec in UPec - - .. container:: ulist - - - Intelligent event routing - - .. container:: olist loweralpha - - k. Mix of UPec in multiple UPec - - .. container:: ulist - - - External intelligent event routing - - - Optimized with UPec internal routing - -Resources -^^^^^^^^^ - - .. container:: sectionbody - - .. container:: ulist - - - APEX Documentation hosted on Github: - https://ericsson.github.io/apex-docs - - - APEX source code repository hosted by ONAP: - https://gerrit.onap.org/r/#/admin/projects/policy/apex-pdp - - - Issue Management (source and documentation, ONAP JIRA, - requires a Linux Foundation ID): - https://jira.onap.org/projects/POLICY/issues - - - List of APEX publications: - https://ericsson.github.io/apex-docs/apex-publications.html - -.. container:: - :name: footer - - .. container:: - :name: footer-text - - 2.0.0-SNAPSHOT - Last updated 2018-09-04 16:04:24 IST - -.. |Simple APEX Overview| image:: images/apex-intro/ApexSimple.png -.. |APEX States and Context| image:: images/apex-intro/ApexStatesAndContext.png -.. |The APEX Eco-System| image:: images/apex-intro/ApexEcosystem.png -.. |APEX Configuration Matrix| image:: images/apex-intro/ApexEngineConfig.png -.. |APEX Policy Matrix| image:: images/apex-intro/ApexPolicyMatrix.png -.. |APEX Deployment Options| image:: images/apex-intro/UpeeDeploymentOptions.png -.. |APEX Clustering Options| image:: images/apex-intro/UpeeClusterOptions.png - |