# Nedbank AutoVal Solution
## Introduction
This document serves to clarify the technical landscape of the Lightstone AutoVal solution and to illustrate the non-functional requirements therein. The following topics will be covered throughout the document.
* Technical Landscape
* An overview of the current technology stack.
* Essential cloud policy as well as the container view of the system.
* Operations and Performance
* These pertain to relevant metrics for the performance of the solution
* Evaluation of current performance
* Security
* Fault Tolerance
* Sustainability
* Plans currently in the works for the AutoVal Solution
* AutoVal and its relation to EzVal.
## Technical Landscape
### Application(s) Stack
The AutoVal solution is currently supported by the following web scale technologies within the following modules.
</br>
#### Logic Apps - dependencies as is: tags WDL(Language), microsoft Azure(runtime dependency)
Logic apps are an azure service that allow the orchestration of workflows and effective integration into third party solutions through a visually driven programming interface. Currently as part of the AutoVal solution Lightstone makes use of Logic Apps to drive the orchestration between the various service dependencies as well as the conditional logic between those dependencies. In AutoVal we are able to quickly integrate what we need from our core data service as well as the incoming request from the Nedbank Staffware solution and orchestrate that to the Decision Engine that evaluates required criterea.
</br>
#### Azure Functions - dependencies as is: C#(Language), .netCore(runTime dependency)
Azure functions are the serverless compute service provided by Microsoft Azure that run as needed, thereby avoiding the necessity of provisioning infrastructure for such a service otherwise. This currently evaluates the Decision Tree provided by Nedbank as part of the Functional Requirements for AutoVal. This module is represent as an expression tree programmatically.
#### Kubernetes - dependencies as is to Lightstone: docker
Lightstone currently uses Azure Kubernetes Services to manage the Kubernetes container orchestration system. Within Lightstone several services already exist within the managed interface of the kubernetes cluster and are actively being used by existing clients. Further information on what api's Lightstone is able to provide can be made available as needed.
</br>
#### Docker - no dependencies: versatile to other container
Docker is the preferred container option currently for lightstone as it is the leading provider of containerization within the industry. Docker facilitates most of Lightstones essential API's and supporting services.
</br>
#### .NET Core
Dotnet Core is the primary runtime in use at Lightstone due to its small footprint and Microsoft's priority for enabling cross platform development. This enables the use of containerization strategies such as docker for linux and further versatility.
### Supporting Infrastructure
All infrastructure is currently supported by Azure Cloud services. The following areas of concern are outlined as follows.
#### Security
Security is provided by the Azure Api Management Gateway. Authentication is performed via Azure AD and managed via the API manager in the form of a subscription for Lightstone's services.
#### Auditing, Logging & Performance Monitoring
Azure takes care of auditing via the following capabilities that Lightsone makes use of.
* Azure diagnostics logs. These detail the activities of Azure resources, that is, they describe operations such as provisioning new virtual machines, security key generation etc.
* Azure Active directory reporting. Through Graph Api, user sign in and system activity as well as activity for a user group/role can be analyzed and monitored.
* Network Security Group. Detailed information regarding network traffic both in and out of Azure resources.
* Application Insights. Application Level monitoring that supports alerting, availability monitoring, machine learning capabilities to analyze trends withing application process activity and more.
Through these methods Lightstone is able to effectively identify and be notified of potential issues within the development of
#### Error handing
#### Debugging
### Additional Considerations