Information Systems:Azure for Web Orders
Summary
The new Web Orders site is hosted on Azure. The resources are grouped in the Resource Group rg-weborders, within the Azure PAYG Subscription 1 subscription.
Components
Web Application
The web application is hosted using Azure App Service, which is a serverless service that provides web runtimes e.g. PHP-CGI (PHP), WSGI (Python), to run web applications without having to maintain a server/VM.
Code deployment and administration
While there is no actual server/VM to administer, App Service allows for shell-like access and FTP/SFTP to enable some administrative tasks (although deployment through CI/CD is the better practice). Shell access is available via Kudu SCM.
Deployment Slots
Deployment slots allow for dev, test, and prod instances of the application.
Databases
Azure SQL (SQL Server) is used for the database(s). Currently, there is a single instance uwdintdb of Azure SQL that hosts multiple databases that share an elastic pool (for compute).
Connectivity
Direct connection (e.g. port 1433) to uwdintdb is allowed through firewall rules (IP whitelist) which can be administered in Azure. Connectivity from applications, such as Synapse and Web Orders itself, is done through Private Endpoint.
Administration
Access
Database access is available via direct connection (port 3306). Access is IP-restricted for security reasons.
Source Control and DevOps
Azure DevOps is used for both git / source control (using Azure Repos), and CI/CD (build pipelines).
There are two repos in the project, one each for the back-end and front-end.
Integration with D365
The integration between Web Orders and D365 occurs via 2 main patterns/methods:
- Through a dedicated integration/middleware database that is written to with D365 data and read by Web Orders. This database is found in the same MySQL instance as the one for the application (it is just a separate schema).
- Through REST API endpoints that allow Web Orders to POST data e.g. orders into D365. There are no Azure components for this on the Web Orders side, as API consumption is done in code.