Skip to content

Commit

Permalink
Merge pull request #441 from MicrosoftDocs/master
Browse files Browse the repository at this point in the history
8/9/2019 AM Publish
  • Loading branch information
Taojunshen authored Aug 9, 2019
2 parents b421d5c + 5df754a commit 1ba04ea
Show file tree
Hide file tree
Showing 10 changed files with 31 additions and 23 deletions.
17 changes: 8 additions & 9 deletions docs/antipatterns/busy-database/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,11 +239,13 @@ The following sections apply these steps to the sample application described ear

The following graph shows the results of running a load test against the sample application, using a step load of up to 50 concurrent users. The volume of requests quickly reaches a limit and stays at that level, while the average response time steadily increases. A logarithmic scale is used for those two metrics.

![Load-test results for performing processing in the database][ProcessingInDatabaseLoadTest]
<img src="./_images/ProcessingInDatabaseLoadTest.jpg" alt="Load-test results for performing processing in the database" aria-describedby="description-1">
<p id="description-1" class="visually-hidden">This line graph shows user load, requests per second, and average response time. The graph shows that response time increases as load increases.</p>

The next graph shows CPU utilization and DTUs as a percentage of service quota. DTUs provide a measure of how much processing the database performs. The graph shows that CPU and DTU utilization both quickly reached 100%.

![Azure SQL Database monitor showing the performance of the database while performing processing][ProcessingInDatabaseMonitor]
<img src="./_images/processingindatabasemonitor.jpg" alt="Azure SQL Database monitor showing the performance of the database while performing processing" aria-describedby="description-2">
<p id="description-2" class="visually-hidden">This line graph shows CPU percentage and DTU percentage over time. The graph shows that both quickly reach 100%.</p>

### Examine the work performed by the database

Expand All @@ -255,11 +257,13 @@ If the database operations are purely data access operations, without a lot of p

The following graph shows a load test using the updated code. Throughput is significantly higher, over 400 requests per second versus 12 earlier. The average response time is also much lower, just above 0.1 seconds compared to over 4 seconds.

![Load-test results for performing processing in the database][ProcessingInClientApplicationLoadTest]
<img src="./_images/processinginclientapplicationloadtest.jpg" alt="Load-test results for performing processing in the database" aria-describedby="description-3">
<p id="description-3" class="visually-hidden">This line graph shows user load, requests per second, and average response time. The graph shows that response time remains roughly constant throughout the load test.</p>

CPU and DTU utilization shows that the system took longer to reach saturation, despite the increased throughput.

![Azure SQL Database monitor showing the performance of the database while performing processing in the client application][ProcessingInClientApplicationMonitor]
<img src="./_images/processinginclientapplicationmonitor.jpg" alt="Azure SQL Database monitor showing the performance of the database while performing processing in the client application" aria-describedby="description-4">
<p id="description-4" class="visually-hidden">This line graph shows CPU percentage and DTU percentage over time. The graph shows that CPU and DTU take longer to reach 100% than previously.</p>

## Related resources

