What is Microsoft DevOps?
This is an interesting question because first off, most IT Managers don’t envision CI/CD for Microsoft products; the old way works just fine!
And second, Microsoft DevOps is a concept not many Windows Admins have even considered either, until now – because, well, isn’t DevOps a Linux thing?
These mindsets are a BIG problem for CTOs because staying ahead of competitors building online-services using DevOps is going to become harder and harder if your IT Staff are still using old traditional “manual” build and deployment processes.
Let’s look at this from a different angle, for SysAdmins, I’m not suggesting leaving behind your hard-earned Windows CERTS and skills to become a DevOps Engineer working on a Linux stack. Or for managers, disrupting your current IT Operations…
What is Microsoft DevOps? CI/CD on Windows servers, using configuration management and automation to build, deploy and update servers and code.
Doesn’t this sound like what you’ve been yearning to learn how to do but you’re not sure how to start? Hmm…
Sure, there are a few engineers who work for leading consulting companies who are experimenting with CI/CD on a Windows stack, but for the rest of us – Microsoft DevOps is a new concept.
No problemo! Because when we’re done unpacking MSDevOps, I’ll give you The Ultimate Guide for Microsoft DevOps, perfect for beginners…
For this lesson I’ve pasted screenshots of real Microsoft (Windows) DevOps job descriptions from Indeed so we can analyze and build a training profile for a Microsoft DevOps Engineer.
I also thought it would be beneficial to create use cases so we can cross reference skills with work and/or projects.
This lesson will be good for Windows Admins and managers who want to transition to DevOps, someday…
Snover says Nano Server focuses on two scenarios: born-in-the cloud applications, which includes support for multiple programming languages and runtimes, and Microsoft Cloud Platform infrastructure, which includes “support for compute clusters running Hyper-V and storage clusters running Scale-out File Server.” Read more….
Test Use Cases for Microsoft DevOps
Use Case #1 (Simple Website)
Build a Windows Web and Database server on premise in our own data center.
For this use case we need Windows Systems Admin skills that include:
- Install and configure Windows Server, to include clustering.
- Now add-on impeccable IIS App-Pool management skills.
- Then let’s add DBA operational skills for connecting websites to data sources.
- We can’t forget to add skills for scaling capacity for more users.
- And also need networking for NIC teaming, load balancing, VIP creation.
- Finally, we need to throw in middleware such as .Net and any other 3rd party software (too many to list).
Opportunity for DevOps Automation:
Depending on how often your Ops team repeats use case #1, building websites becomes the first opportunity for Microsoft DevOps.
Use Case #2 (Server Provisioning)
Provision servers for vHosts and VMs on premise in our own data center.
The majority of Windows shops are using either VMware vSphere or Hyper-V for hosting virtual servers. And it’s likely the majority are still deploying VMs the manual way via VMM or vCenter, versus using an automation tool.
For this use case we’re adding additional skills to our Windows Administrator role:
- Design and building VMware vSphere or Hyper-V infrastructure, attaching storage, and configuration of networks.
- Deployment of Windows virtual servers, handle day-to-day deployment of VM for web servers, app servers, DB servers etc.
Many times these two roles are combined, whereas, in larger shops they might be separated.
Opportunities for MSDevOps Automation:
First, you can automate the vHost build process for adding more VM capacity.
Second, you can automate the VM deployment process using any number of free or paid software solutions.
Third, maintenance such as Windows patching and vHost upgrades. These tasks are never-ending and should not be overlooked.
And fourth, Database server build and configuration. With DB builds, in my experience, there always seems to be a disconnect between the server admins and DBAs on the way a database server or cluster should be built. Being that our use case is dealing specifically with Microsoft servers, finding common ground and automating the OS and DB configuration and build process is a huge opportunity for Microsoft DevOps.
To learn more about these processes, check out my book VCP for Hire…
At this point, we’ve only covered on premise infrastructure and you can already see all the opportunities where Microsoft DevOps can benefit the speed to market process of service delivery.
Now we’re going to add use cases that leverage Azure for our infrastructure.
Use Case #3 (Simple Website/DB in Azure)
Build a Windows Web and Database server in Azure (100% cloud hosted).
For this use case we need our Windows Systems Admin role to include:
- Azure Account with Admin access.
- Azure Administrator Skills.
Let’s start with a simple business need such as a website, same as above except in the cloud.
Everything being new, the fastest way for an Admin to complete this request is to spin-up a small all-in-one VM server that includes IIS, ASP.NET, and SQL. The alternative would be a separate web server and DB server.
Note: Access to the servers for the admin and developers would all be handled via the Azure account.
There’s obvious more that needs to happen to make this website public but you get the gist of what the Microsoft DevOps role does at a very basic level.
At this point, the server provisioning process is more manual via clicks in Azure’s portal. However, there is plenty of opportunity, even with a small website for CI/CD via PowerShell and SCCM.
Actually this is the perfect time to begin the continuous development because later-on, as most legacy operations have found, working CI/CD into a highly complex application isn’t easy. This is especially true if the Ops and Dev teams aren’t working together.
Opportunity for DevOps Automation:
The automation opportunities here are the build and deployment of the infrastructure via Azure’s API, and then continuous development for the website code. Pick your own DevOps tools for this but for our example imagine using TFS, SCCM and PowerShell.
Also, let’s note this is all IaaS at this point, which means basically instead of building servers in our data center, were building them in Azure. Easy stuff!
Use Case #4 (Complex Website in Azure)
Build a Windows Web and Database that includes AD sync and Data replication in Azure (Hybrid).
Now let’s ramp up the complexity to a common problem many new cloud initiatives run into…
How do you add Active Directory Services and Data to your website built in Azure?
For this use case we’ll include all the skills listed above for our Windows Admin and add:
- Domain Administrator, understands the process of syncing user accounts to the cloud.
- Security Compliance, understands the risk of having data in the cloud.
I don’t intend to solve this problem for you but I know first-hand data and user access from Prem to the cloud is a real problem that needs the right skills to solve.
Note: For many cloud initiatives this is a show stopper because security concerns for user management and data management in the cloud is still highly suspect.
Let’s throw jelly against the wall…
Do you build a static VPN tunnel from premise to the cloud and keep all user access and data on premise, albeit hackers can still hack the website and work their way down to the DB.
Build a read-only AD in the cloud and replicate the data to a read-only DB server on Azure.
What’s the difference, right?
Basically very little however, the perceived difference is that having user and data served up from “Prem” is safer than having it copied to Azure.
Like I said, this is a real concern for large enterprises and unless a C-level leader is willing to mandate building a bridge to the cloud at all costs, then the project stops here.
At this point we have another opportunity for Microsoft DevOps to step up and deliver secure solutions for maintaining user and application data for cloud hosted applications.
Ideally we would want microservices making API calls from the cloud to “Prem” – however, most legacy applications lack well-developed APIs, or in some cases, don’t even offers an API.
But option #3 still is preferred using microservice instead of virtual servers, with a slight change that includes user access and data in the cloud as-well.
At this point the PaaS model with a Dynamic VPN to Prem becomes the way of operating, which BTW for developers, opens up new ways for building web services.
Are you starting to see how the Microsoft DevOps role fits?
We can call these folks “Cloud Engineers” but once the IaaS or PaaS is built, CI/CD kicks in and DevOps automation becomes the day-to-day. Hence, building automation for CI/CD into the stack from day-one is the secret sauce.
Pie in the Sky ideas!
Now I’ll admit – a lot of this is pie-in-the-sky dreaming because very few big or small operations are getting this far because they don’t have a plan, and because they don’t know how to do it. You’ll see what I mean in a minute when we review job descriptions…
I’ve watched my best Sr. Windows Engineers, with decades of experience, throw his hands into the air in total frustration because we couldn’t figure out a solution that accommodated the developer’s needs and the security requirements.
Opportunity for DevOps Automation:
We’re in un-mapped territory and in most cases it will be all experimental. Pick your tools and go at it until something works!
Sorry if I went long, but I wanted you to have a clear frame of reference from the very simple to highly complex.
We reviewed simple IaaS on Prem and in Azure that included deployment of virtual servers for web, apps, and databases.
Then, we increased the complexity and added user and data from on Prem as-well as copies of AD and data to the cloud. All still using the IaaS model.
Finally, we leveled-up the difficulties faced when going fully into the cloud and using PaaS with both on Prem data sources and cloud hosted data resources.
Would you agree that Microsoft DevOps is not the normal way of thinking about these scenarios? Although, because I’ve broken each use case down and showed where our opportunities for automation and CI/CD, we can now see MSDevOps is plausible…
Unpacking Key Skills for Windows DevOps
Rather than throwing out ambiguous software tools to learn, I thought it would be more beneficial to look at the real world. Here are 4 screenshots from Indeed for our examination. Our goal is to glean useful data to build a list of skills and experiences that we can focus our efforts on to improve our value and career opportunities. Hence, give our self more meaning…
BTW, in respect of my IT brethren, I’ve removed links and I’m changing the hiring organizations name to XYZ Company.
#1 Sr Windows DevOps Engineer:
Wow, do you still want to be a Microsoft DevOps Engineer after reading this?
Whoever wrote this job description is looking for someone who does everything I just covered in the use case section above, as-well in my DevOps Skills post.
As a hiring manager myself, I think this job description is extreme. There just aren’t very many people to go around that can meet this level of qualifications.
Listen to the expectation made in the opening paragraph:
The candidate must have a passion for automating everything and a proven track record of designing, developing, and maintaining dependable, mission-critical systems and products.
No wonder I get questions all the time from Windows Systems Engineers who want guidance on DevOps, they’re probably reading job descriptions like this.
Let’s moving further into this description and look at the responsibilities, now.
What I see is this – most of the responsibilities are strategic, which makes me wonder if this hiring manager even has a plan for how he/she intends to use DevOps?
Also what comes to mind is this – how would you measure job performance if you did hire someone for this job?
The responsibilities start off OK but then quickly become excessive, too.
Listen to these 3 expectations:
- Collaborate and help build utilities and tools for internal use that enable you and your fellow engineers to operate safely at high speed and wide scale.
- Resolve problems at their root with simple and repeatable solutions.
- Design automated systems management solutions with self-repair as the goal.
I’m not saying they can’t be done.
This job description has plenty of duties but just seems to be missing clear goals…
Now let’s looks at the Technical Qualification.
Basically this looks like a Sr Systems Engineer with advanced scripting skills and a broad knowledge of virtual technology experience with VMware, Citrix and KVM. Looks like they missed Microsoft Hyper-V, especially if they are a Windows shop.
As we look at the Technical Preferred section I want you to listen closely to the software tools listed here.
My thought is he/she expects whomever they hire to use these tools to accomplish the list of responsibilities listed.
- Configuration management software like Chef, Salt, Puppet, or Ansible.
- CI tools such as Atlassian Bamboo or Jenkins.
- Build Tools such as Ant, Maven, and Gradle.
- Bash, Python, or Ruby.
- API driven infrastructure.
- Microservice architecture.
- AWS, Azure, RackSpace
They wrap up by asking for 4 years of DevOps experience.
Honestly, I am having a very hard time even beginning to understand what this hiring manager is up to with this list of buzzwords.
Which brings to mind my eBook on building a DevOps plan because so many managers are going in 50 different directions.
If you’re a Windows Systems Administrator or Engineer and you’re trying to figure out what you need to do to start learning how DevOps fit into your career, this is a terrible example.
- Extensive Experience scripting using PowerShell to manage and configure systems.
- Experience with API driven infrastructure.
#2 .NET DevOps Engineer:
This hiring manager has done a better job setting a clear expectation of the goal and job role.
It even sound like there is a DevOps plan in place where all departments are involved.
And there’s a clear call to action to help change a culture from the old way of operations to a new way of operations.
The difference I’m seeing in their qualifications versus the other is this hiring manager is leaning towards hiring someone with developer skills, and the other job is leaning more towards a systems engineer. I had an interview with Dice and we actually review these two approaches.
I also think this job description seems more realistic if you want to understand what is expected for someone going from a SysAdmin or Developer role to a Microsoft DevOps role.
Also if you take a close look at the basic and the additional qualifications, there isn’t much difference in what is expected except for a few more DevOps tools are added to the wish list for skills.
When you really stop to look at both of these job descriptions, you have to wonder why there are so many tools used, right?
Let’s be real for a minute because the list of Microsoft DevOps tools is enormous…
I could be wrong but my guess is neither manager has a clear CI/CD process yet and they’re wanting to try anything and everything until they figure it out, hence the long list of buzzwords.
This is good and bad. And here’s why.
Over the years I’ve seen where one Admin on my team used Chef to automate all the way from the server build up to the installation and configuration of the application.
Then came along another Admin who wanted to do the same thing using 2 or 3 different tools only because he didn’t want to use the way the first guys did it.
Write this down!
As your DevOps culture and CI/CD becomes more matured, you want skills more targeted to the way the automation works best versus everyone choosing their own way.
I’m not say not to experiment, but when best wins, it will be easier for Admins to focus their training on niche skills instead of trying to pick which skills to learn from a list of 50 DevOps tools that have the same or similar outcomes.
- Experience with deploying applications to and configuring Internet Information Service (IIS) servers on Windows.
- Experience with installing, configuring, and interacting with SQL Server.
- Experience with one of the following automated configuration management tools: PowerShell DSC
Woohoo! Our list of key DevOps for Windows skills is growing…
#3 DevOps Engineer:
Finally, a DevOps job description that is clear, specific, and to the point.
This manager obviously knows what they are doing and wants people who can follow a plan.
- Experience supporting .Net, C#, MVC web applications, and/or web services.
- Experience supporting a SaaS platform as a Windows professional.
- Experience working in an Agile/Scrum environment.
- Experience with CI/CD processes and methods.
- Experience automating large-scale Windows environments using: SSCM, Batch, or PowerShell
- Experience with: Visual Studio, Team Foundation Server, SQL Server, Puppet, GIT, Jenkins.
- Experience with Azure.
#4 Windows DevOps Engineer:
Once again, this is a short and to the point, clear DevOps job description.
Anyone with the right skills and experience would understand what this manager is doing.
They also obviously know what they’re doing and want people who can follow the plan.
- This is a senior position for work in fast-paced development environment while adhering to strict process requirements.
- Knowledge of Virtual Machine applications, specifically VMware and Virtual Box.
- Strong knowledge in C#, PowerShell, DOS script for support of existing local tooling or creation of new tools.
- Experience in TFS 2013 development environment (Team Foundation Server).
Microsoft DevOps Skills for Windows Admins
In the examples I’ve shown you above we see 3 varying degrees of DevOps going on…
First, we see a very broad and ambiguous job description that expects everything, including probably the creation of the DevOps transformation plan.
Then in the second job description, we see a clear call to action enlisting people to a mission to change a culture. This job description still seems a bit ambiguous and broad, but overall it’s still good enough.
Finally, we see 2 DevOps jobs description for Microsoft Windows Engineers that are both highly focused and targeting specific skills.
In the final step of this lesson I want you to imagine taking each use case I created above and pass them through these job descriptions. Imagine trying to take the list of tools and skills list and build these various use cases.
No doubt you’ll likely end up confused with 50,000 ways to do the work. That’s absolutely OK!
Because you know what?
You’ll begin to see the big picture and understand why DevOps fails so often! In my career I’ve seen DevOps efforts fail at least 4 times…
You need the right DevOps plan and, you need the right skills to execute it!
Our goal today is to enlighten and get you focused on the right skills.
The Ultimate Guide for Microsoft DevOps:
25+ Power-Packed Windows SysAdmin Skills for you to use now for training.
- 1. Able to keep up in fast-paced development environment.
- 2. Able to adhering to strict process requirements.
- 3. Experience with CI/CD processes and methods.
- Experience automating large-scale Windows environments using: 4. SSCM, 5. Batch, or 6. PowerShell
- Experience with: 7. Visual Studio, 8. Team Foundation Server, 9. SQL Server, 10. Puppet, 11. GIT, 12. Jenkins.
- Advanced experience with PowerShell, 13. C#, 14. PowerShell DSC, 15. DOS script
- Experience supporting 16. .Net, 17. C#, 18. MVC web applications, and/or web services.
- Experience deploying applications and configuring 19. IIS servers on Windows.
- Experience with installing, configuring, and interacting with 20. SQL Server.
- Knowledge of Virtual Machine applications, specifically 21. VMware and 22. Virtual Box.
- Experience managing and supporting 23. SaaS platforms.
- Advanced experience with 24. Azure in 25. IaaS and 26. PaaS.
- Experience working in an 27. Agile/28. Scrum environment.
- Experience with 29. API driven infrastructure.
It’s a wrap!
If the list above isn’t enough and you want to get ahead of the current trend. Or if you want to experiment with new technology, I suggest becoming a subject matter expert on 30. Windows Nano, 31. Docker for Windows, 32. PowerShell ISE and 33. Hyper-V.
Tip! I foresee a huge opportunity on the horizon for Microsoft DevOps Engineers with these skills.
I’ll leave you with a cool video about Windows Nano with Jeffrey Snover
As always, Good Luck and thanks for reading…