Skip to content

Commit

Permalink
Merge pull request #12170 from MicrosoftDocs/repo_sync_working_branch
Browse files Browse the repository at this point in the history
Confirm merge from repo_sync_working_branch to main to sync with https://github.com/microsoftdocs/architecture-center (branch main)
  • Loading branch information
Albertyang0 committed Jun 13, 2024
2 parents a67e0fa + 73c6fa1 commit cd6203d
Show file tree
Hide file tree
Showing 30 changed files with 46 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ Load-balacing across regions isn't typical, but could be used strategically to c

In this topology, Azure API Management is used specifically for the gateway technology. Here, API Management is deployed into a single region. From that gateway instance, you perform active-active load balancing across regions. The policies in your gateway reference all Azure OpenAI instances. The gateway requires network line of sight to each back end across regions, either through cross-region virtual network peering or private endpoints. Calls from this gateway to an Azure OpenAI instance in another region incur more network latency and egress charges.

Your gateway must honor throttling and availability signals from the Azure OpenAI instances and remove faulted back ends from the pool until safe to readd the faulted or throttled Azure OpenAI instance. The gateway should retry the current request against another back-end instance in the pool upon fault, before falling back to returning a gateway error. The gateway's health check should signal unhealthy when no back-end Azure OpenAI instances are available.
Your gateway must honor throttling and availability signals from the Azure OpenAI instances and remove faulted back ends from the pool until safe to re-add the faulted or throttled Azure OpenAI instance. The gateway should retry the current request against another back-end instance in the pool upon fault, before falling back to returning a gateway error. The gateway's health check should signal unhealthy when no back-end Azure OpenAI instances are available.

> [!NOTE]
> This gateway introduces a global single point of regional failure in your architecture since any service outage on your gateway instances render all regions inaccessible. Don't use this topology for business-critical workloads or where client-based load balancing is sufficient.
Expand Down
2 changes: 1 addition & 1 deletion docs/ai-ml/guide/conversation-summarization-content.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ The dataset used in this scenario is a set of hypothetical conversations between

|Prompt|Completion|
|-|-|
|Customer: Question on XAIL<br><br>Agent: Hello! How can I help you today?<br><br>Customer: Hi, I have a question about the Accessibility insider ring<br><br>Agent: Okay. I can certainly assist you with that.<br><br>Customer: Do I need to sign up for the preview ring to join the accessibility league?<br><br>Agent: No. You can leave your console out of Xbox Preview rings and still join the League. However, note that some experiences made available to you might require that you join a Xbox Preview ring.<br><br>Customer: Okay. And I can just sign up for preview ring later yeah?<br><br>Agent: That is correct.<br><br>Customer: Sweet.| Customer wants to know whether they need to sign up for preview rings to join Xbox Accessibility Insider League. Agent responds that it is not mandatory, but that some experiences might require it.|
|Customer: Question on XAIL<br><br>Agent: Hello! How can I help you today?<br><br>Customer: Hi, I have a question about the Accessibility insider ring<br><br>Agent: Okay. I can certainly assist you with that.<br><br>Customer: Do I need to sign up for the preview ring to join the accessibility league?<br><br>Agent: No. You can leave your console out of Xbox Preview rings and still join the League. However, note that some experiences made available to you might require that you join an Xbox Preview ring.<br><br>Customer: Okay. And I can just sign up for preview ring later yeah?<br><br>Agent: That is correct.<br><br>Customer: Sweet.| Customer wants to know whether they need to sign up for preview rings to join Xbox Accessibility Insider League. Agent responds that it is not mandatory, but that some experiences might require it.|

**Ideal output**. The goal is to create summaries that follow this format: "Customer said *x*. Agent responded *y*." Another goal is to capture salient features of the dialog, like the customer complaint, suggested resolution, and follow-up actions.

Expand Down
2 changes: 1 addition & 1 deletion docs/ai-ml/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ This is a comprehensive family of AI services and cognitive APIs to help you bui

### Azure Cognitive Search

This is an AI-powered cloud search service for mobile and web app development. The service can search over private heterogenous content, with options for AI enrichment if your content is unstructured or unsearchable in raw form.
This is an AI-powered cloud search service for mobile and web app development. The service can search over private heterogeneous content, with options for AI enrichment if your content is unstructured or unsearchable in raw form.

