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) {
- Root.left = NULL;
- Root.right = NULL;
- Return true;
- }
No comments:
Post a Comment