# Architecture

## **ZiSoft SOA Architecture**

![ZiSoft Awareness Application Architecture](/files/-Lv-44V_vTET6VfTLUpz)

### **1-** Ingress  Server ( Nginx ) :

Nginx has focused on high performance, high concurrency and low memory usage web server functionality, like load balancing, caching, access and bandwidth control, and the ability to integrate efficiently with a variety of applications

* HTTP Handler
* Serving Static Content
* NGINX Reverse Proxy
* NGINX Content Caching
* Compression and Decompression
* Secure Connect with SSL CA &#x20;

### 2- UI Server ( Angular ) :&#x20;

Frontend  part of the application that users can see and interact with directly in order to receive the backend capabilities of the system. It involves everything that the user can see, touch and experience.

### 3- Web Application Server **( Laravel) :**

\
**Laravel** is a web application framework with expressive, elegant syntax. ... **Laravel** attempts to take the pain out of development by easing common tasks **used** in the majority of web projects, such as authentication, routing, sessions, and caching

\- **AUTHORIZATION TECHNIQUE :**

&#x20;   Laravel  provides a simple way to organize authorization logic and control access to resources.

&#x20;**- OBJECT-ORIENTED LIBRARIES :**

&#x20; pre-installed libraries to implement  many advanced features, such as checking active users,                     Bcrypt hashing, password reset, CSRF (Cross-site Request Forgery) protection, and encryption.

**-ARTISAN :**&#x20;

Developer has to usually interact with the Laravel framework using a command line that creates and handles the Laravel project environment.&#x20;

**-MVC SUPPORT :**

Supports MVC Architecture ensuring clarity between logic and presentation. MVC helps in improving the performance, allows better documentation, and has multiple built-in functionalitie&#x73;**.**

**-SECURITY :**

Ues Bcrypt hashing algorithm for generating an encrypted representation of a password. Laravel uses prepared SQL statements which make injection attacks unimaginable. Along with this, Laravel provides a simple way to escape user input to avoid user injection of  tag.

**-SSO Integration :**

* One-click sign-in: Allows collaborators to sign in from your SSO provider without maintaining a separate username and password.
* Automatic provisioning: Allows authorized users to create account when they require access.

**-LDAP Integration :**&#x20;

&#x20;LDAP integration allows your instance to use your existing LDAP server as the master source of user data.Administrators integrate with a Lightweight Directory Access Protocol (LDAP) directory to streamline the user login process and to automate administrative tasks such as creating users and assigning them role

### 4- Analytics server  ( Metabase ) :

Analyzing data and presenting actionable information which helps executives, managers and other corporate users make informed training/phishing decisions.

\
&#x20;    **-  ETL** : Extract, Transform and Load. An ETL tool extracts the data from different RDBMS source   systems, transforms the data like applying calculations, concatenate, etc.

&#x20;   **-  BI :** information management tool that is used to track KPIs, metrics, and other key data points relevant to a business, department, or specific process. Through the use of data visualizations, **dashboards** simplify complex data sets to provide users with at a glance awareness of current performance.

### **5- Cron server :**

Laravel command scheduler allows for the fluent and expressive defining of command schedule within Laravel itself, and only a single Cron entry is needed on the server

### **6- Database Server ( MariaDB) :**&#x20;

**MariaDB**   open source relational database management system (DBMS) that is a compatible drop-in replacement for the widely **used** MySQL database technology.\
**MariaDB** sports **faster** and safer replication with updates being up to 2x **faster than** with traditional **MySQL** Replication setups. ... **MariaDB** replication is backward compatible with **MySQL** servers,

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://zisoft-awareness.gitbook.io/fawry-cloud-devops-internship/application-architecture/architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
