Skip to content

Commit

Permalink
Merge pull request #7917 from johndowns/multitenancy-considerations-a…
Browse files Browse the repository at this point in the history
…pproaches-contributors

Multitenancy - Add contributors to remaining articles
  • Loading branch information
Stacyrch140 committed Sep 16, 2022
2 parents 3e8f9db + 9194fa6 commit 31bceda
Show file tree
Hide file tree
Showing 20 changed files with 273 additions and 26 deletions.
17 changes: 17 additions & 0 deletions docs/antipatterns/noisy-neighbor/noisy-neighbor-content.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,23 @@ From a service's perspective, the noisy neighbor issue may appear in several way
- Spikes in resource usage. It's important to have a clear understanding of your normal baseline resource usage, and to configure monitoring and alerts to detect spikes in resource usage. Ensure you consider all of the resources that could affect your service's performance or availability. These resources include metrics like server CPU and memory usage, disk IO, database usage, network traffic, and metrics that are exposed by managed services, such as the number of requests and the synthetic and abstract performance metrics, such as the Azure Cosmos DB request units.
- Failures when performing an operation for a tenant, even when that tenant isn't using a large portion of the system's resources. Such a pattern may indicate that the tenant is a victim of the noisy neighbor problem. Consider tracking the resource consumption by tenant. For example, when using Azure Cosmos DB, consider logging the request units used for each request, and add the tenant's identifier as a dimension to the telemetry, so that you can aggregate the request unit consumption for each tenant.

## Contributors

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

Principal author:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

Other contributors:

