Everything should start with a SOLID plan, not just influenced by the enthusiasm of a successful PoC, briefly tested and blessed/approved by the management where the implementation challenges are hidden in plain sight!
I wanted to write this article since I’ve started scriptinglibrary.com, but I will try to keep this article to a technical level where you can enjoy the first experience and avoid bad ones. Otherwise, you’ll find yourself overwhelmed or lost into the number of services and the possibilities offered by cloud computing.
Moving to the cloud successfully needs understanding the business requirements and translate the business needs into a meaningful design that could be effectively be managed and with the goal of delivering the desired outcome and value for all the stakeholders.
This is not marketing, it’s not my thing and this is not a sponsored article either… please bear with me and continue to read this article.
First impression matters
In my opinion, iteratively trying with attempts with no clear target or outcome in mind is a waste of resources and energy. The right place to start is read as much as you can, and ask for support to professional consultants to check, once again, if we have a solid plan that will not just last for a long time, but also, more importantly, could scale according to the business needs.
In this article, I will take Azure as an example, but the method and ideas are applicable to any other cloud provider.
You need a good updated training material and hands-on experience!
Start with the free resource available, the content is updated frequently and the free/trial subscription will be a good place to start:
- https://docs.microsoft.com/en-us/learn/
- https://www.microsoft.com/en-au/azurelearningpathways/
Dealing with constant change
What Cloud Computing brings to the table is more options and challenges than you can think while you’re starting. And the technical challenges are not the most difficult to conquer, in my opinion, it’s the culture shift for governance, operations, and the whole company and managing this smoothly and is a substantial change, especially because of the hybrid cloud adoption (the most common one) it means that the on-premises services need to be integrated with the cloud services.
There are some interesting reading that I strongly suggest and that I use and suggest to every colleague to follow, for example:
- Decision Guides: https://docs.microsoft.com/en-us/azure/architecture/cloud-adoption/decision-guides/
- Naming Conventions: https://docs.microsoft.com/en-us/azure/architecture/best-practices/naming-conventions
- Subscription Governance https://docs.microsoft.com/en-us/azure/architecture/cloud-adoption/appendix/azure-scaffold
There is no secret sauce and there are no secret recipes
Cloud Computing is exactly the opposite of a one-size-fits-all blueprint or scenario, but knowing what you don’t need is important as much as what you require. Knowing what you don’t know is equally important of knowing what you know.
Understanding your needs and requirements is the foundation for choosing a possible design, one possible adoption will have features and options that soon you realise that what you don’t need as well, so consider it as an anti-pattern to support it and consider it to turn off straight away.
Deploy the right tools and share the user experience
Nearly everything runs in the browser today, the UI is updated frequently and responsive, mobile applications are available as well, is it enough? My answer, in general, is NO!
I always trust the CLI over the GUI. When I started using a personal computer as a teenager, before the internet, the command line interface was the default choice and later on came a primitive GUI. With this imprinting, I found more effective CLI tools compared to Graphical User Interfaces, but we need to face the reality that there is a steep learning curve to get many users onboard and for that reason, it can’t be our only options.
Azure CLI and PowerShell
Overlapping of tools functionality can help cloud computing adoption if they are not competing on the same platform, but working together they can reach different users and speak to a larger audience.
My personal preference on MacOS (or WSL) using Azure CLI and Powershell For Windows.
Deploying Azure CLI
Downloading AZURE CLI https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest and installing it on your fleet of workstation it’s an operation that can be completed in minutes regardless of the size of the organisation and the tools and experiences that you have.
These are some possible choices:
- Installing Azure CLI on all workstation deploying with SCCM using the msi installer ( I can create tutorial if requested).
- Using Chocolatey (read this article if is something new to you):
1 |
choco install azure-cli |
- Using Brew (MacOS)
1 |
brew update && brew install azure-cli |
Once Installed you can start with the Login command:
1 |
az login |
And explore what you have on your subscriptions.
There are plenty of resources to get you started: https://docs.microsoft.com/en-us/cli/azure/get-started-with-azure-cli?view=azure-cli-latest
Azure Cloud Shell
The cloud shell is very flexible offering the Bash or PowerShell experience in a browser-base cli. https://docs.microsoft.com/en-us/azure/cloud-shell/overview?view=azure-cli-latest
- Run it in your browser: https://shell.azure.com/
Az Powershell Module
Microsoft Azure PowerShell – Cmdlets to manage resources in Azure. This module is compatible with WindowsPowerShell and PowerShell Core.
Installing the Az PowerShell module:
1 2 |
#requires -runasadministrator Install-Module -Name Az -Repository PSGallery -Force |
Connect with your Azure account:
1 2 3 4 5 |
PS C:\WINDOWS\system32> Connect-AzAccount Account SubscriptionName TenantId Environment ------- ---------------- -------- ----------- Paolo.Frigo@ScriptingLibrary.com Visual Studio Enterprise – MPN xxxxx-xxx-xxx-xxx-xxxxxx AzureCloud |
Get the available VMs:
1 2 3 4 5 |
PS C:\WINDOWS\system32> get-azvm ResourceGroupName Name Location VmSize OsType NIC ProvisioningState Zone ----------------- ---- -------- ------ ------ --- ----------------- ---- MYAZURELAB myCentos7Lab centralus Standard_B1s Linux mycentos7lab544 Succeeded |
E.G. Start all VMs (but you can filter by resource group or name):
1 2 3 4 5 6 7 8 |
PS C:\WINDOWS\system32> get-azvm | Start-AzVM OperationId : 223gdada-23r-430b-aba8-4232gfbxcv Status : Succeeded StartTime : 19/06/2019 8:12:45 PM EndTime : 19/06/2019 8:13:16 PM Error : |
Leverage Visual Studio Code
Visual Studio Code is a very popular editor mostly for the number of extensions that are available. If your users are programmers of some shape of form such Devs, Ops or DevOps folks, is more likely that they are already familiar with an editor that supports source control management and debugging (also remotely) already.
I can guarantee that the will be more than happy to drive everything they need without even leaving their editor: https://code.visualstudio.com/docs/azure/extensions