Expand All @@ -268,8 +272,3 @@ CPU and DTU utilization shows that the system took longer to reach saturation, d
[dtu]: /azure/sql-database/sql-database-service-tiers-dtu
[ExtraneousFetching]: ../extraneous-fetching/index.md
[sample-app]: https://github.com/mspnp/performance-optimization/tree/master/BusyDatabase
[ProcessingInDatabaseLoadTest]: ./_images/ProcessingInDatabaseLoadTest.jpg
[ProcessingInClientApplicationLoadTest]: ./_images/ProcessingInClientApplicationLoadTest.jpg
[ProcessingInDatabaseMonitor]: ./_images/ProcessingInDatabaseMonitor.jpg
[ProcessingInClientApplicationMonitor]: ./_images/ProcessingInClientApplicationMonitor.jpg
4 changes: 4 additions & 0 deletions docs/aws-professional/services.md
Original file line number Diff line number Diff line change
Expand Up @@ -271,3 +271,7 @@ Dedicated network | Direct Connect | [ExpressRoute](https://azure.microsoft.com/
| Media transcoding | Elastic Transcoder | [Media Services](https://azure.microsoft.com/services/media-services/) | Services that offer broadcast-quality video streaming services, including various transcoding technologies. |
| Workflow | Simple Workflow Service (SWF) | [Logic Apps](https://azure.microsoft.com/services/logic-apps/) | Serverless technology for connecting apps, data and devices anywhere, whether on-premises or in the cloud for large ecosystems of SaaS and cloud-based connectors. |
| Hybrid | Outposts | [Azure Stack](https://azure.microsoft.com/overview/azure-stack/) | Azure Stack is a hybrid cloud platform that enables you to run Azure services in your company's or service provider's datacenter. As a developer, you can build apps on Azure Stack. You can then deploy them to either Azure Stack or Azure, or you can build truly hybrid apps that take advantage of connectivity between an Azure Stack cloud and Azure. |

## More learning

If you are new to Azure, review the interactive [Core Cloud Services - Introduction to Azure](/learn/modules/welcome-to-azure) module on [Microsoft Learn](/learn).
2 changes: 1 addition & 1 deletion docs/best-practices/naming-conventions.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ In general, avoid having any special characters (`-` or `_`) as the first or las

| Entity | Scope | Length | Casing | Valid Characters | Suggested Pattern | Example |
| --- | --- | --- | --- | --- | --- | --- |
|Storage account name (data) |Global |3-24 |Lowercase |Alphanumeric |`<globally unique name><number>` (use a function to calculate a unique guid for naming storage accounts) |`profxdata001` |
|Storage account name (data) |Global |3-24 |Lowercase |Alphanumeric |`<globally unique name><number>` |`profxdata001` |
|Storage account name (disks) |Global |3-24 |Lowercase |Alphanumeric |`<vm name without hyphens>st<number>` |`profxsql001st0` |
| Container name |Storage account |3-63 |Lowercase |0-9, a-z and - |`<context>` |`logs` |
|Blob name | Container |1-1024 |Case sensitive |Any URL characters |`<variable based on blob usage>` |`<variable based on blob usage>` |
Expand Down
7 changes: 5 additions & 2 deletions docs/guide/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ A successful cloud application will focus on five pillars of software quality: S

- [Quality pillars](./pillars.md)

### More Learning
### More learning

For a guided introduction to common cloud computing services, benefits of cloud computing, and cloud deployment modules, review [Cloud Concepts - Principles of Cloud Computing](/learn/modules/principles-cloud-computing/).

For a more technical perspective on the key pillars of a cloud solution and principles for creating a solid architectural foundation, review [Pillars of a great Azure Architecture](/learn/modules/pillars-of-a-great-azure-architecture).

For an guided introduction to common cloud computing services, benefits of cloud computing, and cloud deployment modules, review the [Cloud Concepts - Principles of Cloud Computing](/learn/modules/principles-cloud-computing/) on [Microsoft Learn](/learn/).
4 changes: 4 additions & 0 deletions docs/guide/technology-choices/compute-comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ Notes
| SLA | [SLA for Virtual Machines][sla-vm] | [SLA for App Service][sla-app-service] | [SLA for Service Fabric][sla-sf] | [SLA for Functions][sla-functions] | [SLA for AKS][sla-acs] | [SLA for Container Instances](https://azure.microsoft.com/support/legal/sla/container-instances/) | [SLA for Azure Batch][sla-batch] |
| Multi region failover | Traffic manager | Traffic manager | Traffic manager, Multi-Region Cluster | Not supported | Traffic manager | Not supported | Not Supported |

For guided learning on Service Guarantees, review [Core Cloud Services - Azure architecture and service guarantees](/learn/modules/explore-azure-infrastructure).

## Other

| Criteria | Virtual Machines | App Service | Service Fabric | Azure Functions | Azure Kubernetes Service | Container Instances | Azure Batch |
Expand All @@ -78,6 +80,8 @@ Notes
| Cost | [Windows][cost-windows-vm], [Linux][cost-linux-vm] | [App Service pricing][cost-app-service] | [Service Fabric pricing][cost-service-fabric] | [Azure Functions pricing][cost-functions] | [AKS pricing][cost-acs] | [Container Instances pricing](https://azure.microsoft.com/pricing/details/container-instances/) | [Azure Batch pricing][cost-batch]
| Suitable architecture styles | [N-Tier][n-tier], [Big compute][big-compute] (HPC) | [Web-Queue-Worker][w-q-w], [N-Tier][n-tier] | [Microservices][microservices], [Event-driven architecture][event-driven] | [Microservices][microservices], [Event-driven architecture][event-driven] | [Microservices][microservices], [Event-driven architecture][event-driven] | [Microservices][microservices], task automation, batch jobs | [Big compute][big-compute] (HPC) |



<!-- markdownlint-enable MD033 -->

[cost-linux-vm]: https://azure.microsoft.com/pricing/details/virtual-machines/linux/
Expand Down
2 changes: 2 additions & 0 deletions docs/guide/technology-choices/compute-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,5 @@ When selecting a compute option, here are some factors to consider:
To help select a compute service for your application, use the [Decision tree for Azure compute services](./compute-decision-tree.md)

For a more detailed comparison of compute options in Azure, see [Criteria for choosing an Azure compute service](./compute-comparison.md).

For a guided introduction to compute services on Azure, try the [Core Cloud Services - Azure compute options](/learn/modules/intro-to-azure-compute/) module on [Microsoft Learn](/learn/).
4 changes: 2 additions & 2 deletions docs/reference-architectures/serverless/event-processing.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,5 +158,5 @@ To learn more about the reference implementation, read [Show me the code: Server
[ra-grs]: /azure/storage/common/storage-redundancy-grs
[ru]: /azure/cosmos-db/request-units

[github]: https://github.com/mspnp/serverless-reference-implementation
[readme]: https://github.com/mspnp/serverless-reference-implementation/blob/master/README.md
[github]: https://github.com/mspnp/serverless-reference-implementation/tree/v0.1.0
[readme]: https://github.com/mspnp/serverless-reference-implementation/blob/v0.1.0/README.md
5 changes: 2 additions & 3 deletions docs/reference-architectures/serverless/web-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,5 @@ To learn more about the reference implementation, read [Show me the code: Server
[storage-https]: /azure/storage/common/storage-require-secure-transfer
[tm]: /azure/traffic-manager/traffic-manager-overview

[github]: https://github.com/mspnp/serverless-reference-implementation
[HttpRequestAuthorizationExtensions]: https://github.com/mspnp/serverless-reference-implementation/blob/master/src/DroneStatus/dotnet/DroneStatusFunctionApp/HttpRequestAuthorizationExtensions.cs
[readme]: https://github.com/mspnp/serverless-reference-implementation/blob/master/README.md
[github]: https://github.com/mspnp/serverless-reference-implementation/tree/v0.1.0
[readme]: https://github.com/mspnp/serverless-reference-implementation/blob/v0.1.0/README.md
4 changes: 2 additions & 2 deletions docs/serverless/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Implement a serverless application with Azure Functions
description: Code walk-through of a serverlesss application using Azure Functions
description: Code walk-through of a serverless application using Azure Functions
author: MikeWasson
ms.date: 06/13/2019
ms.author: pnp
Expand Down Expand Up @@ -620,4 +620,4 @@ For more information about authentication and authorization in this application,

<!-- links -->

[github]: https://github.com/mspnp/serverless-reference-implementation
[github]: https://github.com/mspnp/serverless-reference-implementation/tree/v0.1.0
5 changes: 1 addition & 4 deletions docs/serverless/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,18 @@ ms.subservice: reference-architecture

Serverless models abstract the underlying compute infrastructure. This allows developers to focus on business logic without needing extensive startup or maintenance cost to set up the solution. Serverless reduces the overall costs since you pay only for the duration the code was executed. This event-driven model is suitable for situations where some event triggers a defined action. For example, receiving an incoming device messages to store for later use, or a database update that needs some further processing.


## Explore the recommendations

To explore serverless technologies in Azure, start with a serverless reference solution developed and tested by Microsoft. This two-part solution describes a hypothetical drone delivery system. Drones send in-flight status to the cloud, which stores these messages for later use. A web application allows users to retrieve these messages to get the latest status of these devices.

- The code for this solution is available to download from [GitHub](https://github.com/mspnp/serverless-reference-implementation).
- The code for this solution is available to download from [GitHub](https://github.com/mspnp/serverless-reference-implementation/tree/v0.1.0).
- The article [Show me the code: Serverless application with Azure Functions](index.md) walks you through this code, and explains why various choices were made.


Once you get a feel for how this reference solution works, proceed to learning the best practices and recommendations for developing similar serverless solutions:

- For developing a serverless *event ingestion* solution, refer to the reference-based guidance at [Serverless event processing using Azure Functions](../reference-architectures/serverless/event-processing.md).
- For developing a serverless *web application*, refer to the reference-based guidance at [Serverless web application on Azure](../reference-architectures/serverless/web-app.md).


## Next steps

For in-depth discussion on developing serverless solutions on premises as well as in cloud, read [Serverless apps: Architecture, patterns, and Azure implementation](https://docs.microsoft.com/dotnet/standard/serverless-architecture/).
Expand Down

0 comments on commit 1ba04ea

Please sign in to comment.