- [Azure Cognitive Search product home page](https://azure.microsoft.com/services/search/)

Expand Down
2 changes: 1 addition & 1 deletion docs/best-practices/data-partitioning-content.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Avoid creating "hot" partitions that can affect performance and availability. Fo

Choose a sharding key that minimizes any future requirements to split large shards, coalesce small shards into larger partitions, or change the schema. These operations can be very time consuming, and might require taking one or more shards offline while they are performed.

If shards are replicated, it might be possible to keep some of the replicas online while others are split, merged, or reconfigured. However, the system might need to limit the operations that can be performed during the reconfiguration. For example, the data in the replicas might be marked as read-only to prevent data inconsistences.
If shards are replicated, it might be possible to keep some of the replicas online while others are split, merged, or reconfigured. However, the system might need to limit the operations that can be performed during the reconfiguration. For example, the data in the replicas might be marked as read-only to prevent data inconsistencies.

For more information about horizontal partitioning, see [sharding pattern](../patterns/sharding.yml).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ Because sensors capture data in real time, anomaly detection should be able to d

The data necessary to predictively maintain motors attached to conveyor belts are temperature, vibrations, and conveyor belt status. Sample data is presented here.

**Conveyor belt status:** On most factory floors, conveyor belts are run on specific schedules. Anomaly detection of temperature and vibration is needed only when the conveyor belt is running. A conveyer belt value of zero indicates that the conveyor belt is inactive. A value of one means it's active. This sample graph shows how conveyor belt status is recorded:
**Conveyor belt status:** On most factory floors, conveyor belts are run on specific schedules. Anomaly detection of temperature and vibration is needed only when the conveyor belt is running. A conveyor belt value of zero indicates that the conveyor belt is inactive. A value of one means it's active. This sample graph shows how conveyor belt status is recorded:

:::image type="content" source="media/conveyor-belt-status.png" alt-text="Graph that shows conveyor belt status data." lightbox="media/conveyor-belt-status.png" border="false":::

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info(object_id)
encoded_data = json.dumps(data)
except Exception as e:
logging.info("Exception occured : "+ str(e))
logging.info("Exception occurred : "+ str(e))

file_system_client = service_client.get_file_system_client(file_system=storage_container)
directory_client = file_system_client.get_directory_client(storage_directory)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ Principal author:

- Review [Publish and subscribe with Azure IoT Edge](/azure/iot-edge/how-to-publish-subscribe?view=iotedge-2020-11) to understand how to configure general-purpose MQTT brokering in IoT Edge.

- Review [Set up up Azure IoT Edge for Azure Sphere](/azure-sphere/app-development/setup-iot-edge) to learn how to use Azure Sphere Device Certificate for IoT Edge.
- Review [Set up Azure IoT Edge for Azure Sphere](/azure-sphere/app-development/setup-iot-edge) to learn how to use Azure Sphere Device Certificate for IoT Edge.

## Related resources

Expand Down
2 changes: 1 addition & 1 deletion docs/example-scenario/iot/application-stamps-content.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
This article discusses a *deployment stamping* strategy to support scaling up the numbers of connected devices in an internet of things (IoT) solution. The article also describes in detail how to deploy IoT devices and applications between deployment stamps.

The deployment stamping strategy for IoT solutions is based on the [Deployment Stamp](../../patterns/deployment-stamp.yml) design pattern. Deployment stamps are units composed of heterogenous components that support a defined device population. Deployment stamping scales up numbers of connected IoT devices by replicating stamps, rather than independently scaling up different parts of a solution.
The deployment stamping strategy for IoT solutions is based on the [Deployment Stamp](../../patterns/deployment-stamp.yml) design pattern. Deployment stamps are units composed of heterogeneous components that support a defined device population. Deployment stamping scales up numbers of connected IoT devices by replicating stamps, rather than independently scaling up different parts of a solution.

Deployment stamping benefits:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The company was having problems updating devices over their recently developed A
To address these issues, the development team created a solution that:

- Minimizes the size of the deployment to each device, reducing bandwidth.
- Implements a standardized Docker container deployment from the IoT Edge platform to heterogenous remote IoT devices.
- Implements a standardized Docker container deployment from the IoT Edge platform to heterogeneous remote IoT devices.
- Enables reliable deployment monitoring.
- Takes advantage of various Azure DevOps and cloud services, and uses the customer's preferred legacy tools.

Expand Down
2 changes: 1 addition & 1 deletion docs/example-scenario/magento/magento-azure-content.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ This article is about the open-source version of Magento, an e-commerce platform
- [Azure Files Premium](https://azure.microsoft.com/products/storage/files), [Azure NetApp Files](https://azure.microsoft.com/products/netapp), or an equivalent *network-attached storage (NAS)* system stores media files like product images. Magento needs a Kubernetes-compatible file system that can mount a volume in *ReadWriteMany* mode, like Azure Files Premium or Azure NetApp Files. [Storage options for applications in Azure Kubernetes Service (AKS)](/azure/aks/concepts-storage). It is highly recommended that you test input/output operations per second (IOPS) throughput and choose the options that work for you.
- A [content delivery network (CDN)](https://azure.microsoft.com/products/cdn) serves static content like CSS, JavaScript, and images. Serving content through a CDN minimizes network latency between users and the datacenter. A CDN can remove significant load from NAS by caching and serving static content.
- [Redis](https://redis.io) stores session data. Hosting Redis on containers is recommended for performance reasons.
- AKS uses an [Microsoft Entra ID](https://azure.microsoft.com/products/active-directory) identity to create and manage other Azure resources like Azure load balancers, user authentication, role-based access control, and managed identity.
- AKS uses a [Microsoft Entra ID](https://azure.microsoft.com/products/active-directory) identity to create and manage other Azure resources like Azure load balancers, user authentication, role-based access control, and managed identity.
- [Azure Container Registry](https://azure.microsoft.com/products/container-registry) stores the private [Docker](https://www.docker.com) images that are deployed to the AKS cluster. You can use other container registries like Docker Hub. The default Magento install writes some secrets to the image.
- [Azure Monitor](https://azure.microsoft.com/products/monitor) collects and stores metrics and logs, including Azure service platform metrics and application telemetry. Azure Monitor integrates with AKS to collect controller, node, and container metrics, and container and master node logs.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ This solution can help with the following use cases:
- Consolidated monitoring for different cloud and on-premises workloads.
- Monitoring for container, Azure SQL, and Azure Virtual Desktop workloads.
- Expanded monitoring scope, such as connecting Monitor to Microsoft Sentinel.
- Hybrid and heterogenous cloud monitoring across networks, identity providers, operating systems, and other domains.
- Hybrid and heterogeneous cloud monitoring across networks, identity providers, operating systems, and other domains.

## Considerations

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ Security provides assurances against deliberate attacks and the abuse of your va
#### Network security

- Ingress: To limit external access, only the Ingestion service is configured for external ingress. The backend services are accessible only through the internal virtual network in the Container Apps environment. Only expose services to the Internet where required. Because this architecture uses the built-in external ingress feature, this solution does not offer the ability to completely position your ingress point behind a web application firewall (WAF) or to include it in DDoS Protection plans. All web facing workloads should be fronted with a web application firewall.
- Virtual network: When you create an environment, you can provide a custom virtual network; otherwise, a virtual network is automatically generated and managed by Microsoft. You cannot manipulate this Microsoft-managed virtual network, such as by adding network security groups (NSGs) or force tunneling traffic to a egress firewall. This example uses an automatically generated virtual network.
- Virtual network: When you create an environment, you can provide a custom virtual network; otherwise, a virtual network is automatically generated and managed by Microsoft. You cannot manipulate this Microsoft-managed virtual network, such as by adding network security groups (NSGs) or force tunneling traffic to an egress firewall. This example uses an automatically generated virtual network.

For more network topology options, see [Networking architecture in Azure Container Apps](/azure/container-apps/networking).

Expand Down
6 changes: 4 additions & 2 deletions docs/guide/architecture-styles/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ We have identified a set of architecture styles that are commonly found in cloud

## A quick tour of the styles

This section gives a quick tour of the architecture styles that we've identified, along with some high-level considerations for their use. Read more details in the linked topics.
This section gives a quick tour of the architecture styles that we've identified, along with some high-level considerations for their use. Please note that the list is not exhaustive. Read more details in the linked topics.

### N-tier

Expand Down Expand Up @@ -79,7 +79,9 @@ For example, the constraints in microservices include:

By adhering to these constraints, what emerges is a system where services can be deployed independently, faults are isolated, frequent updates are possible, and it's easy to introduce new technologies into the application.

Before choosing an architecture style, make sure that you understand the underlying principles and constraints of that style. Otherwise, you can end up with a design that conforms to the style at a superficial level, but does not achieve the full potential of that style. It's also important to be pragmatic. Sometimes it's better to relax a constraint, rather than insist on architectural purity.
Each architecture style has its own trade-offs. Therefore, before choosing any architectural style, make sure that you understand the underlying principles and constraints of that style. Otherwise, you can end up with a design that conforms to the style at a superficial level, but does not achieve the full potential of that style. You need to pay attention more to why you're choosing a certain architectural style than to how to implement it. It's also important to be pragmatic. Sometimes it's better to relax a constraint, rather than insist on architectural purity.

Choosing an appropriate architectural style should be done ideally with a consensuses of informed workload stakeholders. The workload team should firstly identify the nature of the problem they are trying to solve. Then they should identify business drivers and corresponding architecture characteristics (also known as non-functional requirements) then prioritize them. For example, if they need shorter time to market, they might prioritize maintainability, testability, and reliable by rapid deployment capabilities. Or if the workload team has constrained budget, they might prioritize feasibility and simplicity. Choosing and maintaining an architectural style is not a one-off activity but a continuous approach: the architecture should be continuously measured, validated and fine-tuned over time. There is usually significant cost involved in switching architectural style, so more effort up front can be justified for long term team efficiency and risk mitigation.

The following table summarizes how each style manages dependencies, and the types of domain that are best suited for each.

Expand Down
Loading

0 comments on commit cd6203d

Please sign in to comment.