Friday, July 22, 2022

 

This is a continuation of series of articles on hosting solutions and services on Azure public cloud with the most recent discussion on Multitenancy here and picks up the discussion on the checklist for architecting and building multitenant solutions. Administrators will find that this list is familiar to them.  

The previous article introduced the checklist as structured around business and technical considerations

The checklist is categorized based on reliability, security, cost optimization, operational excellence and performance considerations.

The reliability considerations include reviewing the Azure well-architected reliability checklist and this is applicable to all workloads. There must be some safeguards against the noisy neighbor antipattern which is specific to some workloads. Service level objectives and even service level agreements could be defined. These would be based on the requirements of the tenants as well as the composite SLAs of the Azure resources. Reliability is easily impacted by scale and service level agreements can suffer from performance. Testing that the application performs well under load is an important consideration. Finally, Chaos engineering applications can be applied to test the reliability of the solution.

The cost optimization considerations involve Azure well-architected cost optimization checklist and applies to all workloads. Per-tenant consumption must be adequately measured and combined with the infrastructure costs. Antipatterns must be avoided such as failing to track costs or doing it more than necessary.

Security checklist applies as early as design time. There must be tenant isolation in a multi-tenant application but putting the right enforcements and hardening are required to always realize it. In addition, there must be some testing that the tenants are isolated. There must be no cross-tenant access or data leakage and sometimes this involves static and runtime code analysis. These tools can safeguard the security considerations throughout the development.

The operational excellence considerations involve the Azure well-architected performance and efficiency checklist which is also applicable to all workloads. Shared infrastructure must mitigate noisy neighbor concerns. One tenant can reduce the performance of the system for other tenants from a variety of consumptions. Similarly, each Azure resource may impose its own limits to scalability. Solutions do not need to be over-architected or designed for requirements that do not exist.

Some resources also need to be secured differently from others. Domain names must be correctly managed and the allowlisting of resources must be carefully done. Vulnerabilities like dangling DNS and subdomain takeover attacks must be carefully planned.

Cost optimization considerations are all dependent on measurement and correlation. There must be sufficient monitoring of resources and their usages that the costs can be calculated. The billing might be different based on subscriptions and tiers but cost management must be accurate for what is assessed.

Performance efficiency is required not just for the tenants but also for the infrastructure. There must be adequate capacity planning and the fluctuations in supply and demand must be met aggressively with scaling.

#codingexercise

Decimal GetOddNumberRangeMean(Decimal [] A)
{
if (A == null) return 0;
Return A.OddNumberRangeMean ();
}

  • Tree: Prune paths from root that don’t add up to a given sum = 12
  •  bool Prune(Node root, int sum, int cur)
  •  {
  •   If (root == NULL) return false;
  •  If (root.data + cur > sum) { return false;}
  •  If  (root.data + cur == sum) {

3 / 9
  •        Root.left = NULL;
  •         Root.right = NULL;
  •        Return true;
  •  }


No comments:

Post a Comment