Skip to content

Commit

Permalink
Merge pull request #6264 from samlamberson/brah
Browse files Browse the repository at this point in the history
User Story 1915435 - Solution Ideas - Batch #8
  • Loading branch information
denrea committed May 20, 2022
2 parents 9344cc9 + 88efb5c commit 9fb434a
Show file tree
Hide file tree
Showing 10 changed files with 78 additions and 55 deletions.
Expand Up @@ -46,7 +46,7 @@ these documents. For example, users may need to search by a known transaction
ID, or by a customer name on a certain date, to retrieve a set of documents that
is interesting to them.

### Workflow
### Dataflow

The concept behind this architecture consists in decoupling the metadata useful
for searching from bare data:
Expand All @@ -68,23 +68,23 @@ architecture answers this challenge.

### Components

[Azure App Service](https://azure.microsoft.com/en-us/services/app-service/#overview) is a platform as a service (PaaS) for building and hosting apps in managed virtual machines. App Service manages the underlying compute infrastructure on which your apps run, and it provides monitoring of resource usage quotas and app metrics, logging of diagnostic information, and alerts based on metrics.
[Azure App Service](https://azure.microsoft.com/services/app-service) is a platform as a service (PaaS) for building and hosting apps in managed virtual machines. App Service manages the underlying compute infrastructure on which your apps run, and it provides monitoring of resource usage quotas and app metrics, logging of diagnostic information, and alerts based on metrics.

[Azure Data Factory](https://azure.microsoft.com/en-us/services/data-factory/) is Azure's cloud extract, transform, and load (ETL) service for scale-out serverless data integration and data transformation. It offers a code-free UI for intuitive authoring and single-pane-of-glass monitoring and management. You can also lift and shift existing SQL Server Integration Services (SSIS) packages to Azure and run them with full compatibility in Azure Data Factory.
[Azure Data Factory](https://azure.microsoft.com/services/data-factory) is Azure's cloud extract, transform, and load (ETL) service for scale-out serverless data integration and data transformation. It offers a code-free UI for intuitive authoring and single-pane-of-glass monitoring and management. You can also lift and shift existing SQL Server Integration Services (SSIS) packages to Azure and run them with full compatibility in Azure Data Factory.

[Azure Data Lake Storage Gen2](https://azure.microsoft.com/en-us/services/storage/data-lake-storage/) is a set of capabilities dedicated to big data analytics, built on Azure Blob Storage. Data Lake Storage Gen2 converges the capabilities of Azure Data Lake Storage Gen1 with Azure Blob Storage. For example, Data Lake Storage Gen2 provides file system semantics, file-level security, and scale. Because these capabilities are built on Blob Storage, you also get low-cost, tiered storage, with high availability/disaster recovery capabilities.
[Azure Data Lake Storage Gen2](https://azure.microsoft.com/services/storage/data-lake-storage) is a set of capabilities dedicated to big data analytics, built on Azure Blob Storage. Data Lake Storage Gen2 converges the capabilities of Azure Data Lake Storage Gen1 with Azure Blob Storage. For example, Data Lake Storage Gen2 provides file system semantics, file-level security, and scale. Because these capabilities are built on Blob Storage, you also get low-cost, tiered storage, with high availability/disaster recovery capabilities.

[Azure Event Hubs](https://azure.microsoft.com/en-us/services/event-hubs/#overview) is a fully managed, real-time data ingestion service that's simple, trusted, and scalable. Stream millions of events per second from any source to build dynamic data pipelines and immediately respond to business challenges.
[Azure Event Hubs](https://azure.microsoft.com/services/event-hubs) is a fully managed, real-time data ingestion service that's simple, trusted, and scalable. Stream millions of events per second from any source to build dynamic data pipelines and immediately respond to business challenges.

[Azure Databricks](https://azure.microsoft.com/en-us/services/databricks/) is an Apache Spark–based data analytics platform optimized for Microsoft Azure Cloud Services. Azure Databricks offers three environments for developing data intensive applications: Databricks SQL, Databricks Data Science & Engineering, and Databricks Machine Learning.
[Azure Databricks](https://azure.microsoft.com/services/databricks) is an Apache Spark–based data analytics platform optimized for Microsoft Azure Cloud Services. Azure Databricks offers three environments for developing data intensive applications: Databricks SQL, Databricks Data Science & Engineering, and Databricks Machine Learning.

### Alternatives

As an alternative to only indexing metadata, you could index all raw data in a service that offers query capabilities, such as Azure Databricks, Azure Synapse Analytics, Azure Cognitive Search, or Azure Data Explorer. This approach is more immediate, but pay attention to the combined effect of data size, performance requirements, and update frequency, especially from a cost perspective.

Contrary to using a delta lake, using a [Lambda architecture](/azure/architecture/data-guide/big-data/#lambda-architecture) keeps real-time data in a different repository than historical data, and your client runs the logic to make heterogeneous queries transparent to the user. The advantage of this solution is the larger set of services that you can use (such as Azure Stream Analytics and Azure SQL Database), but the architecture becomes more complex and the code base more expensive to maintain.

Spark is distributed with [Azure Databricks](https://azure.microsoft.com/services/databricks/), [Azure Synapse Analytics](https://azure.microsoft.com/services/synapse-analytics/#overview), and [Azure HDInsight](https://azure.microsoft.com/services/hdinsight/#overview). Hence, this architecture could be implemented with any of these Azure data services, preferably with a recent Spark version supporting Delta Lake 0.8 or 1.0.
Spark is distributed with [Azure Databricks](https://azure.microsoft.com/services/databricks), [Azure Synapse Analytics](https://azure.microsoft.com/services/synapse-analytics/#overview), and [Azure HDInsight](https://azure.microsoft.com/services/hdinsight). Hence, this architecture could be implemented with any of these Azure data services, preferably with a recent Spark version supporting Delta Lake 0.8 or 1.0.

## Considerations

Expand All @@ -106,6 +106,10 @@ Azure Event Hubs is highly versatile when it comes to decoupling a transactional

For deploying the used services in this example workload automatically, it's best to use [continuous integration and continuous deployment (CI/CD) processes](/azure/architecture/example-scenario/apps/devops-with-aks). Consider using a solution such as Azure DevOps or GitHub Actions, as described in the [Azure DevOps Starter](/azure/devops-project/overview) documentation.

### Cost optimization

In general, use the [Azure pricing calculator](https://azure.microsoft.com/pricing/calculator) to estimate costs. See the cost section in [Microsoft Azure Well-Architected Framework](/azure/architecture/framework) to learn about other considerations.

## Deploy this scenario

In the following example architecture, we assume that one or more Azure Event Hubs namespaces will contain structured raw documents (such as json or xml files). However, the actual type and format of documents and source services, and their type of integration, is highly dependent on the specific scenario and architecture.
Expand Down Expand Up @@ -327,17 +331,13 @@ the documents in a certain transaction:
select * from metadata where transactionId = '123456'
```

## Pricing

In general, use the [Azure pricing calculator](https://azure.microsoft.com/pricing/calculator) to estimate costs. See the cost section in [Microsoft Azure Well-Architected Framework](/azure/architecture/framework/) to learn about other considerations.

## Next steps

- [Delta Lake](https://delta.io)
- [Delta Lake in Azure Synapse Analytics](/azure/synapse-analytics/spark/apache-spark-what-is-delta-lake)
- [Delta Lake in Azure Databricks](/azure/databricks/delta/delta-streaming)
- [Spark Structured Streaming](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html)
- [Azure Synapse Analytics](/azure/synapse-analytics/)
- [Azure Synapse Analytics](/azure/synapse-analytics)
- [What is Delta Lake in Azure Synapse Analytics](/azure/synapse-analytics/spark/apache-spark-what-is-delta-lake)
- [Azure Databricks Delta Lake and Delta Engine guide](/azure/databricks/delta)
- [Describe Azure Databricks Delta Lake architecture](/learn/modules/describe-azure-databricks-delta-lake-architecture)
Expand Down
Expand Up @@ -5,7 +5,7 @@ metadata:
description: This architecture provides an example delta lake for travel booking, where large amounts of raw documents are generated at a high frequency.
author: EdPrice-MSFT
ms.author: edprice
ms.date: 03/18/2022
ms.date: 05/23/2022
ms.topic: conceptual
ms.service: architecture-center
ms.subservice: example-solution
Expand Down
Expand Up @@ -2,20 +2,27 @@

Virtual machines (VMs) are physically separated across zones, and a virtual network is created using load balancers at each site. These locations are close enough for high availability replication, so your applications stay running, despite any issues at the physical locations.

## Potential use cases

This solution is ideal for the healthcare industry and the following scenarios:

* Hospitals
* Data centers

## Architecture

![Architecture Diagram](../media/build-high-availability-into-your-bcdr-strategy.png)
*Download an [SVG](../media/build-high-availability-into-your-bcdr-strategy.svg) of this architecture.*

### Data flow
### Dataflow

1. Create zone-redundant Load Balancer.
1. Create front-end subnet.
1. Create DB subnet.
1. Create VMs in three Availability Zones.
1. Configure zone-redundant SQL DB.
1. Create a zone-redundant Load Balancer.
1. Create a front-end subnet.
1. Create a DB subnet.
1. Create VMs in three availability zones.
1. Configure a zone-redundant SQL DB.
1. Add VMs to the load balancer's back-end pool.
1. Deploy your application on VMs for redundancy and high availability.
1. Deploy your application on VMs, for redundancy and high availability.

### Components

Expand Down
Expand Up @@ -4,8 +4,8 @@ metadata:
titleSuffix: Azure Solution Ideas
description: Learn how to build high availability of services into your business continuity and disaster recovery strategy.
author: EdPrice-MSFT
ms.author: pnp
ms.date: 12/16/2019
ms.author: edprice
ms.date: 05/23/2022
ms.topic: conceptual
ms.service: architecture-center
ms.subservice: solution-idea
Expand All @@ -20,7 +20,7 @@ metadata:
- strategy
- interactive-diagram
- e2e-hybrid
- "https://azure.microsoft.com/solutions/architecture/build-high-availability-into-your-bcdr-strategy/"
- "https://azure.microsoft.com/solutions/architecture/build-high-availability-into-your-bcdr-strategy"
social_image_url: /azure/architecture/solution-ideas/articles/media/build-high-availability-into-your-bcdr-strategy.png
name: Build high availability into your BCDR strategy
azureCategories:
Expand Down
22 changes: 15 additions & 7 deletions docs/solution-ideas/articles/business-central-content.md
@@ -1,6 +1,6 @@
[!INCLUDE [header_file](../../../includes/sol-idea-header.md)]

Dynamics 365 Business Central SaaS is not available in all countries. Therefore, it is important to offer clients a similar model using Business Central running as a VM in Azure.
Dynamics 365 Business Central SaaS isn't available in all countries. Therefore, it's important to offer clients a similar model using Business Central running as a VM in Azure.

## Potential use cases

Expand All @@ -18,19 +18,19 @@ This scenario demonstrates provisioning an environment ready for adding new tena
The data flows through the scenario as follows:

1. Customers login using web browser, device (phone or tablet) or through API to access the Dynamics 365 Business Central.
2. Virtual Machine as a middle-tier, provides Web Server Components and plays roles as a [NST Server](/dynamics365/business-central/dev-itpro/administration/configure-server-instance), connecting customers with databases. One Virtual Machine can be used for multiple customers and the partner just needs to provide different Business Central Server Instance with different ports numbers for each of customers. Using this model, support will be much easier as the partner needs to support only one server at a minimum. With Azure Load balancer, this system will scale applications and create highly available services.
3. The application and business data reside in separate databases, both using Azure SQL for its databases. App database will be in one single database (S0 will be enough to run application database). The partner maintains the application centrally without affecting the various tenants that use the application. Tenant databases will be placed in an Azure elastic database pool (for starters, S4 pool with 200 DTU's will be enough). Each tenant database contains the business data for one or more specific companies from one client and does not contain all of the application metadata. If customers require more power, it is easy to change service tier on Azure SQL and an elastic database pool.
4. To provide better sustainability, all resources will be in one resource Group. All external services (Azure Machine Learning, Power Apps, Power Automate and Power BI) will communicate directly with the NST Server through exposed APIs and OData web services.
1. Virtual Machine as a middle-tier, provides Web Server Components and plays roles as a [NST Server](/dynamics365/business-central/dev-itpro/administration/configure-server-instance), connecting customers with databases. One Virtual Machine can be used for multiple customers and the partner just needs to provide different Business Central Server Instance with different ports numbers for each of customers. By using this model, support will be much easier as the partner needs to support only one server at a minimum. With Azure Load balancer, this system will scale applications and create highly available services.
1. The application and business data reside in separate databases, both using Azure SQL for its databases. App database will be in one single database (S0 will be enough to run application database). The partner maintains the application centrally without affecting the various tenants that use the application. Tenant databases will be placed in an Azure elastic database pool (for starters, S4 pool with 200 DTU's will be enough). Each tenant database contains the business data for one or more specific companies from one client and doesn't contain all of the application metadata. If customers require more power, it's easy to change service tier on Azure SQL and an elastic database pool.
1. To provide better sustainability, all resources will be in one resource Group. All external services (Azure Machine Learning, Power Apps, Power Automate and Power BI) will communicate directly with the NST Server through exposed APIs and OData web services.

### Components

A [resource group](/azure/azure-resource-manager/management/manage-resource-groups-portal) is a container that holds related resources for an Azure solution. The resource group can include all the resources for the solution, or only those resources that you want to manage as a group. You decide how you want to allocate resources to resource groups based on what makes the most sense for your organization. Generally, add resources that share the same lifecycle to the same resource group so you can easily deploy, update, and delete them as a group.

[Azure Virtual Machines](/azure/virtual-machines/windows/overview) is one of several types of on-demand, scalable computing resources that Azure offers. Typically, you choose a virtual machine when you need more control over the computing environment than the other choices offer. A virtual machine is necessary for middle-tier services in Business Central architecture. Partners can choose between many different types of virtual machines with various numbers of CPUs and memory.

[Azure SQL Database](/azure/azure-sql/database/sql-database-paas-overview) is a fully managed Platform as a Service (PaaS) Database Engine that handles most of the database management functions such as upgrading, patching, backups, and monitoring without user involvement. Azure SQL Database is always running on the latest stable version of SQL Server Database Engine and patched OS with 99.99% availability. PaaS capabilities that are built into Azure SQL Database enable you to focus on the domain-specific database administration and optimization activities that are critical for your business.
[Azure SQL Database](/azure/azure-sql/database/sql-database-paas-overview) is a fully managed Platform as a Service (PaaS) Database Engine that handles most of the database management functions such as upgrading, patching, backups, and monitoring without user involvement. Azure SQL Database is always running on the latest stable version of SQL Server Database Engine and patched OS with 99.99% availability. PaaS capabilities that are built into Azure SQL Databases enable you to focus on the domain-specific database administration and optimization activities that are critical for your business.

To choose the right database option, the best way is to choose one of the service tiers. You can choose Standard or Premium service tier with different numbers of [DTUs](/azure/azure-sql/database/resource-limits-dtu-single-databases#standard-service-tier). If you are not experienced with deploying Azure SQL databases, you can find more information [here](/dynamics365/business-central/dev-itpro/deployment/deploy-database-azure-sql-database).
To choose the right database option, the best way is to choose one of the service tiers. You can choose Standard or Premium service tier with different numbers of [DTUs](/azure/azure-sql/database/resource-limits-dtu-single-databases#standard-service-tier). If you aren't experienced with deploying Azure SQL databases, you can find more information [here](/dynamics365/business-central/dev-itpro/deployment/deploy-database-azure-sql-database).

[Azure SQL Database elastic pools](/azure/azure-sql/database/elastic-pool-overview) are a simple, cost-effective solution for managing and scaling multiple databases that have varying and unpredictable usage demands. The databases in an elastic pool are on a single server and share a set number of resources at a set price. Elastic pools in Azure SQL Database enable SaaS developers to optimize the price performance for a group of databases within a prescribed budget while delivering performance elasticity for each database.

Expand All @@ -42,7 +42,15 @@ With [Azure Load Balancer](/azure/load-balancer/load-balancer-overview), you can

It's important to note that the partner doesn't need a virtual machine for each customer. It can significantly reduce costs for middle-tier service (VM) by combining access and just changing ports.

There are various options for VM sizes depending on the usage and workload. The partner will need to track performances and to increase power when needed by scaling up the VM(s). For app databases, you can take the smallest Azure SQL as S0 or eventually S1. The same situation applies with an Azure elastic database pool, where you have various options and you need to start with smallest as it is easy scalable.
There are various options for VM sizes depending on the usage and workload. The partner will need to track performances and to increase power when needed by scaling up the VM(s). For app databases, you can take the smallest Azure SQL as S0 or eventually S1. The same situation applies with an Azure elastic database pool, where you have various options and you need to start with smallest as it's easy scalable.

## Contributors

*This article is maintained by Microsoft. It was originally written by the following contributors.*

Principal author:

* [Aleksandar Totovic](https://www.linkedin.com/in/aleksandartotovic) | Program Manager

## Next steps

Expand Down
2 changes: 1 addition & 1 deletion docs/solution-ideas/articles/business-central.yml
Expand Up @@ -6,7 +6,7 @@ metadata:
author: altotovi
ms.author: altotovi
ms.sme: chrogers
ms.date: 03/11/2022
ms.date: 05/23/2022
ms.topic: conceptual
ms.service: architecture-center
ms.subservice: solution-idea
Expand Down

0 comments on commit 9fb434a

Please sign in to comment.