Tuesday, February 7, 2017

The following is a detailed study of Microsoft Azure stack as inferred from an introduction of Azure by Microsoft 
Introduction: Organizations are increasingly leaning on public cloud or at least hybrid cloud to meet the demands on their IT. This writeup tries to cover nearly eighty topics of interest in the Azure Stack. 
Azure stack is a hybrid approach to cloud. On one hand, we have the Microsoft Azure public cloud and on the other hand, we have Microsoft Azure Stack either hosted or in private cloud. The Azure stack is therefore a One Azure ecosystem. It facilitates unified app development and the Azure services are in our datacenter. 
Both the Azure and Azure stack are tiered implementations of a cloud or pseudo cloud infrastructure at the bottom, an IaaS or PaaS layer next, followed by Azure Resource manager and Dev-ops tools on top. Microsoft Azure has developer tools for all platform services targeting web and mobile, Internet of Things, Microservices, and Data + analytics, Identity management, Media streaming, High Performance Compute and Cognitive services. These platform services all utilize core infrastructure of compute, networking, storage and security. 
The Azure resource manager has multiple resources, role based access control, custom tagging and self-service templates. 
Azure templates are like formula, We can use it for dedicated purposes.  For example, we can have a quick start template for Linux Virtual machine. There is a growing community of 350 unique templates, 300 unique contributors and over 4500 visitors each day. 
The compute services are made more agile with the offerings from a VM infrastructure, VM scale sets infrastructure, Container service orchestration and batch/Job orchestration. 
VM Scale sets are those that can auto-scale and have auto configuration at scale such as the ones using Chef and puppet.  
A variety of alphabet VM sizes are available.  Each VM has a resource usage in terms of a NIC card and a storage that is specific to that VM.   
VMs are available in sets as Racks with a power unit, network switch and a server.  These therefore determine fault domains.An availability set may be a group of control nodes or a group of databases. 
Compute requirement of a modern cloud app typically involve load balanced compute nodes that operate together with control nodes and databases. 
VM Scale sets provide scale, customization, availability, low cost and elasticity. 
VM scale sets in Azure resource manager generally have a type and a capacity. App deployment allow VM extension updates just like OS updates. 
Container infrastructure layering allows even more scale because it virtualizes the operating system. While traditional virtual machines enable hardware virtualization and hyper V’s allow isolation plus performance, containers are cheap and barely anything more than just applications. 
Azure container service serves both linux and windows container services. It has standard docker tooling and API support with streamlined provisioning of DCOS and Docker swarm. 
Azure is an open cloud because it supports open source infrastructure tools  such as  Linux, ubuntu, docker, etc. layered with databases and middleware such as hadoopredismysql etc., app framework and tools such as nodejs, java, python etc., applications such as Joomla, drupal etc and management applications such as chef, puppet, etc. and finally with devops tools such as jenkinsGradleXamarin etc. 
Job based computations use larger sets of resources such as with compute pools that involve automatic scaling and regional coverage with automatic recovery of failed tasks and input/output handling. 
Azure involves a lot of fine grained loosely coupled micro services using HTTP listener, Page content, authentication, usage analytic, order management, reporting, product inventory and customer databases. 
Microservices can be stateful or stateless and can be deployed in a multi-cloud manner.  
#codingexercise
Remove BST keys inside a given range

Node PruneBSTRange(Node root, int min, int max)
{
if (root == null) return null;
root.left = PruneBSTRange(root.left, min, max);
root.right = PruneBSTRange(root.right, min, max);
if (root.data > min)
{
var right = root.right;
delete root;
return right;
}
if (root.data < max)
{
var left = root.left;
delete root;
return left;
}

return root;
}
The comparision operator can also help with the sentinels.

No comments:

Post a Comment