* [Chad Kittel](https://www.linkedin.com/in/chadkittel) | Principal Software Engineer
* [Paolo Salvatori](http://linkedin.com/in/paolo-salvatori) | Principal Customer Engineer, FastTrack for Azure * TODO Paolo
* [Daniel Scott-Raynsford](http://linkedin.com/in/dscottraynsford) | Partner Technology Strategist
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Related resources

* [Architectural considerations for a multitenant solution](../../guide/multitenant/considerations/overview.yml)
Expand Down
2 changes: 1 addition & 1 deletion docs/guide/multitenant/approaches/ai-ml.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ You can consider using these platforms for AI/ML, when you need to scale your ML

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

Principal authors:
Principal author:

* [Kevin Ashley](http://linkedin.com/in/kashlik) | Senior Customer Engineer, FastTrack for Azure

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,21 @@ Reservation scopes can also be helpful, when you have tenants with unpredictable
- **Real-time measurement.** Most solutions don't need up-to-the-minute cost measurements. Because metering and consumption data can be complex to process, you should log the necessary data and then asynchronously aggregate and process the data later.
- **Using monitoring tools for billing.** As described in [Instrument your application](#instrument-your-application), ensure you use tools that are designed for cost monitoring and metering. Application monitoring solutions are typically not good candidates for this type of data, especially when you need high precision.

## Contributors

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

Principal author:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

Other contributors:

* [Sherri Babylon](https://www.linkedin.com/in/sbabylon) | Senior Customer Engineer, FastTrack for Azure
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

- [Measure the consumption of each tenant](../considerations/measure-consumption.md)
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,21 @@ After the database is deployed, the workflow adds the tenant to the tenant list

Ongoing database schema updates are initiated by their application tier.

## Contributors

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

Principal author:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

Other contributors:

* [Bohdan Cherchyk](http://linkedin.com/in/cherchyk) | Senior Customer Engineer, FastTrack for Azure
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

- Review the [considerations for updating a multitenant solution](../considerations/updates.md).
Expand Down
16 changes: 16 additions & 0 deletions docs/guide/multitenant/approaches/governance-compliance.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,22 @@ Similarly, a new tenant might introduce strict compliance requirements that you
- **Not planning your access control effectively.** Azure RBAC provides a high degree of control and flexibility in how you manage access to your resources. Ensure you use Azure AD groups to avoid assigning permissions to individual users. Assign roles at scopes that provide an appropriate balance between security and flexibility. Use built-in role definitions wherever possible, and assign roles that provide the minimum permissions required.
- **Not using Azure Policy.** It's important to use Azure Policy to govern your Azure environment. After you plan and deploy policies, ensure you monitor the policy compliance and carefully review any violations or exceptions.

## Contributors

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

Principal author:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

Other contributors:

* [Bohdan Cherchyk](http://linkedin.com/in/cherchyk) | Senior Customer Engineer, FastTrack for Azure
* [Laura Nicolas](https://www.linkedin.com/in/lauranicolasd) | Senior Customer Engineer, FastTrack for Azure
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

Review [approaches for cost management and allocation](cost-management-allocation.yml).
2 changes: 1 addition & 1 deletion docs/guide/multitenant/approaches/messaging.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ The [Geode pattern](../../../patterns/geodes.yml) involves deploying a collectio

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

Principal authors:
Principal author:

* [Paolo Salvatori](http://linkedin.com/in/paolo-salvatori) | Principal Customer Engineer, FastTrack for Azure

Expand Down
15 changes: 15 additions & 0 deletions docs/guide/multitenant/approaches/networking.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,21 @@ However, `Host` header rewrites can cause problems for some backend services. If

Ensure you test your application's behavior with the gateway configuration that you plan to use.

## Contributors

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

Principal author:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

Other contributors:

* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure
* [Joshua Waddell](https://www.linkedin.com/in/joshua-waddell) | Senior Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

Review [considerations when using domain names in a multitenant solution](../considerations/domain-names.yml).
18 changes: 18 additions & 0 deletions docs/guide/multitenant/approaches/resource-organization-content.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,24 @@ Resource tags enable you to add custom metadata to your Azure resources, which c
- **Using separate Azure AD tenants.** In general, it's inadvisable to provision multiple Azure AD tenants. Managing resources across Azure AD tenants is complex. It's simpler to scale across subscriptions linked to a single Azure AD tenant.
- **Overarchitecting when you don't need to scale.** In some solutions, you know with certainty that you'll never grow beyond a certain level of scale. In these scenarios, there's no need to build complex scaling logic. However, if your organization plans to grow, then you will need to be prepared to scale—potentially at short notice.

## Contributors

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

Principal author:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

Other contributors:

* [Jason Beck](https://www.linkedin.com/in/jason-beck-75902061) | Senior Customer Engineer, FastTrack for Azure
* [Bohdan Cherchyk](http://linkedin.com/in/cherchyk) | Senior Customer Engineer, FastTrack for Azure
* [Laura Nicolas](https://www.linkedin.com/in/lauranicolasd) | Senior Customer Engineer, FastTrack for Azure
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure
* [Joshua Waddell](https://www.linkedin.com/in/joshua-waddell) | Senior Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

Review [Cost management and allocation](cost-management-allocation.yml) approaches.
16 changes: 16 additions & 0 deletions docs/guide/multitenant/approaches/storage-data-content.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,22 @@ Consider how you'll [measure consumption and allocate costs to tenants](../consi

In general, cloud-native services, like Azure Cosmos DB and Azure Blob Storage, provide more granular metrics to track and model the usage for a specific tenant. For example, Azure Cosmos DB provides the consumed throughput for every request and response.

## Contributors

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

Principal author:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

Other contributors:

* [Paul Burpo](http://linkedin.com/in/paul-burpo) | Principal Customer Engineer, FastTrack for Azure
* [Daniel Scott-Raynsford](http://linkedin.com/in/dscottraynsford) | Partner Technology Strategist
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

For more information about multitenancy and specific Azure services, see:
Expand Down
15 changes: 15 additions & 0 deletions docs/guide/multitenant/checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,21 @@ When you build your multitenant solution in Azure, there are many elements that
* Determine how you'll scale your [compute](./approaches/compute.md), [storage](./approaches/storage-data.yml), [networking](./approaches/networking.md), and other Azure resources to match the demands of your tenants.
* Consider each Azure resource's scale limits. [Organize your resources](./approaches/resource-organization.yml) appropriately, in order to avoid [resource organization antipatterns](./approaches/resource-organization.yml#antipatterns-to-avoid). For example, don't over-architect your solution to work within unrealistic scale requirements.

## Contributors

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

Principal authors:

* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure
* [Bohdan Cherchyk](http://linkedin.com/in/cherchyk) | Senior Customer Engineer, FastTrack for Azure

Other contributor:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

* Review [architectural considerations for multitenant solutions](./considerations/overview.yml).
Expand Down
15 changes: 15 additions & 0 deletions docs/guide/multitenant/considerations/domain-names-content.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,21 @@ If you plan to allow customers to bring their own domains, consider whether you

Several Azure services support automatic management of certificates for custom domains. For example, Azure Front Door and App Service provide certificates for custom domains, and they automatically handle the renewal process. This removes the burden of managing certificates, from your operations team. However, you still need to consider the question of ownership and authority, such as whether CAA records are in effect and configured correctly. Also, you need to ensure your customers' domains are configured to allow the certificates that are managed by the platform.

## Contributors

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

Principal author:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

Other contributors:

* [Daniel Scott-Raynsford](http://linkedin.com/in/dscottraynsford) | Partner Technology Strategist
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

Return to the [architectural considerations overview](overview.yml). Or, review the [Microsoft Azure Well-Architected Framework](/azure/architecture/framework).
16 changes: 16 additions & 0 deletions docs/guide/multitenant/considerations/map-requests-content.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,22 @@ Tenants often need to be moved to new infrastructure as part of the [tenant life
- If your application uses domain names for mapping requests, then it might also require a DNS change at the time of the migration. The DNS change might take time to propagate to clients, depending on the time-to-live of the DNS entries in your DNS service.
- If your migration changes the addresses of any endpoints during the migration process, then consider temporarily redirecting requests for the tenant to a maintenance page that automatically refreshes.

## Contributors

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

Principal author:

* [Daniel Scott-Raynsford](http://linkedin.com/in/dscottraynsford) | Partner Technology Strategist

Other contributors:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure
* [Paolo Salvatori](http://linkedin.com/in/paolo-salvatori) | Principal Customer Engineer, FastTrack for Azure
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

Learn about [considerations when you work with domain names in a multitenant application](domain-names.yml).
16 changes: 16 additions & 0 deletions docs/guide/multitenant/considerations/measure-consumption.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,22 @@ However, this becomes prohibitively complex in most modern multitenant solutions

Some Azure services provide features that allow other methods of attribution of costs in a multitenant environment. For example, Azure Kubernetes Service supports [multiple node pools](/azure/aks/use-multiple-node-pools), where each tenant is allocated a node pool with [node pool tags](/azure/aks/use-multiple-node-pools#setting-nodepool-azure-tags), which are used to attribute costs.

## Contributors

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

Principal author:

* [Daniel Scott-Raynsford](http://linkedin.com/in/dscottraynsford) | Partner Technology Strategist

Other contributors:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure
* [Chad Kittel](https://www.linkedin.com/in/chadkittel) | Principal Software Engineer
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

Consider the [update deployment model you will use](updates.md).
18 changes: 18 additions & 0 deletions docs/guide/multitenant/considerations/pricing-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,24 @@ When changing pricing models, you will need to consider the following factors:
- Are you monitoring the performance and utilization of your services, for new or changed pricing models, so that you can ensure continued profitability?
- Are you able to clearly communicate the ROV for new pricing models, to your existing tenants?

## Contributors

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

Principal author:

* [Daniel Scott-Raynsford](http://linkedin.com/in/dscottraynsford) | Partner Technology Strategist

Other contributors:

* [Bohdan Cherchyk](http://linkedin.com/in/cherchyk) | Senior Customer Engineer, FastTrack for Azure
* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure
* [Chad Kittel](https://www.linkedin.com/in/chadkittel) | Principal Software Engineer
* [Paolo Salvatori](http://linkedin.com/in/paolo-salvatori) | Principal Customer Engineer, FastTrack for Azure
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

Consider how you'll [measure consumption](measure-consumption.md) by tenants in your solution.
18 changes: 17 additions & 1 deletion docs/guide/multitenant/considerations/tenancy-models-content.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Sometimes, you'll see deployments referred to as _supertenants_ or _stamps_.

When you receive a request for a specific tenant, you need to map it to the deployment that holds that tenant's data, as illustrated below:

![Diagram showing the mapping between tenants and deployments. A tenant mapping layer refers to a table that stores the relationship between tenants and deployments.](media/tenancy-models/map-logical-physical.png) <!-- TODO update diagram -->
![Diagram showing the mapping between tenants and deployments. A tenant mapping layer refers to a table that stores the relationship between tenants and deployments.](media/tenancy-models/map-logical-physical.png)

## Tenant isolation

Expand Down Expand Up @@ -135,6 +135,22 @@ You can also consider horizontally partitioning your deployments. This means you

Whichever isolation model you select, ensure you test your solution to verify that one tenant's data isn't accidentally leaked to another and that any [noisy neighbor](../../../antipatterns/noisy-neighbor/noisy-neighbor.yml) effects are acceptable. Consider using [Azure Chaos Studio](/azure/chaos-studio/chaos-studio-overview) to deliberately introduce faults that simulate real-world outages and verify the resiliency of your solution even when components are malfunctioning.

## Contributors

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

Principal author:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

Other contributors:

* [Chad Kittel](https://www.linkedin.com/in/chadkittel) | Principal Software Engineer
* [Paolo Salvatori](http://linkedin.com/in/paolo-salvatori) | Principal Customer Engineer, FastTrack for Azure
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

Consider the [lifecycle of your tenants](tenant-lifecycle.md).
16 changes: 16 additions & 0 deletions docs/guide/multitenant/considerations/tenant-lifecycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,22 @@ There are situations where a customer's account might need to be deactivated or

Deactivation is separate to offboarding in that it's intended to be a temporary state. However, after a period of time, you might choose to offboard a deactivated tenant.

## Contributors

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

Principal author:

* [John Downs](http://linkedin.com/in/john-downs) | Principal Customer Engineer, FastTrack for Azure

Other contributors:

* [Chad Kittel](https://www.linkedin.com/in/chadkittel) | Principal Software Engineer
* [Paolo Salvatori](http://linkedin.com/in/paolo-salvatori) | Principal Customer Engineer, FastTrack for Azure
* [Arsen Vladimirskiy](http://linkedin.com/in/arsenv) | Principal Customer Engineer, FastTrack for Azure

*To see non-public LinkedIn profiles, sign in to LinkedIn.*

## Next steps

Consider the [pricing models](pricing-models.md) you will use for your solution.
Loading

0 comments on commit 31bceda

Please sign in to comment.