Blog Archives
Microsoft Azure Training & Workshops to Solution Architects from various Global System Integrators
Last two weeks, I have travelled to Bangalore, India to provide trainings to Architects from various global system integrators on Microsoft Azure technology. During this travel, I have delivered sessions / workshops on the following:
-
Architecting Big Data & Analytics Solutions: The proliferation of customer data and the desire for insights not previously attainable has created a new industry focused on analyzing massive amounts of data. The cost of processing huge amounts of data does not need to be prohibitive when you can take advantage of a scalable cloud platform. We will discuss the Lambda architecture to take advantage of both batch and stream processing of data and will show various Azure services such as Azure Data Lake, Azure Data Factory, Azure Stream Analytics, Azure Machine Learning, and Power BI to provide a solution to unlock insights into data.
-
Architecting Modern Cloud Applications: Modern cloud applications offer end-user experiences and features that transcend traditional on-premises applications. For example, there are often multiple database technologies supporting today’s modern app. Embrace the notion of polyglot persistence and see how RDBMS’s, NoSQL databases, and caches can be combined to deliver robust end-user experiences. Modern cloud apps today are also expected to be reachable regardless of the platform or device. See how Azure’s App Service can be used to expand the reach of your solutions. Modern cloud apps are also not always just platform-as-a-service solutions. Learn about modern architecture patterns enabled by Azure that span infrastructure-as-a-service and platform-as-a-service deployments.
-
Architecting Global Scale Web and Mobile Solutions: One of the main benefits of the Microsoft Azure platform is its massive scale. Microsoft Azure runs on a massive network of over 19 regions worldwide. This global reach makes it possible to create solutions on a global scale that meet your demanding performance requirements. We will discuss architectural patterns that lend themselves to global geo-located solutions and the specific features of Microsoft Azure that enable geo-replicated data.
-
Dev Ops: Enterprise IT organizations are increasingly driven by business demands for faster, better solutions delivered more quickly than ever before. DevOps has emerged as a trend to help organizations evolve to better collaborate between development and operations teams for addressing these solution delivery challenges. While a DevOps transformation can take time to fully realize within an organization’s people and processes, there’s opportunities to accelerate the path towards DevOps by smartly leveraging cloud capabilities that can reduce infrastructure complexity, simplify release management, and support end-to-end application visibility through all stages of a solution’s lifecycle. This session will discuss the features in Microsoft Azure that help to realize this transformation and how the platform enables integration with existing assets.
- Case Study – Internet of Things (IoT)
- Case Study – Refactoring Multi-Tier Solutions
- Case Study – Lift and Shift
- Case Study – Identity and Access Management
- Case Study – Networking
Cleaning up Azure Storage Accounts
I wanted to put some structure around the experiments that I was doing on Microsoft Azure. I noticed that I had lots and lots of storage accounts created in the past. I used to create new virtual machines from UI and shut it down whenever I am done with the required purposes. Whenever it shows me that I ran out of quota on cores or cloud services, I used to delete the virtual machine and cloud services. However, since most of the time, I used the option to create a new storage account as part of virtual machine creation, there were lot of storage accounts left out.
How do I go about finding which ones are still used vs. which ones are not in use. I can go through the portal click through each of the storage accounts, go to containers tab and look if there are files inside containers. But I thought it will be fun to write a PowerShell script that can traverse all storage accounts, containers and list the files and their sizes. If I see a storage account with no files, or storage account with only a ‘vhd’ container with couple of .status files only, then they are good to be delete.
Script Downloads
Getting started with Microsoft Azure PowerShell
I will be writing a series of blogs around Microsoft Azure & Hybrid Cloud. As a quick start, wanted to write up on how to setup our machines with PowerShell to work with Microsoft Azure.
Setup machine with Microsoft Azure PowerShell
- If you haven’t installed Web Platform Installer, you can download and install it from http://www.microsoft.com/web/downloads/platform.aspx
- Download and install ‘Microsoft Azure PowerShell’ from Web Platform Installer. If you do not find that in ‘Spotlight’ you can perform a search for ‘Microsoft Azure PowerShell’
Set your default subscription and storage account
Download Azure Publish Settings file , configure default subscription and configure default storage account. There is a very good blog article from Michael Walsham explaining this step-by-step. I strongly recommend you read through that post. There is one minor change in Azure PowerShell cmdlet usage (based on a cmdlet update from Microsoft), from the post you see in the blog. I have written a PowerShell script with minor updates, which you can download from here.
Script Downloads
https://gist.github.com/Manesh-R/9ba344e08ebf7e6743a9
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Ref: https://manesh.me/2015/02/05/getting-started-with-microsoft-azure-powershell/ | |
# Step 0: Define all variable values | |
$publishSettingsFile = "C:\Users\Manesh\Documents\AzureSubscriptions.publishsettings"; | |
$location = "West US"; | |
$subscriptionName = "Visual Studio Premium with MSDN"; | |
# Sometimes, you might have multiple MSDN subscriptions | |
# If someone else add you as a co-admin on their MSDN subscription etc. | |
# If so, choose the subscription Id option | |
$subscriptionId = $null; | |
# Sometimes, this account is created by someone else. | |
# So if the script fails, you might want to change this. | |
$storageAccountName = "manesh"; | |
# Step 1: Import Azure Publish Settings File | |
Import-AzurePublishSettingsFile $publishSettingsFile | |
# Step 2: Set current subscription | |
Get-AzureSubscription | |
if ($subscriptionId -eq $null) { | |
Select-AzureSubscription -SubscriptionName $subscriptionName -Current | |
} else { | |
Select-AzureSubscription -SubscriptionId $subscriptionId -Current | |
} | |
# Display only current subscription | |
Get-AzureSubscription -Current | |
# Step 3: Set current storage account | |
$isStorageGood = $false; | |
try { | |
Get-AzureStorageAccount –StorageAccountName $storageAccountName -ErrorAction Stop | Out-Null | |
if ((Get-AzureStorageAccount –StorageAccountName $storageAccountName).Location -eq $location) { | |
$isStorageGood = $true; | |
Write-Host "'$storageAccountName' storage account already exists, skipping creation" | |
} else { | |
Write-Host "'$storageAccountName' storage account already exists, but in a different location. Try another storage." | |
} | |
} | |
catch { | |
if (!(Test-AzureName -Storage $storageAccountName)) { | |
Write-Host "Creating Storage Account $storageAccountName" | |
New-AzureStorageAccount -StorageAccountName $storageAccountName -Location $location | |
$isStorageGood = $true; | |
} | |
else { | |
Write-Host "'$storageAccountName' storage account already exists and is owned by some other subscription. Try a different name." | |
} | |
} | |
if ($isStorageGood) { | |
if ($subscriptionId -eq $null) { | |
Set-AzureSubscription -SubscriptionName $subscriptionName -CurrentStorageAccountName $storageAccountName | |
} else { | |
Set-AzureSubscription -SubscriptionId $subscriptionId -CurrentStorageAccountName $storageAccountName | |
} | |
# You should see the provided subscription and storage account name while executing following command | |
Get-AzureSubscription -Current | |
Write-Host "All is well" | |
} else { | |
Write-Host "Try a different storage account name and re-run the script" | |
} |
.